So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten. Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an It-Responder.
It-Responder
It-Responder, Programmierer
Kategorie: Programmierung
Zufriedene Kunden: 36
Erfahrung:  VBA, .NET, C#, VBA.NET, SQL, ASP, HTML, CSS JavaScript
71888217
Geben Sie Ihre Frage in der Kategorie Programmierung hier ein
It-Responder ist jetzt online.

Hallo, wie kann ich Dateien aus meiner Web- Applikation auf

Diese Antwort wurde bewertet:

Hallo, wie kann ich Dateien aus meiner Web- Applikation auf dem TomCat Server speichern und wieder lesen?
Vielen Dank XXXXX XXXXX Jurij

It-Responder :

Guten Abend

It-Responder :

Mit welcher Sprache? PHP? CGI?

It-Responder und weitere Experten für Programmierung sind bereit, Ihnen zu helfen.
Unser Chat ist beendet, Sie können jedoch weiterhin nachfragen, bis Sie mit meiner Antwort zufrieden sind. Kommen Sie einfach zurück auf diese Seite, um die Konversation und neue Informationen hierzu anzusehen.

Was passiert nun?

Wenn Sie meine Antwort noch nicht bewertet haben, können Sie dies nun oben durchführen. Oder Sie können mir unten antworten, wenn Sie noch nicht zufrieden sind.

Einfacher Uploader

 

public class SimpleUploader1 implements Upload.SucceededListener,Upload.FailedListener, Upload.FinishedListener {
private static final long serialVersionUID = -6465660154299202381L;
private UploadReceiver receiver;
private Upload upload;
private VerticalLayout layout;

public SimpleUploader1() {
layout = new VerticalLayout();
layout.setWidth("100%");

receiver = new UploadReceiver();

upload = new Upload("Upload a file", receiver);
// Listen for events regarding the success of upload.
upload.addListener((Upload.SucceededListener) this);
upload.addListener((Upload.FailedListener) this);
upload.addListener((Upload.FinishedListener) this);

layout.addComponent(upload);
}

public VerticalLayout create() {
return layout;
}

public void uploadFailed(FailedEvent event) {
layout.getApplication().getMainWindow().showNotification("Error!", "The upload has failed!", Notification.TYPE_ERROR_MESSAGE);
}

public void uploadSucceeded(SucceededEvent event) {
layout.getApplication().getMainWindow().showNotification("Success!", "The file was successfully uploaded! Size: "+receiver.getUploadedFile().size(), Notification.TYPE_HUMANIZED_MESSAGE);
}

public void uploadFinished(FinishedEvent event) {
System.out.println("Filename: "+receiver.getFileName());
System.out.println("Filetyp: "+receiver.getMimeType());
System.out.println("Size: "+receiver.getUploadedFile().size());
}
}

UploadReceiver

Diese Klasse implementiert das serverseitige Handling der Datei. Im Prinzip "nimmt" die Klasse die Datei vom Browser in Empfang und ladet sie auf den Server. In diesem Fall wir die Datei in ein ByteArrayOutputStream geschrieben und kann weiter verarbeitet werden.

public class UploadReceiver implements Receiver {

private static final long serialVersionUID = -3688499851447366218L;
private String fileName;
private String mtype;
private ByteArrayOutputStream uploadedFile = null;

/**
* Callback method to begin receiving the upload.
*/
public OutputStream receiveUpload(String filename, String MIMEType) {
this.fileName = filename;
this.mtype = MIMEType;

uploadedFile = new ByteArrayOutputStream();
return uploadedFile;
}

/**
* Returns the filename
* @return
*/
public String getFileName() {
return fileName;
}

/**
* Returns the filetyp
* @return
*/
public String getMimeType() {
return mtype;
}

/**
* Returns the uploaded file as a byteArrayOutputStream
* @return
*/
public ByteArrayOutputStream getUploadedFile() {
return uploadedFile;
}
}
Kunde: hat geantwortet vor 6 Jahren.

Hallo könnte man das, auch direkt in meinen Code implementieren wenn ich Ihnen meinen Code schicke?


 


