ACordes
I'm new here

UrlCreator / GenerationContext im Auftrags-Skript (ScheduleContext)

Jump to solution

Hallo Community,

ich entwickle zur Zeit ein Auftrags-Script, welches Datenquellen als CSV exportiert und per FTP auf einen Server lädt. Momentan bereitet mir die Ermittlung von URLs Kopfzerbrechen.

Die Datenquelle hat bspw. ein DOM-Feld für ein Bild, dessen URL ich übermitteln muss. Dafür brauche ich offenbar einen UrlCreator, der einen GenerationContext benötigt. Ich habe in meinem Script aber nur den ScheduleContext zu Verfügung.

Daher die Frage: wie ist der einfachste Weg, an einen GenerationContext zu kommen? Oder gibt es eine andere Möglichkeit, die URL zu ermitteln?

Vielen Dank!

0 Kudos
1 Solution

Accepted Solutions
aVogt
Returning Creator

Hallo Arne,

mit

context.getProperty(GenerateTaskExecutor.CONTEXT_KEY_URLCREATOR);

kommst Du an den UrlCreator (auch wenn Du einen ScheduleCotext hast).

Grüße

Andreas

View solution in original post

0 Kudos
5 Replies
aVogt
Returning Creator

Hallo Arne,

mit

context.getProperty(GenerateTaskExecutor.CONTEXT_KEY_URLCREATOR);

kommst Du an den UrlCreator (auch wenn Du einen ScheduleCotext hast).

Grüße

Andreas

0 Kudos

Hallo Andreas,

klingt gut, aber leider gibt mir das null zurück.

Ich habe mir mit context.getProperties() mal angeschaut, was ich da zur Verfügung habe und das sind  nur "path" sowie "#securityManager", kein "#urlCreator".

0 Kudos
aVogt
Returning Creator

Hallo Arne,

eigenartiger Weise bei mir auch. :smileyconfused: Ich verwende o.g. Erzeugung in einer eigenen Klasse und da verwende ich den ScheduleContext ... Da muss ich mal nachforschen, ob das in der Klasse auch nicht geht (ich bekomme aber keine Fehlermeldung).

Ansonsten kannst Du Dir die URL auch etwas umständlicher zusammenbauen (das break steht nur zur Sicherheit drin, falls das Rootverzeichnis mal anders benannt wird)

String retString = "";
String extension = medium.getFile(mLang).getExtension();
if(medium.getParent().getClass().toString().indexOf("MediaFolder")>0 ) {
  IDProvider mrf = medium.getParent();
  retString = "" + mrf.getUid();
  int i = 0;
  while ( !retString.equals("root")) {
    if(mrf.getParent().getClass().toString().indexOf("MediaFolder")>0 ) {
      mrf =  mrf.getParent();
      retString = mrf.getUid() + "/" +retString;
    } else {
      break;
   }
   i++;
   if(i==7) break;
  }
  context.logInfo("\t\tPfad: "+ retString);
  context.logInfo("\t\tkompletter Pfad: /media/"+ retString + "/"+medium.getUid() + "."+extension);
}

0 Kudos
aVogt
Returning Creator

Hallo Arne,

wiedermal die typische "Falle":

Bevor das Script im Auftrag ausgeführt wird, lasse eine Teilgenerierung einer beliebigen Seite ausführen.

Dann klappt es wie oben beschrieben.

Grüße

Andreas

Hallo Andreas,

super, so klappt es! Vielen Dank!

Gruß,

Arne

0 Kudos