Guten Tag Zusammen
Ich nehme das Thema noch einmal auf.
Ich kann das CSV - File einlesen und die Datenbank abfüllen.
Was ich noch nicht hin bekommen habe, ist die Referenzen zu den PDF's und Gif's aus dem Medienstore.
- Alle PDF und Gifs liegen bereits im MEDIASTORE
- Es gibt eine Spalte im CVS die dem Referenznamen der PDF's und GIF's im MEDIASTORE entspricht.
Wie kann ich jetzt eine <FS-REFERENZ> "cs_image_file_reference" erstellen lassen?
import de.espirit.firstspirit.forms.FormData;
import de.espirit.firstspirit.access.UserService;
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.access.store.Store.Type;
import de.espirit.firstspirit.access.store.templatestore.Schema;
import java.io.File;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.swing.JFileChooser;
import de.espirit.or.schema.Entity;
import de.espirit.or.Session;
final String SCHEMA_NAME = "sfs_ctf_data";
final String TABLE_NAME = "CSVImporter";
//Auswahl der CSV Datei
JFileChooser fileChooser = new JFileChooser();
fileChooser.setMultiSelectionEnabled(false);
int selection = fileChooser.showOpenDialog(null);
if (selection == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
// Ermitteln der Session, um darüber Entities zu erzeugen
UserService uss = context.getUserService();
Schema schema = uss.getTemplateStore().getSchemes().getSchemaByName(SCHEMA_NAME);
Session session = schema.getSession();
String tableName = schema.getOrSchema().getEntityType(TABLE_NAME).getName();
// Auslesen der CSV Zeile pro Zeile
BufferedReader reader = null;
String line = "";
counter = 0;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while ((line = reader.readLine()) != null) {
if (counter > 0){
// Datensatz erzeugen
Entity ent = session.createEntity(tableName);
String[] fields = line.split(";"); //Semikolon ggf. durch dein CSV-Trennzeichen ersetzen
// Datensatz befüllen
ent.setValue("MaterialNo", Integer.parseInt(fields[0]));
ent.setValue("HeadDiameter", Double.parseDouble(fields[1]));
/*
TemplateStoreRoot templateStoreRoot = (TemplateStoreRoot) project.getUserService().getStore(Store.Type.TEMPLATESTORE, false);
LinkTemplate externalLink = templateStoreRoot.getLinkTemplates().getTemplate("inline_link");
Link newLink = externalLink.createLink("de");
FormData linkFormData = newLink.getFormData();
FormField field = linkFormData.get("de", "cs_image_file_reference");
field.set(fields[2]);
ent.setValue("DocReference", newLink);
*/
}
counter ++;
}
session.commit();
} catch (IOException e) {
//Fehler beim auslesen der Datei
} finally {
//Reader schließen
}
context.logInfo("Fertig");
} else {
context.logInfo("Keine Datei gewählt");
}
<FS_REFERENCE name="cs_image_file_reference" hFill="yes" useLanguages="no">
<FILTER>
<HIDE type="all"/>
<ALLOW type="picture"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Image reference"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="GIF" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
Danke und Grüsse
Thomas