Die Datei soll dann auch ausgelesen werden und in einer Vaadin Table dargestellt werden. Der User soll später die Möglichkeit haben die Vaadin Table zu verändern, und die Datei soll dann auch verändert werden.


 


Vielen Dank XXXXX XXXXX Jurij

Guten Abend,

 

Das würde man können, wäre aber ein wesentlich grösserer Aufwand als der hier angegebene Preis.

 

Es müsste erst die bestehende Umgebung analysiert werden und dann auch das entsprechende Ablaufschema erstellt werden.

 

Mit "Code schicken" wäre es dann ein Blindflug der nicht getestet werden kann. Somit wären wir ausserhalb jeder Qualitätssicherung. Mit freundlichen Grüssen

 

Fragen:

- Wer ist der Benutzer dieser Tabelle? Jedermann aus dem Internet oder eine bekannte, begrenzte Anzahl von Benutzern?

 

- Ist das eine einzelne Datei welche immer wieder bearbeitet werden soll? Oder sind das beliebig viele Dateien?

 

Mit freundlichen Grüssen

Markus Winter

Kunde: hat geantwortet vor 6 Jahren.

Hallo diese Tabelle wird nur von einer bestimmten Anzahl Benutzer gebraucht. Es soll immer nur eine Datei sein, die bearbeitet wird.


 


 


Ich habe auch eig. nur das Problem, dass ich wenn ich es deploye als .WAR auf die Datei nicht zugreifen mehr zugreifen kann. Liegt es vllcht. einfach nur an den Sicherheitseinstellungen von Tomcat. Habe da leider sehr wenig Erfahrung darin.


 


Hier mal ein Codeausschnitt, was ich zum Testen benutze:


 


/*
* WebApplicationContext context = (WebApplicationContext)
* getApplication() .getContext();
*
* File webinfFolder = new File(context.getHttpSession()
* .getServletContext().getRealPath("WEB-INF/Editor1.csv"));
*
* getApplication().getMainWindow().showNotification(
* webinfFolder.getAbsolutePath());
*
* try { Desktop.getDesktop().open(webinfFolder); } catch
* (IOException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/


 


 


Ein einfaches Bsp. nur zum Testen. Aus Eclipse funktioniert es auch problemlos, nur wenn ich es aus der WAR starten will, passiert nix.


 


Wenn ich es hin kriegen könnte auf die Datei zuzugreifen, könnte ich das für den Code der Vaadin Table selber anpassen, denke ich. Vom Prinzip hört es sich auch ganz einfach an, komme aber trotzdem leider nicht weiter.


 


Vielen Dank XXXXX XXXXX Jurij


 


PS: Mehrkosten für evltl. entstehenden Mehraufwand nehme ich gerne in Kauf, falls das Problem gelöst werden kann. Die Grenze beträgt hier für mich 50- 60 €


 

Guten Abend

Ok, ich persönlich würde für dieses Problem ein Windows Live Account lösen, die Tabelle in Microsoft Excel erstellen und mit dem Windows Live Account hochladen und dann für die entsprechenden Benutzer frei geben. Wenn sich jeder Benutzer ein Windows Live Account löst oder die Benutzer sich den Account teilen, dann kann sich jeder Benutzer die Tabelle in sein eigenes Dateisystem spiegeln lassen und lokal mit Excel bearbeiten. Es ist aber auch möglich die Datei mit dem Windows Live Account direkt im Web zu bearbeiten.

Diese Lösung haben Sie innerhalb weniger Minuten und ohne Programmierung realisiert. Zudem ist diese Lösung weniger Störungsanfällig. Was passiert bei der Programmierung, wenn ein Benutzer "vergisst" die Datei wieder hoch zu laden? Windows live macht das automatisch.

Mit freundlichen Grüssen
Markus Winter
Kunde: hat geantwortet vor 6 Jahren.

Hallo,


 


interessanter Ansatz. Würde aber in meinem speziellen Fall nicht gehen.


Der User soll nicht abhängig von Excel sein. Außerdem ist der AG unflexibel, was Windows Live Account angeht.


 


Ich brauche also eine Lösung im Code.Kann man sich vllcht. auch mal mit TeamViewer oder Skype in Verbindung setzen. Und das Problem "live" kurz analysieren. Im Anhang scchicke ich mal die Klasse, die es betrifft. Her betrifft es Zeile 303 und 571.


Die Datei "config_signals.m" muss auf dem Server gespeichert werden.

Attachment: 2013-01-16_135028_meinemenubar2.docx


 


MfG


 


Jurij


 


Code MeineMenubar


 


package com.example.rtguiapplication;

import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.terminal.StreamResource;
import com.vaadin.terminal.StreamResource.StreamSource;
import com.vaadin.terminal.gwt.server.WebApplicationContext;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

@SuppressWarnings("serial")
public class MeineMenubar extends CustomComponent implements Serializable {

@AutoGenerated
private VerticalLayout mainLayout;
private MenuBar menuBar;
private RtguiapplicationApplication rtguiapp;
private ParameterVerwaltung parameterVerwaltung;
private Window editorWindow;
PrintWriter stdout;
String line;
private Object[] meinZeileneintrag;
private LinkeLeiste_DL linkeleiste_dl;
private OptionGroup group;
private String meinhilfsstring;

/**
* The constructor should first build the main layout, set the composition
* root and then do any custom initialization.
*
* The constructor will not be automatically regenerated by the visual
* editor.
*
* @param linkeleiste_dl
*
* @param rtguiapp
* @param parameterVerwaltung
*/
public MeineMenubar(LinkeLeiste_DL linkeleiste_dl,
RtguiapplicationApplication rtguiapp,
ParameterVerwaltung parameterVerwaltung) {
this.rtguiapp = rtguiapp;
this.parameterVerwaltung = parameterVerwaltung;
this.linkeleiste_dl = linkeleiste_dl;
buildMainLayout();

setCompositionRoot(mainLayout);

// TODO add user code here
}

