package eu.prestoprime.model;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class ModelUtils {
public static enum P4JAXBPackage {
DATA_MODEL("eu.prestoprime.model.acl:eu.prestoprime.model.dc:eu.prestoprime.model.dnx:eu.prestoprime.model.mets:eu.prestoprime.model.premis"),
CONF("it.eurix.archtools.workflow.jaxb:eu.prestoprime.model.datatypes:eu.prestoprime.model.search:eu.prestoprime.model.terms"),
OAI_PMH("eu.prestoprime.model.oaipmh");
private String ns = null;
private P4JAXBPackage(String ns) {
this.ns = ns;
}
public final String getValue() {
return ns;
}
};
public static Marshaller getMarshaller(P4JAXBPackage jaxbPackage) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(jaxbPackage.getValue());
Marshaller marshaller = context.createMarshaller();
return marshaller;
}
public static Unmarshaller getUnmarshaller(P4JAXBPackage jaxbPackage) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(jaxbPackage.getValue());
Unmarshaller unmarshaller = context.createUnmarshaller();
return unmarshaller;
}
public static XMLGregorianCalendar Date2XMLGC(Date d) throws DatatypeConfigurationException {
DatatypeFactory df = DatatypeFactory.newInstance();
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(d.getTime());
return df.newXMLGregorianCalendar(gc);
}
/*
* public static Dc getOaiDcType(Record record){
*
* Dc oaiDcType = new Dc();
*
* ObjectFactory OaiDcObj = new ObjectFactory();
*
*
* //title List<String> titles = record.getTitle(); for (String dctitle :
* titles) {
*
*
*
* ElementType titleElement = new ElementType();
* titleElement.setValue(dctitle);
* oaiDcType.getTitleOrCreatorOrSubject().add(titleElement);
*
* OaiDcObj.createDc().getTitleOrCreatorOrSubject().
* oaiDcType.getTitleOrCreatorOrSubject().add(title); }
*
* //creator List<String> creators = record.getCreator(); for (String
* dccreator : creators) { ElementType creatorElement = new ElementType();
* creatorElement.setValue(dccreator); JAXBElement<ElementType> creator =
* OaiDcObj.createCreator(creatorElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(creator); }
*
* //subject List<String> subjects = record.getSubject(); for (String
* dcsubject : subjects) { ElementType subjectElement = new ElementType();
* subjectElement.setValue(dcsubject); JAXBElement<ElementType> subject =
* OaiDcObj.createSubject(subjectElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(subject); }
*
* //description List<String> descriptions = record.getDescription(); for
* (String dcdescription : descriptions) { ElementType descriptionElement =
* new ElementType(); descriptionElement.setValue(dcdescription);
* JAXBElement<ElementType> description =
* OaiDcObj.createDescription(descriptionElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(description); }
*
* //publisher List<String> publishers = record.getPublisher(); for (String
* dcpublisher : publishers) { ElementType publisherElement = new
* ElementType(); publisherElement.setValue(dcpublisher);
* JAXBElement<ElementType> publisher =
* OaiDcObj.createPublisher(publisherElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(publisher); }
*
*
* //contributor List<String> contributors = record.getContributor(); for
* (String dccontributor : contributors) { ElementType contributorElement =
* new ElementType(); contributorElement.setValue(dccontributor);
* JAXBElement<ElementType> contributor =
* OaiDcObj.createContributor(contributorElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(contributor); }
*
* //date List<String> dates = record.getDate(); for (String dcdate : dates)
* { ElementType dateElement = new ElementType();
* dateElement.setValue(dcdate); JAXBElement<ElementType> date =
* OaiDcObj.createDate(dateElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(date); }
*
* //type List<String> types = record.getType(); for (String dctype : types)
* { ElementType typeElement = new ElementType();
* typeElement.setValue(dctype); JAXBElement<ElementType> type =
* OaiDcObj.createType(typeElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(type); }
*
* //format List<String> formats = record.getFormat(); for (String dcformat
* : formats) { ElementType formatElement = new ElementType();
* formatElement.setValue(dcformat); JAXBElement<ElementType> format =
* OaiDcObj.createFormat(formatElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(format); }
*
* //identifier List<String> identifiers = record.getIdentifier(); for
* (String dcidentifier : identifiers) { ElementType identifierElement = new
* ElementType(); identifierElement.setValue(dcidentifier);
* JAXBElement<ElementType> identifier =
* OaiDcObj.createIdentifier(identifierElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(identifier); }
*
* //source List<String> sources = record.getSource(); for (String dcsource
* : sources) { ElementType sourceElement = new ElementType();
* sourceElement.setValue(dcsource); JAXBElement<ElementType> source =
* OaiDcObj.createSource(sourceElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(source); }
*
* //language List<String> languages = record.getLanguage(); for (String
* dclanguage : languages) { ElementType languageElement = new
* ElementType(); languageElement.setValue(dclanguage);
* JAXBElement<ElementType> language =
* OaiDcObj.createLanguage(languageElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(language); }
*
* //relation List<String> relations = record.getRelation(); for (String
* dcrelation : relations) { ElementType relationElement = new
* ElementType(); relationElement.setValue(dcrelation);
* JAXBElement<ElementType> relation =
* OaiDcObj.createRelation(relationElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(relation); }
*
* //coverage List<String> coverages = record.getCoverage(); for (String
* dccoverage : coverages) { ElementType coverageElement = new
* ElementType(); coverageElement.setValue(dccoverage);
* JAXBElement<ElementType> coverage =
* OaiDcObj.createCoverage(coverageElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(coverage); }
*
* //rights List<String> rightsList = record.getRights(); for (String
* dcrights : rightsList) { ElementType rightsElement = new ElementType();
* rightsElement.setValue(dcrights); JAXBElement<ElementType> rights =
* OaiDcObj.createRights(rightsElement);
* oaiDcType.getTitleOrCreatorOrSubject().add(rights); }
*
* return oaiDcType;
*
* }
*/
/*
* public static String writeAIP(AIPModel aip) throws JAXBException{
*
* JAXBContext context =
* JAXBContext.newInstance(Constants.pprimeDefaultPersistenceUnitName);
*
* StringWriter sw = new StringWriter(); Marshaller marshaller =
* context.createMarshaller();
* marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new
* Boolean(true));
*
* marshaller.marshal(aip.getMetsType(), sw);
*
* return sw.toString(); }
*/
}