/** * Adds an executable plan t2flow to the parent. * * @param t2flow the t2flow to add * @param parent the parent element of the element to create * @return the newly created element or null if none was created * @throws TavernaParserException if the workflow could not be parsed * @throws StorageException if the data could not be loaded */ private Element addPreservationActionPlanT2flow(DigitalObject t2flow, Element parent) throws TavernaParserException, StorageException { Element executablePlan = null; if (t2flow != null && t2flow.isDataExistent()) { executablePlan = parent.addElement("executablePlan").addAttribute("type", "t2flow"); if (!addDigitalObjectData) { // Add only DigitalObject ID, it can be replaced later executablePlan.setText(String.valueOf(t2flow.getId())); } else { DigitalObject t2flowObject = t2flow; try { if (t2flowObject.getData().getData() == null || t2flowObject.getData().getData().length == 0) { t2flowObject = digitalObjectManager.getCopyOfDataFilledDigitalObject(t2flowObject); } T2FlowParser parser = T2FlowParser.createParser(new ByteArrayInputStream(t2flowObject.getData().getData())); Document doc = parser.getDoc(); executablePlan.add(doc.getRootElement()); } finally { t2flowObject = null; } } } return executablePlan; }
/** * Adds data for the preservation action plan to the parent element. * * @param collectionProfile source of the data * @param parent the parent element of the element to create * @return the newly created element or null if none was created * @throws ParserException if the collection profile could not be parsed * @throws StorageException if the data could not be loaded */ private Element addPreservationActionPlanData(CollectionProfile collectionProfile, Element parent) throws ParserException, StorageException { Element collection = null; if (collectionProfile != null) { collection = parent.addElement("collection"); collection.addAttribute("uid", collectionProfile.getCollectionID()); // TODO: Collection has no name // collection.addAttribute("name", // p.getSampleRecordsDefinition().getCollectionProfile().getCollectionID()); // Objects Element objects = parent.addElement("objects"); DigitalObject profileObject = collectionProfile.getProfile(); try { if (profileObject != null && profileObject.isDataExistent()) { if (!addDigitalObjectData) { objects.setText(String.valueOf(profileObject.getId())); } else { if (profileObject.getData().getData() == null || profileObject.getData().getData().length == 0) { profileObject = digitalObjectManager.getCopyOfDataFilledDigitalObject(profileObject); } C3POProfileParser parser = new C3POProfileParser(); parser.read(new ByteArrayInputStream(profileObject.getData().getData()), false); List<String> objectIdentifiers = parser.getObjectIdentifiers(); for (String objectIdentifier : objectIdentifiers) { objects.addElement("object").addAttribute("uid", objectIdentifier); } } } } finally { profileObject = null; } } return collection; }