@SuppressWarnings("unused")
@AutoGenerated
private void buildMainLayout() {
// the main layout and components will be created here
mainLayout = new VerticalLayout();
menuBar = new MenuBar();
menuBar.setImmediate(false);
menuBar.setSizeFull();
com.vaadin.ui.MenuBar.MenuItem datei = menuBar.addItem("Datei", null,
null);
datei.addItem("Neue Datei", new MenuBar.Command() {
/**
*
*/
private static final long serialVersionUID = 7504160213633072775L;

public void menuSelected(MenuBar.MenuItem selectedItem) {
getApplication().close();
}
});

datei.addSeparator();
datei.addItem("Datei laden", new MenuBar.Command() {
/**
*
*/
private static final long serialVersionUID = 360218015440652438L;

public void menuSelected(MenuBar.MenuItem selectedItem) {

rtguiapp.laden();

}
});

datei.addItem("Datei speichern", new MenuBar.Command() {
/**
*
*/
private static final long serialVersionUID = -8816698725490329833L;

public void menuSelected(MenuBar.MenuItem selectedItem) {

rtguiapp.alleWindowsSpeichern();
}
});

datei.addSeparator();
datei.addItem("Beenden", new MenuBar.Command() {
/**
*
*/
private static final long serialVersionUID = 2419334254742931562L;

public void menuSelected(MenuBar.MenuItem selectedItem) {
getApplication().close();
getApplication()
.setLogoutURL("http://www.bosch-engineering.de");
}
});

datei.addItem("Editor öffnen", new MenuBar.Command() {
/**
*
*/
private static final long serialVersionUID = 2419334254742931562L;

public void menuSelected(MenuBar.MenuItem selectedItem) {

/*
* WebApplicationContext context = (WebApplicationContext)
* getApplication() .getContext();
*
* File webinfFolder = new File(context.getHttpSession()
* .getServletContext().getRealPath("WEB-INF/Editor1.csv"));
*
* getApplication().getMainWindow().showNotification(
* webinfFolder.getAbsolutePath());
*
* try { Desktop.getDesktop().open(webinfFolder); } catch
* (IOException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/

try {
editorSignals();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

com.vaadin.ui.MenuBar.MenuItem optionen = menuBar.addItem("Optionen",
new MenuBar.Command() {

@Override
public void menuSelected(
com.vaadin.ui.MenuBar.MenuItem selectedItem) {
// TODO Auto-generated method stub

}
});

// Erstelle Config-Datei aus den zuvor erstellten / geänderten
// Diagrammen (Auswertungen)
com.vaadin.ui.MenuBar.MenuItem matlabConfig = menuBar.addItem(
"MatLab-Config", null, null);
matlabConfig.addItem("MatLab-Config öffnen", new MenuBar.Command() {
@Override
public void menuSelected(com.vaadin.ui.MenuBar.MenuItem selectedItem) {
Window window = new Window("MatLab-Config");
window.setHeight("650px");
window.setWidth("1200px");
window.setPositionX(150);
window.setPositionY(20);

StreamSource s = new StreamResource.StreamSource() {

@Override
public InputStream getStream() {
try {
File f = new File("C://RtGuiConfig//"
+ parameterVerwaltung.getDateiName());
FileInputStream fis = new FileInputStream(f);
return fis;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
};

StreamResource r = new StreamResource(s, parameterVerwaltung
.getDateiName(), mainLayout.getApplication());
System.out.println("öffne datei:"
+ parameterVerwaltung.getDateiName());
r.setCacheTime(0);
try {
Embedded e = new Embedded();
e.setSizeFull();
e.setHeight("550px");
e.setType(Embedded.TYPE_BROWSER);

// r.setMIMEType("application/txt");

e.setSource(r);
window.addComponent(e);

getApplication().getMainWindow().addWindow(window);
} catch (Exception dateiNichtVorhanden) {
System.out.println("Bitte zunächst Config-Datei erstellen");
}

}
});

matlabConfig.addItem("MatLab-Config speichern", new MenuBar.Command() {
@Override
public void menuSelected(com.vaadin.ui.MenuBar.MenuItem selectedItem) {

// Ggfs. zuvor erstellte Hashmaps löschen und Zaehler resetten
parameterVerwaltung.getApplikationsHashmap().clear();
parameterVerwaltung.getGesamteConfigHashmap().clear();
parameterVerwaltung.setZaehlerAlleParameterHashmaps(0);
parameterVerwaltung.setSortierer(1);
parameterVerwaltung.setTitel("");
parameterVerwaltung.setAlterTitel("");

Set<Window> set = rtguiapp.getMainWindow().getChildWindows();
parameterVerwaltung.erstelleApplikationsHashmap(set,
linkeleiste_dl);

}
});

mainLayout.addComponent(menuBar);
}

public void editorSignals() throws FileNotFoundException {

/* Erzeugung eines Subwindows der die Editortabelle enthält */

editorWindow = new Window();

editorWindow.setHeight("700px");
editorWindow.setWidth("1000px");
editorWindow.setPositionX(400);
editorWindow.setPositionY(200);
editorWindow.setCaption("Signaleditor");
editorWindow.setStyleName("editorWindow");
editorWindow.setResizable(false);
editorWindow.setModal(true);
editorWindow.setScrollable(false);
// editorWindow.setSizeFull();

/* Definition der Tabellen- Spaltennamen sowie dazugehöriger Datentypen */

final Table table = new Table();
table.setImmediate(true);
table.addContainerProperty("RT- GUI Bezeichnung", String.class, null);
table.addContainerProperty("INCA", String.class, null);
table.addContainerProperty("Steuergeraetauswahl", OptionGroup.class,
null);
table.addContainerProperty("Min", Double.class, null);
table.addContainerProperty("Low", Double.class, null);
table.addContainerProperty("High", Double.class, null);
table.addContainerProperty("Max", Double.class, null);

/* Tabelle mit Objekten füllen und Bearbeitung der Zeilen zulassen */

/*
* BufferedReader und FileReader Initialisierung (Momentan noch
* statisch, in Zukunft dynamisch)
*/

try {
BufferedReader br = new BufferedReader(new FileReader(
"config_signals.m"));

String line;
String[] signale = new String[7];
String etkc1;
String etkc2;

while ((line = br.readLine()) != null) {

if (line.contains("tempSignals.addSignal")) {

meinZeileneintrag = new Object[] { signale[0], signale[1],
signale[2], signale[3], signale[4], signale[5],
signale[6] };
int pos1 = line.indexOf("'");
String spalte1 = line.substring((pos1 + 1),
line.indexOf("'", pos1 + 2));
signale[0] = spalte1;
int pos2 = line.indexOf(",");
String spalte2 = line.substring((pos2 + 2),
line.indexOf("'", pos2 + 3));

/*
* if (spalte2.contains("_ETKC_1")) { spalte2 =
* spalte2.replace("_ETKC_1", ""); } if
* (spalte2.contains("_ETKC_2")) { spalte2 =
* spalte2.replace("_ETKC_2", ""); }
*/

// hängt an alle INCA-Strings das Steuergerät "ETKC_1" dran

/*
* if (spalte2.contains("_ETKC_1") ||
* spalte2.contains("_ETKC_2")) { }else{
*
* spalte2 = spalte2 +"_ETKC_1"; }
*/

signale[1] = spalte2;
System.out.println(spalte1 + spalte2);

signale[3] = "0";
signale[4] = "0";
signale[5] = "0";
signale[6] = "0";
table.addItem(meinZeileneintrag, null);
}

if (line.contains("tempSignal.set")) {

int pos1 = line.indexOf("{") + 1;
int pos2 = line.indexOf(",", pos1 + 1);
int pos3 = line.indexOf(",", pos2 + 1);
int pos4 = line.indexOf(",", pos3 + 1);
String schwelle1 = line.substring((pos1),
line.indexOf(",", pos1 + 1));
signale[3] = schwelle1;
String schwelle2 = line.substring((pos2 + 1),
line.indexOf(",", pos2 + 2));
signale[4] = schwelle2;
String schwelle3 = line.substring((pos3 + 1),
line.indexOf(",", pos3 + 2));
signale[5] = schwelle3;
String schwelle4 = line.substring((pos4 + 1),
line.indexOf("}", pos4 + 2));
signale[6] = schwelle4;

}

// Arrays.fill(meinZeileneintrag, null);
// }

}
br.close();
}

catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// table.addItem(new Object[] { "engineSpeed", line }, new Integer(1));
/*
* table.addItem(new Object[] { "airCharge", "rl_w" }, new Integer(2));
* table.addItem(new Object[] { "airChargeMax", "rlmxs_w" }, new
* Integer(3)); table.addItem(new Object[] { "angleThrottle", "wdkba_w"
* }, new Integer( 4)); table.addItem(new Object[] { "vehicleVelocity",
* "vfzg_w" }, new Integer(5)); table.addItem(new Object[] {
* "angleCamOut", "wnwa_w_ETKC_1" }, new Integer(6)); table.addItem(new
* Object[] { "angleCamOut2", "wnwa_w_ETKC_2" }, new Integer(7));
* table.addItem(new Object[] { "angleCamIn", "wnwe_w_ETKC_1" }, new
* Integer(8));
*/

table.setEditable(true);
table.setSizeFull();
// table.setColumnExpandRatio("Max", 3.0f);
table.setColumnWidth("RT- GUI Bezeichnung", 200);
table.setColumnWidth("INCA", 200);
table.setColumnWidth("Steuergeraetauswahl", 100);
table.setColumnWidth("Min", 60);
table.setColumnWidth("Low", 60);
table.setColumnWidth("High", 60);
table.setColumnWidth("Max", 60);
/*
* table.setColumnExpandRatio("Low", 3.0f);
* table.setColumnExpandRatio("High", 3.0f);
* table.setColumnExpandRatio("Min", 3.0f);
*/
table.setCacheRate(20);
table.setPageLength(10);
//

/* Zusätzliche Spalte generieren, die eine Checkbox enthält */

table.addGeneratedColumn("selected", new Table.ColumnGenerator() {
@Override
public Object generateCell(Table source, final Object itemId,
Object columnId) {

/*
* When the chekboc value changes, add/remove the itemId from
* the selectedItemIds set
*/
final Button cb = new Button("löschen",
new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {

table.removeItem(itemId);

}
});

return cb;
}
});

table.addGeneratedColumn("steuergeraet", new Table.ColumnGenerator() {

private String meineVariable;

@Override
public Object generateCell(Table source, final Object itemId,
Object columnId) {

/*
* When the chekboc value changes, add/remove the itemId from
* the selectedItemIds set
*/

// OptionGroup
// Object

group = new OptionGroup("My Group");
group.setImmediate(true);
final Object etkc1 = "ETKC_1";
final Object etkc2 = "ETKC_2";

group.addItem(etkc1);

group.addItem(etkc2);

meineVariable = (String) table.getContainerProperty(itemId,
"INCA").getValue();

if (meineVariable != null) {
if (meineVariable.contains("ETKC_1")) {
group.select(etkc1);
}
if (meineVariable.contains("ETKC_2")) {
group.select(etkc2);
}

}

group.addListener(new Property.ValueChangeListener() {
public void valueChange(ValueChangeEvent event) {

if (event.getProperty().toString() == "ETKC_1") {

meinhilfsstring = table.getItem(itemId)
.getItemProperty("INCA").getValue()
.toString();

if (meinhilfsstring.contains("ETKC_2")) {

meinhilfsstring = meinhilfsstring.substring(0,
meinhilfsstring.length() - 7);
table.getItem(itemId).getItemProperty("INCA")
.setValue(meinhilfsstring);
}

if (meinhilfsstring.contains("ETKC_2")
|| meinhilfsstring.contains("ETKC_1")) {

} else {
meinhilfsstring = meinhilfsstring + "_ETKC_1";
table.getItem(itemId).getItemProperty("INCA")
.setValue(meinhilfsstring);
}

}

if (event.getProperty().toString() == "ETKC_2") {

meinhilfsstring = table.getItem(itemId)
.getItemProperty("INCA").getValue()
.toString();

if (meinhilfsstring.contains("ETKC_1")) {

meinhilfsstring = meinhilfsstring.substring(0,
meinhilfsstring.length() - 7);
table.getItem(itemId).getItemProperty("INCA")
.setValue(meinhilfsstring);
}

if (meinhilfsstring.contains("ETKC_2")
|| meinhilfsstring.contains("ETKC_1")) {

} else {
meinhilfsstring = meinhilfsstring + "_ETKC_2";
table.getItem(itemId).getItemProperty("INCA")
.setValue(meinhilfsstring);
}
}

}
});

return group;
}
});

/*
* Just some cosmetics : no caption for the checkboc, and make it the
* first column
*/
table.setColumnHeader("selected", "");
table.setVisibleColumns(new String[] { "RT- GUI Bezeichnung", "INCA",
"steuergeraet", "Min", "Low", "High", "Max", "selected" });
editorWindow.addComponent(table);

editorWindow.addComponent(new Button("Neue Zeile hinzufügen",
new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {

table.addItem(new Object[] { "", "", null, 0, 0, 0, 0,
null },
new Integer((Integer) (table.lastItemId()))
.intValue() + 1);

}
}));

editorWindow.addComponent(new Button("Config- Signals speichern",
new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {

// Double login = (Double) tf.getValue();

try {

FileWriter fw = new FileWriter(
"config_signals_test.m");
BufferedWriter bw = new BufferedWriter(fw);

bw.write("tempSignals=rb.get('signals');");
bw.newLine();

// Collect the results of the iteration into this
// string.

// Iterate over the item identifiers of the table.
loops: for (Iterator i = table.getItemIds()
.iterator(); i.hasNext();) {
// Get the current item identifier, which is an
// integer.
int iid = (Integer) i.next();

// Now get the actual item from the table.
Item item = table.getItem(iid);

Object s = new Object();

s = item.getItemProperty("RT- GUI Bezeichnung")
.getValue();

if (s != null) {
bw.write("tempSignals.addSignal('");
bw.write(s.toString());
bw.write("','");
} else {

bw.newLine();
continue loops;

}
s = item.getItemProperty("INCA").getValue();

if (s != null) {
bw.write(s.toString());
bw.write("');");
bw.newLine();
} else {

bw.newLine();
continue loops;

}

try {
if ((double) item.getItemProperty("Max")
.getValue() != 0
|| (double) item.getItemProperty(
"Min").getValue() != 0
|| (double) item.getItemProperty(
"High").getValue() != 0
|| (double) item.getItemProperty(
"Low").getValue() != 0) {

bw.write("tempSignal=tempSignals.getSignal_by_Label('");
bw.write(s.toString());
bw.write("');");
bw.newLine();
bw.write("tempSignal.set('tresholds',{");
s = item.getItemProperty("Min")
.getValue();
bw.write(s.toString());
bw.write(",");
s = item.getItemProperty("Low")
.getValue();
bw.write(s.toString());
bw.write(",");
s = item.getItemProperty("High")
.getValue();
bw.write(s.toString());
bw.write(",");
s = item.getItemProperty("Max")
.getValue();
bw.write(s.toString());

bw.write("});");
bw.newLine();
bw.newLine();

}
} catch (Exception e) {

getApplication()
.getMainWindow()
.showNotification(
"Fehler: Bitte nur Zahlen in die Schwellenbegrenzung schreiben!",
Window.Notification.TYPE_WARNING_MESSAGE);
}

}

bw.close();
} catch (NumberFormatException | IOException e) {
System.out.println(e);
getWindow()
.showNotification(
"Datei konnte nicht gespeichert werden, bitte Eingaben überprüfen");

}

}
}));

getApplication().getMainWindow().addWindow(editorWindow);

if (table.getItem(1).toString().contains("null")) {
table.removeItem(1);
}

}
}

