th_biedermann
Elite Observer

CSV-Import mit $REF

Hallo zusammen

Ich habe einen Scipt der mir ein CVS einliesst und in eine FS Tabelle schreibt. Das klappt alles tip top.

Den Sript habe ich aus diesem Forum.

Ausschnitt:

  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]));
			ent.setValue("DocReference", fields[2]);
		}
		counter ++;
  }

 

Jetzt hat aber jeder Datensatz noch eine PDF Referenz. Wir kann ich das per Script tun, damit eine Refernz aus den Medien geschrieben werden kann?

DANKE für euren Input

Grüsse
Thomas

0 Kudos
3 Replies
hoebbel
e-Spirit employee

Re: CSV-Import mit $REF

Hallo Thomas,

ich bin mir nicht sicher, ob ich "Jetzt hat aber jeder Datensatz noch eine PDF Referenz" richtig verstehe. Ist das ein Link auf eine irgendwo liegende PDF Datei und wenn ja, was soll denn mit dem Link passieren?

Im einfachsten Fall willst du daraus nur einen externen Link machen. Dazu musst Du entweder über das FormData des Datasets (<content2>.getDataset(<entity>)) dir die Ziel-Eingabekomponente holen und die entsprechend befüllen oder Du speicherst den Link einfach als Text in ein Textfeld und machst daraus über den Templatecode den Link (das geht auch problemlos über das Entity wie im jetzigen Skript).

Wahrscheinlich willst Du aber zusätzlich das PDF importieren bzw. dieses liegt bereits im Media-Store. Das musst Du dir holen, in den Mediastore transferieren und dir die UID merken (bzw. die UID anhand der vorliegenden Informationen ermitteln). Mit Hilfe der UID musst Du dann eine (FS_REFERENCE) Eingabekomponente entsprechend füllen. 

Ich hoffe, diese allgemeinen Hinweise helfen weiter
Holger

0 Kudos
th_biedermann
Elite Observer

Re: CSV-Import mit $REF

Hallo Holger

Danke für dein Fedback. Ich möchte den ersten Punkt bauen.

Im einfachsten Fall willst du daraus nur einen externen Link machen. Dazu musst Du entweder über das FormData des Datasets (<content2>.getDataset(<entity>)) dir die Ziel-Eingabekomponente holen und die entsprechend befüllen.

Nur wie muss ich das in den Script einbauen?!?

	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]));
						
			ent.setValue("DocReference", fields[2]);
		}
		counter ++;

 

Grüsse. Thomas

0 Kudos
ncbruckner
Returning Observer

Re: CSV-Import mit $REF

Ich habe das jetzt noch nicht in eine Entity gesetzt, deshalb keine Garantie, aber eigentlich müsste das so gehen, wenn das ein CMS_INPUT_LINK ist:

TemplateStoreRoot templateStoreRoot = (TemplateStoreRoot) project.getUserService().getStore(Store.Type.TEMPLATESTORE, false);
LinkTemplate externalLink = templateStoreRoot.getLinkTemplates().getTemplate("link_template_name");
Link newLink = externalLink.createLink(language);
FormData linkFormData = newLink.getFormData();
FormField field = linkFormData.get(language, "lt_link");
field.set(fields[2]);
                                    
ent.setValue("DocReference", newLink);
0 Kudos