/** * This file is part of Archiv-Editor. * * The software Archiv-Editor serves as a client user interface for working with * the Person Data Repository. See: pdr.bbaw.de * * The software Archiv-Editor was developed at the Berlin-Brandenburg Academy * of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin. * www.bbaw.de * * Copyright (C) 2010-2013 Berlin-Brandenburg Academy * of Sciences and Humanities * * The software Archiv-Editor was developed by @author: Christoph Plutte. * * Archiv-Editor is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Archiv-Editor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Archiv-Editor. * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>. */ package org.bbaw.pdr.ae.control.core; import java.io.ByteArrayOutputStream; import java.text.SimpleDateFormat; import javax.xml.stream.XMLEventFactory; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.Characters; import javax.xml.stream.events.EndElement; import javax.xml.stream.events.StartDocument; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; import org.bbaw.pdr.ae.common.AEConstants; import org.bbaw.pdr.ae.control.facade.Facade; import org.bbaw.pdr.ae.control.internal.Activator; import org.bbaw.pdr.ae.metamodel.PdrId; import org.bbaw.pdr.ae.metamodel.PdrMetaObject; import org.bbaw.pdr.ae.metamodel.Record; import org.bbaw.pdr.ae.metamodel.Revision; import org.bbaw.pdr.ae.model.Aspect; import org.bbaw.pdr.ae.model.Concurrence; import org.bbaw.pdr.ae.model.Identifier; import org.bbaw.pdr.ae.model.NameMods; import org.bbaw.pdr.ae.model.OriginInfo; import org.bbaw.pdr.ae.model.PartMods; import org.bbaw.pdr.ae.model.PdrObject; import org.bbaw.pdr.ae.model.Person; import org.bbaw.pdr.ae.model.Place; import org.bbaw.pdr.ae.model.Reference; import org.bbaw.pdr.ae.model.ReferenceMods; import org.bbaw.pdr.ae.model.RelatedItem; import org.bbaw.pdr.ae.model.Relation; import org.bbaw.pdr.ae.model.RelationStm; import org.bbaw.pdr.ae.model.SemanticStm; import org.bbaw.pdr.ae.model.SpatialStm; import org.bbaw.pdr.ae.model.TaggingRange; import org.bbaw.pdr.ae.model.TimeStm; import org.bbaw.pdr.ae.model.ValidationStm; import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; /** * The Class ExportXMLProcessor write PDRObjects to xml like the XMLProcessor * but writes out full names that means that the xml is not valid according to * PDR standards but human readably. * @author Christoph Plutte */ public class ExportXMLProcessor implements XMLProcessorInterface { /** administrative date format. */ private SimpleDateFormat _adminDateFormat = org.bbaw.pdr.ae.common.AEConstants.ADMINDATE_FORMAT; /** date encoding type. */ private final String _encoding = "iso8601"; /** end event. */ private XMLEvent _end; /** Logger. */ private static ILog iLogger = AEConstants.ILOGGER; /** status. */ private IStatus _log; /** singleton instance of Facade. */ private Facade _facade = Facade.getInstanz(); /** * create Node. * @param eventWriter writer * @param name name of node * @param c concurrence * @param person * @throws XMLStreamException exc. */ private void createNode(final XMLEventWriter eventWriter, final String name, final Concurrence c, PdrMetaObject person) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", name); eventWriter.add(tab); eventWriter.add(sElement); // FIXME nullpointer abfangen!!1 PdrObject o = _facade.getPdrObject(c.getPersonId()); if (o != null) { eventWriter.add(eventFactory.createAttribute("person", o.getDisplayName())); } else { eventWriter.add(eventFactory.createAttribute("person", c.getPersonId().toString())); } eventWriter.add(end); if (c.getReferences() != null) { for (int j = 0; j < c.getReferences().size(); j++) { createNode(eventWriter, "validationStm", c.getReferences().get(j), "podl", "http://pdr.bbaw.de/namespaces/podl/", person); } } // Create End node EndElement eElement = eventFactory.createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", name); eventWriter.add(eElement); eventWriter.add(end); } // /** // * Creates the node. // * @param eventWriter the event writer // * @param name the name // * @param d the d // * @throws XMLStreamException the xML stream exception // */ // private void createNode(XMLEventWriter eventWriter, String name, // HashMap<String, String> d) // throws XMLStreamException // { // // XMLEventFactory eventFactory = XMLEventFactory.newInstance(); // XMLEvent end = eventFactory.createCharacters("\n"); // XMLEvent tab = eventFactory.createCharacters("\t"); // // Create Start node // StartElement sElement = eventFactory.createStartElement("", "", name); // eventWriter.add(tab); // eventWriter.add(sElement); // // FIXME nullpointer abfangen!!1 // eventWriter.add(end); // // for (String str : d.keySet()) // { // // createNode(eventWriter, "docPart", d.get(str), str); // } // if (d.isEmpty()) // { // createNode(eventWriter, "docPart", "", "de"); // // } // eventWriter.add(eventFactory.createEndElement("", "", name)); // eventWriter.add(end); // // } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param i the i * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final Identifier i) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (i.getProvider() != null) { eventWriter.add(eventFactory.createAttribute("provider", i.getProvider())); } if (i.getQuality() != null) { eventWriter.add(eventFactory.createAttribute("quality", i.getQuality())); } if (i.getAuthority() != null) { eventWriter.add(eventFactory.createAttribute("authority", _facade.getObjectDisplayName(i.getAuthority()))); } // Create Content Characters characters = eventFactory.createCharacters(i.getIdentifier()); eventWriter.add(characters); // Create End node EndElement eElement = eventFactory.createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param nameMods the name mods * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final NameMods nameMods) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("", "", "name"); eventWriter.add(sElement); if (nameMods.getType() != null) { eventWriter.add(eventFactory.createAttribute("type", nameMods.getType())); } eventWriter.add(end); for (int i = 0; i < nameMods.getNameParts().size(); i++) { StartElement sE = eventFactory.createStartElement("", "", "namePart"); eventWriter.add(tab); eventWriter.add(sE); if (nameMods.getNameParts().get(i).getType() != null) { eventWriter.add(eventFactory.createAttribute("type", nameMods.getNameParts().get(i).getType())); } Characters characters = eventFactory.createCharacters(nameMods.getNameParts().get(i).getNamePart()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "namePart")); eventWriter.add(end); } if (nameMods.getAffiliation() != null) { StartElement sE = eventFactory.createStartElement("", "", "affiliation"); eventWriter.add(tab); eventWriter.add(sE); Characters characters = eventFactory.createCharacters(nameMods.getAffiliation()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "affiliation")); eventWriter.add(end); } if (nameMods.getRoleMods() != null) { StartElement sE = eventFactory.createStartElement("", "", "role"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(end); if (nameMods.getRoleMods().getRoleTerm() != null) { StartElement sE2 = eventFactory.createStartElement("", "", "roleTerm"); eventWriter.add(tab); eventWriter.add(tab); eventWriter.add(sE2); if (nameMods.getRoleMods().getAuthority() != null) { eventWriter.add(eventFactory.createAttribute("authority", nameMods.getRoleMods().getAuthority())); } if (nameMods.getRoleMods().getType() != null) { eventWriter.add(eventFactory.createAttribute("type", nameMods.getRoleMods().getType())); } Characters characters = eventFactory.createCharacters(nameMods.getRoleMods().getRoleTerm()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "roleTerm")); eventWriter.add(end); } eventWriter.add(tab); eventWriter.add(eventFactory.createEndElement("", "", "role")); eventWriter.add(end); } if (nameMods.getDescription() != null) { StartElement sE = eventFactory.createStartElement("", "", "description"); eventWriter.add(tab); eventWriter.add(sE); Characters characters = eventFactory.createCharacters(nameMods.getDescription()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "description")); eventWriter.add(end); } eventWriter.add(eventFactory.createEndElement("", "", "name")); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param originInfo the origin info * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final OriginInfo originInfo) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("", "", name); eventWriter.add(tab); eventWriter.add(sElement); eventWriter.add(end); if (originInfo.getDateCreated() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCreated"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); Characters characters = eventFactory.createCharacters(originInfo.getDateCreated().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCreated")); eventWriter.add(end); } if (originInfo.getDateCreatedTimespan() != null) { if (originInfo.getDateCreatedTimespan().getDateFrom() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCreated"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "start")); Characters characters = eventFactory.createCharacters(originInfo.getDateCreatedTimespan().getDateFrom() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCreated")); eventWriter.add(end); } if (originInfo.getDateCreatedTimespan().getDateTo() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCreated"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "end")); Characters characters = eventFactory.createCharacters(originInfo.getDateCreatedTimespan().getDateTo() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCreated")); eventWriter.add(end); } } if (originInfo.getDateIssued() != null) { StartElement sE = eventFactory.createStartElement("", "", "getDateIssued"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); Characters characters = eventFactory.createCharacters(originInfo.getDateIssued().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "getDateIssued")); eventWriter.add(end); } if (originInfo.getDateIssuedTimespan() != null) { if (originInfo.getDateIssuedTimespan().getDateFrom() != null) { StartElement sE = eventFactory.createStartElement("", "", "getDateIssued"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "start")); Characters characters = eventFactory.createCharacters(originInfo.getDateIssuedTimespan().getDateFrom() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "getDateIssued")); eventWriter.add(end); } if (originInfo.getDateIssuedTimespan().getDateTo() != null) { StartElement sE = eventFactory.createStartElement("", "", "getDateIssued"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "end")); Characters characters = eventFactory.createCharacters(originInfo.getDateIssuedTimespan().getDateTo() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "getDateIssued")); eventWriter.add(end); } } if (originInfo.getDateCaptured() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCaptured"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); Characters characters = eventFactory.createCharacters(originInfo.getDateCaptured().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCaptured")); eventWriter.add(end); } if (originInfo.getDateCapturedTimespan() != null) { if (originInfo.getDateCapturedTimespan().getDateFrom() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCaptured"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "start")); Characters characters = eventFactory.createCharacters(originInfo.getDateCapturedTimespan() .getDateFrom().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCaptured")); eventWriter.add(end); } if (originInfo.getDateCapturedTimespan().getDateTo() != null) { StartElement sE = eventFactory.createStartElement("", "", "dateCaptured"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "end")); Characters characters = eventFactory.createCharacters(originInfo.getDateCapturedTimespan().getDateTo() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "dateCaptured")); eventWriter.add(end); } } if (originInfo.getCopyrightDate() != null) { StartElement sE = eventFactory.createStartElement("", "", "copyrightDate"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); Characters characters = eventFactory.createCharacters(originInfo.getCopyrightDate().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "copyrightDate")); eventWriter.add(end); } if (originInfo.getCopyrightDateTimespan() != null) { if (originInfo.getCopyrightDateTimespan().getDateFrom() != null) { StartElement sE = eventFactory.createStartElement("", "", "copyrightDate"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "start")); Characters characters = eventFactory.createCharacters(originInfo.getCopyrightDateTimespan() .getDateFrom().toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "copyrightDate")); eventWriter.add(end); } if (originInfo.getCopyrightDateTimespan().getDateTo() != null) { StartElement sE = eventFactory.createStartElement("", "", "copyrightDate"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); eventWriter.add(eventFactory.createAttribute("point", "end")); Characters characters = eventFactory.createCharacters(originInfo.getCopyrightDateTimespan().getDateTo() .toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "copyrightDate")); eventWriter.add(end); } } if (originInfo.getPublisher() != null) { StartElement sE = eventFactory.createStartElement("", "", "publisher"); eventWriter.add(tab); eventWriter.add(sE); Characters characters = eventFactory.createCharacters(originInfo.getPublisher()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "publisher")); eventWriter.add(end); } if (originInfo.getPlaceTerm() != null) { StartElement sE = eventFactory.createStartElement("", "", "place"); eventWriter.add(tab); eventWriter.add(sE); eventWriter.add(end); StartElement sE2 = eventFactory.createStartElement("", "", "placeTerm"); eventWriter.add(tab); eventWriter.add(tab); eventWriter.add(sE2); eventWriter.add(eventFactory.createAttribute("type", originInfo.getPlaceType())); Characters characters = eventFactory.createCharacters(originInfo.getPlaceTerm()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "placeTerm")); eventWriter.add(end); eventWriter.add(tab); eventWriter.add(eventFactory.createEndElement("", "", "place")); eventWriter.add(end); } if (originInfo.getEdition() != null) { StartElement sE = eventFactory.createStartElement("", "", "edition"); eventWriter.add(tab); eventWriter.add(sE); Characters characters = eventFactory.createCharacters(originInfo.getEdition()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "edition")); eventWriter.add(end); } eventWriter.add(eventFactory.createEndElement("", "", name)); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param part the part * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final PartMods part) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("", "", "part"); eventWriter.add(sElement); eventWriter.add(end); if (part.getDetails() != null) { for (int i = 0; i < part.getDetails().size(); i++) { StartElement sE = eventFactory.createStartElement("", "", "detail"); eventWriter.add(tab); eventWriter.add(sE); if (part.getDetails().get(i).getType() != null) { eventWriter.add(eventFactory.createAttribute("type", part.getDetails().get(i).getType())); } if (part.getDetails().get(i).getNumber() != null) { sElement = eventFactory.createStartElement("", "", "number"); eventWriter.add(sElement); eventWriter.add(end); Characters characters = eventFactory.createCharacters(part.getDetails().get(i).getNumber()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "number")); eventWriter.add(end); } if (part.getDetails().get(i).getCaption() != null) { sElement = eventFactory.createStartElement("", "", "caption"); eventWriter.add(sElement); eventWriter.add(end); Characters characters = eventFactory.createCharacters(part.getDetails().get(i).getCaption()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "caption")); eventWriter.add(end); } eventWriter.add(eventFactory.createEndElement("", "", "detail")); eventWriter.add(end); } } if (part.getExtendsMods() != null) { for (int i = 0; i < part.getExtendsMods().size(); i++) { StartElement sE = eventFactory.createStartElement("", "", "extent"); eventWriter.add(tab); eventWriter.add(sE); if (part.getDetails().get(i).getType() != null) { eventWriter.add(eventFactory.createAttribute("unit", part.getExtendsMods().get(i).getUnit())); } if (part.getExtendsMods().get(i).getStart() != null) { sElement = eventFactory.createStartElement("", "", "start"); eventWriter.add(sElement); eventWriter.add(end); Characters characters = eventFactory.createCharacters(part.getExtendsMods().get(i).getStart()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "start")); eventWriter.add(end); } if (part.getExtendsMods().get(i).getEnd() != null) { sElement = eventFactory.createStartElement("", "", "end"); eventWriter.add(sElement); eventWriter.add(end); Characters characters = eventFactory.createCharacters(part.getExtendsMods().get(i).getEnd()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "end")); eventWriter.add(end); } eventWriter.add(eventFactory.createEndElement("", "", "extent")); eventWriter.add(end); } } if (part.getDates() != null && !part.getDates().isEmpty()) { for (int i = 0; i < part.getDates().size(); i++) { StartElement sE = eventFactory.createStartElement("", "", "date"); eventWriter.add(tab); eventWriter.add(sE); Characters characters = eventFactory.createCharacters(part.getDates().get(i).toString()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "date")); eventWriter.add(end); } } eventWriter.add(eventFactory.createEndElement("", "", "part")); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param place the place * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final Place place) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (place.getType() != null) { eventWriter.add(eventFactory.createAttribute("type", PDRConfigProvider.getLabelOfMarkup("placeName", place.getType(), null, null))); } if (place.getSubtype() != null) { eventWriter.add(eventFactory.createAttribute("subtype", PDRConfigProvider.getLabelOfMarkup("placeName", place.getType(), place.getSubtype(), null))); } if (place.getKey() != null) { eventWriter.add(eventFactory.createAttribute("key", place.getKey())); } // Create Content if (place.getPlaceName() != null) { Characters characters = eventFactory.createCharacters(place.getPlaceName()); eventWriter.add(characters); } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "place")); eventWriter.add(end); } // /** // * Creates the node. // * @param eventWriter the event writer // * @param name the name // * @param ref the ref // * @param prefix the prefix // * @param uri the uri // * @throws XMLStreamException the xML stream exception // */ // private void createNode(XMLEventWriter eventWriter, String name, // Reference ref, String prefix, String uri) // throws XMLStreamException // { // XMLEventFactory eventFactory = XMLEventFactory.newInstance(); // XMLEvent end = eventFactory.createCharacters("\n"); // XMLEvent tab = eventFactory.createCharacters("\t"); // // Create Start node // StartElement sElement = eventFactory.createStartElement(prefix, uri, // name); // eventWriter.add(tab); // eventWriter.add(sElement); // if (ref.getInternal() != null) // { // eventWriter.add(eventFactory.createAttribute("internal", // ref.getInternal())); // } // if (ref.getQuality() != null) // { // eventWriter.add(eventFactory.createAttribute("quality", // ref.getQuality())); // } // if (ref.getAuthority() != null) // { // eventWriter.add(eventFactory.createAttribute("authority", // ref.getAuthority().toString())); // } // // // Create Content // if (ref.getSourceId() != null) // { // Characters characters = // eventFactory.createCharacters(ref.getSourceId().toString()); // eventWriter.add(characters); // } // // Create End node // EndElement eElement = eventFactory.createEndElement(prefix, uri, name); // eventWriter.add(eElement); // eventWriter.add(end); // } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param r the r * @param prefix the prefix * @param uri the uri * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final ReferenceMods r, final String prefix, final String uri) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); _end = eventFactory.createDTD("\n"); // Create config open tag StartElement startElement = eventFactory.createStartElement("", "", "mods"); eventWriter.add(startElement); // TODO eventWriter.add(eventFactory.createAttribute("displayName", r.getDisplayName())); // eventWriter.add(eventFactory.createAttribute("xmlns:xsi", // "http://www.w3.org/2001/XMLSchema-instance")); // eventWriter.add(eventFactory.createAttribute("xsi:schemaLocation", // "http://pdr.bbaw.de/namespaces/rodl/ http://pdr.bbaw.de/schema/rodl_mods.xsd")); if (!r.getPdrId().getType().equals("genre")) { eventWriter.add(eventFactory.createAttribute("ID", r.getPdrId().toString())); } eventWriter.add(_end); // Write the different nodes createReferenceChildren(eventWriter, r); if (r.getRecord() != null) { createNodeNoNamespace(eventWriter, "recordInfo", r.getRecord()); } eventWriter.add(eventFactory.createEndElement("", "", "mods")); eventWriter.add(_end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param relation the relation * @param relationStm * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final Relation relation, RelationStm relationStm) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (relation.getObject() != null) { PdrObject o = _facade.getPdrObject(relation.getObject()); if (o != null) { eventWriter.add(eventFactory.createAttribute("object", o.getDisplayName())); } else { eventWriter.add(eventFactory.createAttribute("object", relation.getObject().toString())); } } else { eventWriter.add(eventFactory.createAttribute("object", relationStm.getSubject().toString())); } if (relation.getProvider() != null) { eventWriter.add(eventFactory.createAttribute("provider", relation.getProvider())); } if (relation.getContext() != null) { eventWriter.add(eventFactory.createAttribute("context", PDRConfigProvider.getLabelOfRelation(relation.getProvider(), relation.getContext(), null, null))); } if (relation.getRClass() != null) { eventWriter.add(eventFactory.createAttribute( "class", PDRConfigProvider.getLabelOfRelation(relation.getProvider(), relation.getContext(), relation.getRClass(), null))); } // Create Content if (relation.getRelation() != null) { Characters characters = eventFactory.createCharacters(PDRConfigProvider.getLabelOfRelation( relation.getProvider(), relation.getContext(), relation.getRClass(), relation.getRelation())); eventWriter.add(characters); } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "relation")); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param relStm the rel stm * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final RelationStm relStm) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (relStm.getSubject() != null) { PdrObject o = _facade.getPdrObject(relStm.getSubject()); if (o != null) { eventWriter.add(eventFactory.createAttribute("subject", o.getDisplayName())); } else { eventWriter.add(eventFactory.createAttribute("subject", relStm.getSubject().toString())); } } // Create Content if (relStm.getRelations() != null) { for (int j = 0; j < relStm.getRelations().size(); j++) { createNode(eventWriter, "relation", relStm.getRelations().get(j), relStm); } } // Create End node EndElement eElement = eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param r the r * @param prefix the prefix * @param uri the uri * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final Revision r, final String prefix, final String uri) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement(prefix, uri, name); eventWriter.add(tab); eventWriter.add(sElement); eventWriter.add(eventFactory.createAttribute("ref", new Integer(r.getRef()).toString())); eventWriter .add(eventFactory.createAttribute("timestamp", _adminDateFormat.format(r.getTimeStamp()).toString())); eventWriter.add(eventFactory.createAttribute("authority", _facade.getObjectDisplayName(r.getAuthority()))); // TODO das Schema sieht keinen authority namen mehr vor, änderung im // model umsetzen. // // Create Content // Characters characters = // eventFactory.createCharacters(r.getRevisor()); // eventWriter.add(characters); // Create End node EndElement eElement = eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param semStm the sem stm * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final SemanticStm semStm) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (semStm.getProvider() != null) { eventWriter.add(eventFactory.createAttribute("provider", semStm.getProvider())); } // Create Content if (semStm.getLabel() != null) { Characters characters = eventFactory.createCharacters(PDRConfigProvider.getSemanticLabel( semStm.getProvider(), semStm.getLabel())); eventWriter.add(characters); } // Create End node EndElement eElement = eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param spaStm the spa stm * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final SpatialStm spaStm) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (spaStm.getType() != null) { eventWriter.add(eventFactory.createAttribute("type", spaStm.getType())); } // Create Content if (spaStm.getPlaces() != null) { for (int j = 0; j < spaStm.getPlaces().size(); j++) { createNode(eventWriter, "place", spaStm.getPlaces().get(j)); } } // Create End node EndElement eElement = eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param text the text * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final String text) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("", "", name); eventWriter.add(tab); eventWriter.add(sElement); Characters characters = eventFactory.createCharacters(text); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", name)); eventWriter.add(end); } // /** // * Creates the node. // * @param eventWriter the event writer // * @param name the name // * @param value the value // * @param lang the lang // * @throws XMLStreamException the xML stream exception // */ // private void createNode(final XMLEventWriter eventWriter, final String // name, final String value, final String lang) // throws XMLStreamException // { // XMLEventFactory eventFactory = XMLEventFactory.newInstance(); // XMLEvent end = eventFactory.createCharacters("\n"); // XMLEvent tab = eventFactory.createCharacters("\t"); // // Create Start node // StartElement sElement = eventFactory.createStartElement("", "", name); // eventWriter.add(tab); // eventWriter.add(sElement); // eventWriter.add(eventFactory.createAttribute("xml:lang", lang)); // eventWriter.add(end); // // if (value.trim().length() > 0) // { // Characters characters = eventFactory.createCharacters(value.trim()); // eventWriter.add(characters); // } // eventWriter.add(eventFactory.createEndElement("", "", name)); // eventWriter.add(end); // // } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param tStm the t stm * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final TimeStm tStm) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(tab); eventWriter.add(sElement); if (tStm.getType() != null) { eventWriter.add(eventFactory.createAttribute("type", tStm.getType())); } // Create Content if (tStm.getTimes() != null) { for (int j = 0; j < tStm.getTimes().size(); j++) { StartElement startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "time"); eventWriter.add(startElement); if (tStm.getTimes().get(j).getAccuracy() != null) { eventWriter.add(eventFactory.createAttribute("accuracy", tStm.getTimes().get(j).getAccuracy())); } if (tStm.getTimes().get(j).getType() != null) { eventWriter.add(eventFactory.createAttribute("type", tStm.getTimes().get(j).getType())); } // Create Content if (tStm.getTimes().get(j).getTimeStamp() != null) { Characters characters = eventFactory.createCharacters(tStm.getTimes().get(j).getTimeStamp() .toString()); eventWriter.add(characters); } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "time")); eventWriter.add(end); } } // Create End node EndElement eElement = eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param name the name * @param validationStm the validation stm * @param prefix the prefix * @param uri the uri * @param object * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final String name, final ValidationStm validationStm, final String prefix, final String uri, PdrMetaObject object) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement(prefix, uri, name); eventWriter.add(tab); eventWriter.add(sElement); if (validationStm.getAuthority() != null) { eventWriter.add(eventFactory.createAttribute("authority", _facade.getObjectDisplayName(validationStm.getAuthority()))); } else { eventWriter.add(eventFactory.createAttribute("authority", object.getRecord().getRevisions().get(0).getAuthority().toString())); } eventWriter.add(end); if (validationStm.getReference() != null) { Reference ref = validationStm.getReference(); sElement = eventFactory.createStartElement(prefix, uri, "reference"); eventWriter.add(tab); eventWriter.add(sElement); if (ref.getInternal() != null) { eventWriter.add(eventFactory.createAttribute("internal", ref.getInternal())); } if (ref.getQuality() != null) { eventWriter.add(eventFactory.createAttribute("quality", ref.getQuality())); } if (ref.getAuthority() != null) { eventWriter.add(eventFactory.createAttribute("authority", _facade.getObjectDisplayName(ref.getAuthority()))); } // Create Content if (ref.getSourceId() != null) { Characters characters; PdrObject o = _facade.getPdrObject(ref.getSourceId()); if (o != null) { characters = eventFactory.createCharacters(o.getDisplayName()); } else { characters = eventFactory.createCharacters(ref.getSourceId().toString()); } eventWriter.add(characters); } EndElement eElement = eventFactory.createEndElement(prefix, uri, "reference"); eventWriter.add(eElement); eventWriter.add(end); } sElement = eventFactory.createStartElement(prefix, uri, "interpretation"); eventWriter.add(tab); eventWriter.add(sElement); if (validationStm.getInterpretation() != null) { Characters characters = eventFactory.createCharacters(validationStm.getInterpretation()); eventWriter.add(characters); } EndElement eElement = eventFactory.createEndElement(prefix, uri, "interpretation"); eventWriter.add(eElement); eventWriter.add(end); // Create End node eElement = eventFactory.createEndElement(prefix, uri, name); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node. * @param eventWriter the event writer * @param tr the tr * @param text the text * @throws XMLStreamException the xML stream exception */ private void createNode(final XMLEventWriter eventWriter, final TaggingRange tr, String text) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node StartElement sElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", tr.getName()); eventWriter.add(tab); eventWriter.add(sElement); eventWriter.add(eventFactory.createAttribute("element", PDRConfigProvider.getLabelOfMarkup(tr.getName(), null, null, null))); if (tr.getType() != null && tr.getType().length() > 0) { eventWriter.add(eventFactory.createAttribute("type", PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), null, null))); } else { eventWriter.add(eventFactory.createAttribute("type", PDRConfigProvider.getLabelOfMarkup(tr.getName(), "undefined", null, null))); } if (tr.getSubtype() != null && tr.getSubtype().length() > 0) { eventWriter.add(eventFactory.createAttribute("subtype", PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), tr.getSubtype(), null))); } if (tr.getRole() != null && tr.getRole().length() > 0) { eventWriter.add(eventFactory.createAttribute("role", PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), tr.getSubtype(), tr.getRole()))); } if (tr.getAna() != null && tr.getAna().length() > 0) { PdrObject o = _facade.getPdrObject(new PdrId(tr.getAna())); if (o != null) { eventWriter.add(eventFactory.createAttribute("ana", o.getDisplayName())); } else { eventWriter.add(eventFactory.createAttribute("ana", tr.getAna())); } } if (tr.getKey() != null && tr.getKey().length() > 0) { PdrObject o = _facade.getPdrObject(new PdrId(tr.getKey())); if (o != null) { eventWriter.add(eventFactory.createAttribute("key", o.getDisplayName())); } else { eventWriter.add(eventFactory.createAttribute("key", tr.getKey())); } } if (tr.getWhen() != null) { eventWriter.add(eventFactory.createAttribute("when", tr.getWhen().toString())); } if (tr.getFrom() != null) { eventWriter.add(eventFactory.createAttribute("from", (tr.getFrom().toString()))); } if (tr.getTo() != null) { eventWriter.add(eventFactory.createAttribute("to", tr.getTo().toString())); } if (tr.getNotBefore() != null) { eventWriter.add(eventFactory.createAttribute("notBefore", tr.getNotBefore().toString())); } if (tr.getNotAfter() != null) { eventWriter.add(eventFactory.createAttribute("notAfter", tr.getNotAfter().toString())); } // FIXME Workaround text = text + " "; // System.out.println("injester, tr.start " + tr.getStart() + " ln " + // tr.getLength()); String subText = text.substring(tr.getStart(), Math.min(tr.getStart() + tr.getLength(), text.length())); Characters characters = eventFactory.createCharacters(subText); eventWriter.add(characters); EndElement eElement = eventFactory .createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", tr.getName()); eventWriter.add(eElement); eventWriter.add(end); } /** * Creates the node no namespace. * @param eventWriter the event writer * @param name the name * @param record the record * @throws XMLStreamException the xML stream exception */ private void createNodeNoNamespace(final XMLEventWriter eventWriter, final String name, final Record record) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); // Create Start node if (!record.getRevisions().isEmpty()) { if (record.getRevisions().firstElement() != null && record.getRevisions().firstElement().getTimeStamp() != null && record.getRevisions().firstElement().getAuthority() != null) { StartElement sE = eventFactory.createStartElement("", "", name); eventWriter.add(sE); eventWriter.add(end); StartElement sE2 = eventFactory.createStartElement("", "", "recordCreationDate"); eventWriter.add(tab); eventWriter.add(sE2); Characters characters; eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); characters = eventFactory.createCharacters(_adminDateFormat.format(record.getRevisions().firstElement() .getTimeStamp())); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "recordCreationDate")); eventWriter.add(end); sE2 = eventFactory.createStartElement("", "", "recordContentSource"); eventWriter.add(tab); eventWriter.add(sE2); eventWriter.add(eventFactory.createAttribute("authority", "PDR")); characters = eventFactory.createCharacters(_facade.getObjectDisplayName(record.getRevisions() .firstElement().getAuthority())); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "recordContentSource")); eventWriter.add(end); eventWriter.add(eventFactory.createEndElement("", "", name)); eventWriter.add(end); } if (record.getRevisions().size() > 1) { for (int j = 1; j < record.getRevisions().size(); j++) { if (record.getRevisions().get(j).getTimeStamp() != null && record.getRevisions().get(j).getAuthority() != null) { StartElement sE = eventFactory.createStartElement("", "", name); eventWriter.add(sE); eventWriter.add(end); Characters characters; StartElement sE2 = eventFactory.createStartElement("", "", "recordContentSource"); eventWriter.add(tab); eventWriter.add(sE2); eventWriter.add(eventFactory.createAttribute("authority", "PDR")); characters = eventFactory.createCharacters(_facade.getObjectDisplayName(record.getRevisions() .get(j).getAuthority())); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "recordContentSource")); eventWriter.add(end); sE2 = eventFactory.createStartElement("", "", "recordChangeDate"); eventWriter.add(tab); eventWriter.add(sE2); eventWriter.add(eventFactory.createAttribute("encoding", _encoding)); characters = eventFactory.createCharacters(_adminDateFormat.format(record.getRevisions().get(j) .getTimeStamp())); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "recordChangeDate")); eventWriter.add(end); eventWriter.add(eventFactory.createEndElement("", "", name)); eventWriter.add(end); } } } } } /** * Creates the reference children. * @param eventWriter the event writer * @param r the r * @throws XMLStreamException the xML stream exception */ private void createReferenceChildren(final XMLEventWriter eventWriter, final ReferenceMods r) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); _end = eventFactory.createDTD("\n"); XMLEvent tab = eventFactory.createCharacters("\t"); StartElement startElement; if (r.getTitleInfo() != null) { startElement = eventFactory.createStartElement("", "", "titleInfo"); eventWriter.add(startElement); eventWriter.add(_end); if (r.getTitleInfo() != null && r.getTitleInfo().getTitle() != null) { createNode(eventWriter, "title", r.getTitleInfo().getTitle()); } if (r.getTitleInfo() != null && r.getTitleInfo().getSubTitle() != null) { createNode(eventWriter, "subTitle", r.getTitleInfo().getSubTitle()); } if (r.getTitleInfo() != null && r.getTitleInfo().getPartNumber() != null) { createNode(eventWriter, "partNumber", r.getTitleInfo().getPartNumber()); } if (r.getTitleInfo() != null && r.getTitleInfo().getPartName() != null) { createNode(eventWriter, "partName", r.getTitleInfo().getPartName()); } eventWriter.add(eventFactory.createEndElement("", "", "titleInfo")); eventWriter.add(_end); } if (r.getNameMods() != null) { for (int i = 0; i < r.getNameMods().size(); i++) { createNode(eventWriter, "name", r.getNameMods().get(i)); } } if (r.getGenre() != null) { StartElement sE = eventFactory.createStartElement("", "", "genre"); eventWriter.add(sE); if (r.getGenre().getAuthority() != null) { eventWriter.add(eventFactory.createAttribute("authority", r.getGenre().getAuthority())); } Characters characters = eventFactory.createCharacters(r.getGenre().getGenre()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "genre")); eventWriter.add(_end); } if (r.getOriginInfo() != null) { createNode(eventWriter, "originInfo", r.getOriginInfo()); } if (r.getNote() != null) { StartElement sE = eventFactory.createStartElement("", "", "note"); eventWriter.add(sE); if (r.getNote().getType() != null) { eventWriter.add(eventFactory.createAttribute("type", r.getNote().getType())); } Characters characters = eventFactory.createCharacters(r.getNote().getNote()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "note")); eventWriter.add(_end); } if (r.getIdentifiersMods() != null) { for (int i = 0; i < r.getIdentifiersMods().size(); i++) { StartElement sE = eventFactory.createStartElement("", "", "identifier"); eventWriter.add(sE); if (r.getIdentifiersMods().get(i).getType() != null) { eventWriter.add(eventFactory.createAttribute("type", r.getIdentifiersMods().get(i).getType())); } Characters characters = eventFactory.createCharacters(r.getIdentifiersMods().get(i).getIdentifier()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "identifier")); eventWriter.add(_end); } } if (r.getLocation() != null) { StartElement sE = eventFactory.createStartElement("", "", "location"); eventWriter.add(sE); eventWriter.add(_end); if (r.getLocation().getPhysicalLocation() != null) { StartElement sE2 = eventFactory.createStartElement("", "", "physicalLocation"); eventWriter.add(tab); eventWriter.add(sE2); Characters characters = eventFactory.createCharacters(r.getLocation().getPhysicalLocation()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "physicalLocation")); eventWriter.add(_end); } if (r.getLocation().getShelfLocator() != null) { StartElement sE2 = eventFactory.createStartElement("", "", "shelfLocator"); eventWriter.add(tab); eventWriter.add(sE2); Characters characters = eventFactory.createCharacters(r.getLocation().getShelfLocator()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "shelfLocator")); eventWriter.add(_end); } if (r.getLocation().getUrl() != null) { StartElement sE2 = eventFactory.createStartElement("", "", "url"); eventWriter.add(tab); eventWriter.add(sE2); Characters characters = eventFactory.createCharacters(r.getLocation().getUrl()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "url")); eventWriter.add(_end); } eventWriter.add(eventFactory.createEndElement("", "", "location")); eventWriter.add(_end); } if (r.getAccessCondition() != null) { StartElement sE = eventFactory.createStartElement("", "", "accessCondition"); eventWriter.add(sE); if (r.getAccessCondition().getAccessCondition() != null) { eventWriter.add(eventFactory.createAttribute("type", r.getAccessCondition().getType())); } Characters characters = eventFactory.createCharacters(r.getAccessCondition().getAccessCondition()); eventWriter.add(characters); eventWriter.add(eventFactory.createEndElement("", "", "accessCondition")); eventWriter.add(_end); } if (r.getSeriesTitleInfo() != null) { StartElement sE = eventFactory.createStartElement("", "", "relatedItem"); eventWriter.add(sE); eventWriter.add(eventFactory.createAttribute("type", "series")); if (r.getSeriesTitleInfo() != null) { startElement = eventFactory.createStartElement("", "", "titleInfo"); eventWriter.add(startElement); eventWriter.add(_end); if (r.getSeriesTitleInfo() != null && r.getSeriesTitleInfo().getTitle() != null) { createNode(eventWriter, "title", r.getSeriesTitleInfo().getTitle()); } if (r.getSeriesTitleInfo() != null && r.getSeriesTitleInfo().getSubTitle() != null) { createNode(eventWriter, "subTitle", r.getSeriesTitleInfo().getSubTitle()); } if (r.getSeriesTitleInfo() != null && r.getSeriesTitleInfo().getPartName() != null) { createNode(eventWriter, "partName", r.getSeriesTitleInfo().getPartName()); } if (r.getSeriesTitleInfo() != null && r.getSeriesTitleInfo().getPartNumber() != null) { createNode(eventWriter, "partNumber", r.getSeriesTitleInfo().getPartNumber()); } eventWriter.add(eventFactory.createEndElement("", "", "titleInfo")); eventWriter.add(_end); } eventWriter.add(eventFactory.createEndElement("", "", "relatedItem")); eventWriter.add(_end); } if (r.getRelatedItems() != null && r.getRelatedItems().size() > 0) { for (RelatedItem relItem : r.getRelatedItems()) { StartElement sE = eventFactory.createStartElement("", "", "relatedItem"); eventWriter.add(sE); if (relItem.getType() != null) { eventWriter.add(eventFactory.createAttribute("type", relItem.getType())); } if (relItem.getId() != null) { eventWriter.add(eventFactory.createAttribute("ID", relItem.getId())); } if (relItem.getPart() != null) { createNode(eventWriter, "part", relItem.getPart()); } if (relItem.getId() != null) { ReferenceMods host = _facade.getReference(new PdrId(relItem.getId())); if (host != null) { createReferenceChildren(eventWriter, host); } } eventWriter.add(eventFactory.createEndElement("", "", "relatedItem")); eventWriter.add(_end); } } } /** * Process append text with line breaks. * @param eventWriter the event writer * @param subText the sub text * @throws XMLStreamException the xML stream exception */ private void processAppendTextWithLineBreaks(final XMLEventWriter eventWriter, final String subText) throws XMLStreamException { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); if (subText.contains("\n")) { String[] subs = subText.split("\\n"); for (int i = 0; i < subs.length; i++) { Characters characters = eventFactory.createCharacters(subs[i]); eventWriter.add(characters); if (i < subs.length - 1) { StartElement startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "lb"); eventWriter.add(startElement); eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "lb")); } } } else { Characters characters = eventFactory.createCharacters(subText); eventWriter.add(characters); } } /** * @param a aspect. * @return xml string * @throws XMLStreamException exc. * @see org.bbaw.pdr.ae.control.core.XMLProcessorInterface#writeToXML(org.bbaw.pdr.ae.model.Aspect) */ @Override public final String writeToXML(final Aspect a) throws XMLStreamException { // Create a XMLOutputFactory XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); // Create XMLEventWriter ByteArrayOutputStream bout = new ByteArrayOutputStream(); XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(bout); // Create a EventFactory XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEvent end = eventFactory.createCharacters("\n"); // Create and write Start Tag StartDocument startDocument = eventFactory.createStartDocument(); eventWriter.add(startDocument); // Create config open tag StartElement startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "aspect"); eventWriter.add(startElement); eventWriter.add(eventFactory.createNamespace("aodl", "http://pdr.bbaw.de/namespaces/aodl/")); // eventWriter.add(eventFactory.createAttribute("xmlns:xsi", // "http://www.w3.org/2001/XMLSchema-instance")); // eventWriter.add(eventFactory.createAttribute("xsi:schemaLocation", // "http://pdr.bbaw.de/namespaces/aodl/ http://pdr.bbaw.de/schema/aodl.xsd")); eventWriter.add(eventFactory.createAttribute("id", a.getPdrId().toString())); // add display name eventWriter.add(eventFactory.createAttribute("displayName", a.getDisplayName())); // eventWriter.add(end); // Write the different nodes startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "record"); eventWriter.add(startElement); eventWriter.add(end); for (int i = 0; i < a.getRecord().getRevisions().size(); i++) { createNode(eventWriter, "revision", a.getRecord().getRevisions().get(i), "aodl", "http://pdr.bbaw.de/namespaces/aodl/"); } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "record")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "timeDim"); eventWriter.add(startElement); eventWriter.add(end); if (a.getTimeDim() != null && a.getTimeDim().getTimeStms() != null) { for (int i = 0; i < a.getTimeDim().getTimeStms().size(); i++) { createNode(eventWriter, "timeStm", a.getTimeDim().getTimeStms().get(i)); } } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "timeDim")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "spatialDim"); eventWriter.add(startElement); eventWriter.add(end); if (a.getSpatialDim() != null && a.getSpatialDim().getSpatialStms() != null) { for (int i = 0; i < a.getSpatialDim().getSpatialStms().size(); i++) { createNode(eventWriter, "spatialStm", a.getSpatialDim().getSpatialStms().get(i)); } } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "spatialDim")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "relationDim"); eventWriter.add(startElement); eventWriter.add(end); if (a.getRelationDim() != null && a.getRelationDim().getRelationStms() != null) { for (int i = 0; i < a.getRelationDim().getRelationStms().size(); i++) { createNode(eventWriter, "relationStm", a.getRelationDim().getRelationStms().get(i)); } } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "relationDim")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "semanticDim"); eventWriter.add(startElement); eventWriter.add(end); if (a.getSemanticDim() != null && a.getSemanticDim().getSemanticStms() != null) { for (int i = 0; i < a.getSemanticDim().getSemanticStms().size(); i++) { createNode(eventWriter, "semanticStm", a.getSemanticDim().getSemanticStms().get(i)); } } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "semanticDim")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "notification"); eventWriter.add(startElement); eventWriter.add(end); int start = 0; // System.out.println("notifi " + a.getNotification()); // FIXME!!!!!!!!!!!!!!!! if (a.getNotification() != null && a.getRangeList() != null) { // System.out.println("RangeListe hat TaggingListen, Zahl: " + // a.getRangeList().size()); for (int i = 0; i < a.getRangeList().size(); i++) { if (a.getNotification().length() > start && a.getNotification().length() >= a.getRangeList().get(i).getStart() && a.getRangeList().get(i).getStart() >= 0) { String subText = a.getNotification().substring(start, a.getRangeList().get(i).getStart()); processAppendTextWithLineBreaks(eventWriter, subText); createNode(eventWriter, a.getRangeList().get(i), a.getNotification()); start = a.getRangeList().get(i).getStart() + a.getRangeList().get(i).getLength(); } } if (a.getNotification().length() > start) { String subText = a.getNotification().substring(start); processAppendTextWithLineBreaks(eventWriter, subText); } } else if (a.getNotification() != null) { processAppendTextWithLineBreaks(eventWriter, a.getNotification()); } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "notification")); eventWriter.add(end); startElement = eventFactory.createStartElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "validation"); eventWriter.add(startElement); eventWriter.add(end); if (a.getValidation() != null && a.getValidation().getValidationStms() != null) { for (int i = 0; i < a.getValidation().getValidationStms().size(); i++) { createNode(eventWriter, "validationStm", a.getValidation().getValidationStms().get(i), "aodl", "http://pdr.bbaw.de/namespaces/aodl/", a); } } eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "validation")); eventWriter.add(end); eventWriter.add(eventFactory.createEndElement("aodl", "http://pdr.bbaw.de/namespaces/aodl/", "aspect")); eventWriter.add(end); eventWriter.add(eventFactory.createEndDocument()); eventWriter.close(); _log = new Status(IStatus.WARNING, Activator.PLUGIN_ID, "XMLProcessor output: " + bout.toString()); iLogger.log(_log); return bout.toString(); } /** * @param p person * @return xml string * @throws XMLStreamException exc. * @see org.bbaw.pdr.ae.control.core.XMLProcessorInterface#writeToXML(org.bbaw.pdr.ae.model.Person) */ @Override public final String writeToXML(final Person p) throws XMLStreamException { // Create a XMLOutputFactory XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); // Create XMLEventWriter ByteArrayOutputStream bout = new ByteArrayOutputStream(); XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(bout); // Create a EventFactory XMLEventFactory eventFactory = XMLEventFactory.newInstance(); _end = eventFactory.createDTD("\n"); // Create and write Start Tag StartDocument startDocument = eventFactory.createStartDocument(); eventWriter.add(startDocument); // Create config open tag StartElement startElement = eventFactory.createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "person"); eventWriter.add(startElement); eventWriter.add(eventFactory.createNamespace("podl", "http://pdr.bbaw.de/namespaces/podl/")); // eventWriter.add(eventFactory.createAttribute("xmlns:xsi", // "http://www.w3.org/2001/XMLSchema-instance")); // eventWriter.add(eventFactory.createAttribute("xsi:schemaLocation", // "http://pdr.bbaw.de/namespaces/podl/ http://pdr.bbaw.de/schema/podl.xsd")); eventWriter.add(eventFactory.createAttribute("id", p.getPdrId().toString())); // add display name eventWriter.add(eventFactory.createAttribute("displayName", p.getDisplayName())); eventWriter.add(_end); // Write the different nodes if (p.getRecord() != null && p.getRecord().getRevisions() != null) { startElement = eventFactory.createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "record"); eventWriter.add(startElement); eventWriter.add(_end); for (int i = 0; i < p.getRecord().getRevisions().size(); i++) { createNode(eventWriter, "revision", p.getRecord().getRevisions().get(i), "podl", "http://pdr.bbaw.de/namespaces/podl/"); } eventWriter.add(eventFactory.createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "record")); eventWriter.add(_end); } if (p.getIdentifiers() != null) { startElement = eventFactory .createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "identifiers"); eventWriter.add(startElement); eventWriter.add(_end); if (p.getIdentifiers() != null && p.getIdentifiers().getIdentifiers() != null) { for (int i = 0; i < p.getIdentifiers().getIdentifiers().size(); i++) { createNode(eventWriter, "identifier", p.getIdentifiers().getIdentifiers().get(i)); } } eventWriter .add(eventFactory.createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "identifiers")); eventWriter.add(_end); } if (p.getConcurrences() != null) { startElement = eventFactory.createStartElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "concurrences"); eventWriter.add(startElement); eventWriter.add(_end); if (p.getConcurrences() != null && p.getConcurrences().getConcurrences() != null) { for (int i = 0; i < p.getConcurrences().getConcurrences().size(); i++) { createNode(eventWriter, "concurrence", p.getConcurrences().getConcurrences().get(i), p); } } eventWriter.add(eventFactory .createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "concurrences")); eventWriter.add(_end); } eventWriter.add(eventFactory.createEndElement("podl", "http://pdr.bbaw.de/namespaces/podl/", "person")); eventWriter.add(_end); eventWriter.add(eventFactory.createEndDocument()); eventWriter.close(); _log = new Status(IStatus.WARNING, Activator.PLUGIN_ID, "XMLProcessor output: " + bout.toString()); iLogger.log(_log); return bout.toString(); } /** * @param r reference * @return xml string * @throws XMLStreamException exc. * @see org.bbaw.pdr.ae.control.core.XMLProcessorInterface#writeToXML(org.bbaw.pdr.ae.model.ReferenceMods) */ @Override public final String writeToXML(final ReferenceMods r) throws XMLStreamException { // Create a XMLOutputFactory XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); // Create XMLEventWriter ByteArrayOutputStream bout = new ByteArrayOutputStream(); XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(bout); // Create a EventFactory XMLEventFactory eventFactory = XMLEventFactory.newInstance(); _end = eventFactory.createDTD("\n"); // Create and write Start Tag StartDocument startDocument = eventFactory.createStartDocument(); eventWriter.add(startDocument); eventWriter.add(_end); createNode(eventWriter, "mods", r, "", ""); eventWriter.add(eventFactory.createEndDocument()); eventWriter.close(); _log = new Status(IStatus.WARNING, Activator.PLUGIN_ID, "XMLProcessor output: " + bout.toString()); iLogger.log(_log); return bout.toString(); } }