Guten Abend

Nur kurz noch eine Ergänzung zu Windows Live. Sie sind nicht von Excel abhängig, die Datei kann auch mit WebExcel im Browser (von MS installationsfrei zur Verfügung gestellt) bearbeitet werden. Geht ebenso auch mit dem Smartphone.

---

Ich denke, dass Ihre ursprüngliche Frage:
"wie kann ich Dateien aus meiner Web- Applikation auf dem TomCat Server speichern und wieder lesen?"

Mit dem zugestellten Beispielcode gelöst ist. Ich bitte Sie daher um eine entsprechende Bewertung meiner Arbeit.


Der jetzt zugestellte Code ist eine neue Frage und benötigt einer Analyse des Codes und übersteigt das Budget der bereits gelösten Anfangsfrage.

---

Dennoch habe ich einen kurzen Blick darauf geworfen und antworte Ihnen wie folgt:


Die Zeile 303 ist bei mir:

String line;


und Zeile 571 wäre bei mir:

bw.write("tempSignals=rb.get('signals');");


Falls dies abweichen würde, könnte das an unterschiedlichen Zeilenumbrüchen sein. Stellen Sie mir in diesem Fall ihre beiden Zeilen 303 und 571 zu.

In beiden Zeilen und deren näheren Umgebung kann ich auf Anhieb kein Problem feststellen.


Sie schreiben sehr gezielt von Zeile 303 und 571. Welches sind denn die Fehlermeldungen? Was sagen die Logs über die Problematik aus? Wonach müssen wir suchen?

---


Ein Tracing Ihres Codes mittels Teamviewer könnte u.U. 2-3 Stunden oder mehr Zeit in Anspruch nehmen. Bei einem Ansatz von 80.-/std könnte das auf 160.- bis 240.- zu stehen kommen. Da ich den Code nicht kenne, kann ich auch nicht aussagen, ob es zu einem Erfolg führen wird oder ob dann noch andere, weitere Probleme auftauchen welche jetzt nicht zu erkennen sind.



Mit freundlichen Grüssen
Markus Winter