# GWT -  Textdatei uploaden, einlesen und verarbeiten



## NC10 (20. Feb 2012)

Hallo,

ich bin leider noch eher Anfänger in Java und GWT.

Folgendes Vorhaben hätte ich, bin mir aber nicht sicher ob man das so umsetzen kann:

Ich möchte:
- eine kleine graphische Oberfläche innerhalb des Browses programmieren. 
  Die GUI soll eine FileUpload Schaltfläche anbieten und einen Submit Button. Das ist ja mit
  GWT recht einfach umzusetzen.

- mit dem FileUpload möchte ich ledeglich Textdateien ( normalerweise utf8codiert) uploaden und dann server-
  seitig(?) verarbeiten 

- das hochgeladene Textfile soll mit einfachen UNIX-Tools wie z.B wc oder sort verarbeitet
  werden.

- die gwt oberfläche soll das Ergebnis anzeigen/ausgeben.

Frage: Gehe ich richtg in der Annahme, dass ich mein File an den Server "senden" muss und die Verarbeitung serverseitig geschieht? Bzw, ist es überhaupt möglich dass ich mein Textfile an den Server sende und die system("unix-tool") Methoden in Java serverseitig ausführe und anschließend das Ergebnis wieder clientmäßig ausgebe?

Danke!


----------



## NC10 (21. Feb 2012)

....
bzw. wäre es auch möglich das hochgeladene Textfile servermäßig mit Hilfe eines Perlskriptes zu verarbeiten und dann wieder auszugeben?


----------



## 23erdfs45fwer43 (21. Feb 2012)

Stellt sich nur die Frage, 

a) was hat das mit SWING, AWT, SWT zu tun

b) warum werden wc oder sort oder andere externe Programme benötigt um eine Textdatei zu bearbeiten? Was kann Java daran nicht?

c) wie du einen Request des Webservers an ein PERLScript gibst. Was kann JAVA an dieser Textdatei nicht bearbeiten, was PERL kann?


----------



## NC10 (22. Feb 2012)

Hallo,

sorry ich bin noch ein Anfänger in diesem Bereich.
(Fragen zu GWT passen meiner Meinung nach am Besten zu SWING, AWT, ... )

Mittlerweile kann ich meine Frage vielleicht etwas präzisieren. 

Es geht mir darum eine graphische Oberfläche (mit GWT) zu programmieren, die ein FileUpload anbietet. Soweit müsste ich es hinbekommen. Das ganze geschieht clientseitig. 

Serverseitig sollte die hochgeladene Datei verarbeitet werden ( wie auch immer). Und genau das ist meine Frage. Ich möchte die hochgeladene Datei nicht auf dem Server speichern, sondern sie dort verarbeiten und dann dem Benutzer wieder ausgeben. 
Wie könnte ich das bewerkstelligen? Brauche ich dazu irgendwelche Bibliotheken? z.B jakarta.apache? 

Ich habe leider noch nicht viel Erfahrung in diesem Bereich und entschuldige mich deshalb für meine etwas wirren Fragen ...


----------



## NC10 (27. Feb 2012)

Hallo, 

ich habe eine neue Frage zu GWT, ich schreibe einfach mal hier weiter damit ich keinen neuen Thread öffnen muss. 

Ich möchte ein TabPanel haben, das habe ich jetzt mal beispielhaft (clientseitig) so gemacht: 


```
package tabs.client;

import tabs.client.GreetingService;
import tabs.client.GreetingServiceAsync;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;


public class Tabs implements EntryPoint {

	public void onModuleLoad() {
		
		//Widget erstes Tab
		FileUpload upload = new FileUpload();
		
		//Widget zweites Tab
		Button button1 = new Button("Click me");
		button1.setPixelSize(80, 50);
		button1.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				Window.alert("Hello, again");
			}
		});
		
		//Widget drittes Tab
				
		TabPanel tabPanel = new TabPanel(); 
		//tabPanel.add(new HTML("uploaden von Dateien"), "upload");
		tabPanel.add(upload, "upload");
		tabPanel.add(button1, "button");
		tabPanel.add(new CompositeExample(), "test");
		tabPanel.add(new HTML("gleiche weg und zählen"), "test2");
		tabPanel.add(new HTML("numerisch sortieren, aufsteigend oder absteigend"), "test");
		tabPanel.add(new HTML("Ausgabe"), "output");
		 
		tabPanel.setWidth("500px");
		//tabPanel.setHeight("500px");
		tabPanel.selectTab(0);
		//tabPanel.setAnimationEnabled(true);
		RootPanel.get("content").add(tabPanel);
	}
}
```
Das funktioniert auch soweit, bis auf diese Zeile: 

```
tabPanel.add(new CompositeExample(), "test");
```
, wo ich versucht habe ein zusammengesetztes Widget zu schreiben, das aus einem FileUpload und HTML Text auf einem VerticalPanel besteht. Leider funktioniert das noch nicht ganz und ich kann meinen Fehler nicht finden.


```
package tabs.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class CompositeExample implements EntryPoint {
	/*A composite of FileUpload und Text*/
	private static class MyWidget extends Composite {
		//meine einfachen Widgets
		private FileUpload upload = new FileUpload();
	    private HTML text = new HTML();
	    
	    //Konstruktor
	    public MyWidget() {
	    	VerticalPanel panel = new VerticalPanel();
	        panel.add(upload);
	        panel.add(text);
	        text.setHTML("Bitte eine .txt Datei hochladen");
	        initWidget(panel);
	    }
	}
	
	public void onModuleLoad() {
		MyWidget myw = new MyWidget();
	    RootPanel.get().add(myw);
	}
}
```

Vielen Dank für Hilfe!


----------



## maki (27. Feb 2012)

*verschoben*


----------

