}
try {
this.prozessKopie.setSortHelperImages(this.guessedImages);
ProzessDAO dao = new ProzessDAO();
dao.save(this.prozessKopie);
dao.refresh(this.prozessKopie);
} catch (DAOException e) {
myLogger.error(e);
myLogger.error("error on save: ", e);
return "";
}
/*
* wenn noch keine RDF-Datei vorhanden ist (weil keine Opac-Abfrage stattfand, dann jetzt eine anlegen
*/
if (this.myRdf == null) {
createNewFileformat();
}
/*--------------------------------
* wenn eine RDF-Konfiguration
* vorhanden ist (z.B. aus dem Opac-Import, oder frisch angelegt), dann
* diese ergänzen
* --------------------------------*/
if (this.myRdf != null) {
for (AdditionalField field : this.additionalFields) {
if (field.isUghbinding() && field.getShowDependingOnDoctype()) {
/* welches Docstruct */
DocStruct myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct();
DocStruct myTempChild = null;
if (field.getDocstruct().equals("firstchild")) {
try {
myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct().getAllChildren().get(0);
} catch (RuntimeException e) {
/*
* das Firstchild unterhalb des Topstructs konnte nicht ermittelt werden
*/
}
}
/*
* falls topstruct und firstchild das Metadatum bekommen sollen
*/
if (!field.getDocstruct().equals("firstchild") && field.getDocstruct().contains("firstchild")) {
try {
myTempChild = this.myRdf.getDigitalDocument().getLogicalDocStruct().getAllChildren().get(0);
} catch (RuntimeException e) {
}
}
if (field.getDocstruct().equals("boundbook")) {
myTempStruct = this.myRdf.getDigitalDocument().getPhysicalDocStruct();
}
/* welches Metadatum */
try {
/*
* bis auf die Autoren alle additionals in die Metadaten übernehmen
*/
if (!field.getMetadata().equals("ListOfCreators")) {
MetadataType mdt = this.ughHelper.getMetadataType(this.prozessKopie.getRegelsatz().getPreferences(), field.getMetadata());
Metadata md = this.ughHelper.getMetadata(myTempStruct, mdt);
if (md != null) {
md.setValue(field.getWert());
}
/*
* wenn dem Topstruct und dem Firstchild der Wert gegeben werden soll
*/
if (myTempChild != null) {
md = this.ughHelper.getMetadata(myTempChild, mdt);
if (md != null) {
md.setValue(field.getWert());
}
}
}
} catch (Exception e) {
Helper.setFehlerMeldung(e);
}
} // end if ughbinding
}// end for
/*
* -------------------------------- Collectionen hinzufügen --------------------------------
*/
DocStruct colStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct();
try {
addCollections(colStruct);
/* falls ein erstes Kind vorhanden ist, sind die Collectionen dafür */
colStruct = colStruct.getAllChildren().get(0);
addCollections(colStruct);
} catch (RuntimeException e) {
/*
* das Firstchild unterhalb des Topstructs konnte nicht ermittelt werden
*/
}
/*
* -------------------------------- Imagepfad hinzufügen (evtl. vorhandene zunächst löschen) --------------------------------
*/
try {
MetadataType mdt = this.ughHelper.getMetadataType(this.prozessKopie, "pathimagefiles");
List<? extends Metadata> alleImagepfade = this.myRdf.getDigitalDocument().getPhysicalDocStruct().getAllMetadataByType(mdt);
if (alleImagepfade != null && alleImagepfade.size() > 0) {
for (Metadata md : alleImagepfade) {
this.myRdf.getDigitalDocument().getPhysicalDocStruct().getAllMetadata().remove(md);
}
}
Metadata newmd = new Metadata(mdt);
if (SystemUtils.IS_OS_WINDOWS) {
newmd.setValue("file:/" + this.prozessKopie.getImagesDirectory() + this.prozessKopie.getTitel().trim() + DIRECTORY_SUFFIX);
} else {
newmd.setValue("file://" + this.prozessKopie.getImagesDirectory() + this.prozessKopie.getTitel().trim() + DIRECTORY_SUFFIX);
}
this.myRdf.getDigitalDocument().getPhysicalDocStruct().addMetadata(newmd);
/* Rdf-File schreiben */
this.prozessKopie.writeMetadataFile(this.myRdf);
/*
* -------------------------------- soll der Prozess als Vorlage verwendet werden? --------------------------------
*/
if (this.useTemplates && this.prozessKopie.isInAuswahllisteAnzeigen()) {
this.prozessKopie.writeMetadataAsTemplateFile(this.myRdf);
}
} catch (ugh.exceptions.DocStructHasNoTypeException e) {
Helper.setFehlerMeldung("DocStructHasNoTypeException", e.getMessage());
myLogger.error("creation of new process throws an error: ", e);
} catch (UghHelperException e) {
Helper.setFehlerMeldung("UghHelperException", e.getMessage());
myLogger.error("creation of new process throws an error: ", e);
} catch (MetadataTypeNotAllowedException e) {
Helper.setFehlerMeldung("MetadataTypeNotAllowedException", e.getMessage());
myLogger.error("creation of new process throws an error: ", e);
}
}
// Adding process to history
if (!HistoryAnalyserJob.updateHistoryForProcess(this.prozessKopie)) {
Helper.setFehlerMeldung("historyNotUpdated");
return "";
} else {
try {
new ProzessDAO().save(this.prozessKopie);
} catch (DAOException e) {
myLogger.error(e);
myLogger.error("error on save: ", e);
return "";
}