private void appendDisseminators(DigitalObject obj, PrintWriter writer) throws ObjectIntegrityException { Iterator<String> dissIdIter = obj.disseminatorIdIterator(); while (dissIdIter.hasNext()) { String did = dissIdIter.next(); Disseminator diss = DOTranslationUtility.setDisseminatorDefaults(obj.disseminators(did).get(0)); writer.print("<"); writer.print(METS.prefix); writer.print(":behaviorSec ID=\""); writer.print(did); writer.print("\" STATUS=\""); writer.print(diss.dissState); writer.print("\">\n"); for (int i = 0; i < obj.disseminators(did).size(); i++) { diss = DOTranslationUtility.setDisseminatorDefaults(obj.disseminators(did).get(i)); writer.print("<"); writer.print(METS.prefix); writer.print(":serviceBinding ID=\""); writer.print(diss.dissVersionID); writer.print("\" STRUCTID=\""); writer.print(diss.dsBindMapID); writer.print("\" BTYPE=\""); writer.print(diss.bDefID); writer.print("\" CREATED=\""); writer.print(DateUtility.convertDateToString(diss.dissCreateDT)); writer.print("\""); if (diss.dissLabel != null && !diss.dissLabel.equals("")) { writer.print(" LABEL=\""); writer.print(StreamUtility.enc(diss.dissLabel)); writer.print("\""); } writer.print(">\n"); writer.print("<"); writer.print(METS.prefix); writer.print(":interfaceMD LOCTYPE=\"URN\" "); writer.print(XLINK.prefix); writer.print(":href=\""); writer.print(diss.bDefID); writer.print("\"/>\n"); writer.print("<"); writer.print(METS.prefix); writer.print(":serviceBindMD LOCTYPE=\"URN\" "); writer.print(XLINK.prefix); writer.print(":href=\""); writer.print(diss.sDepID); writer.print("\"/>\n"); writer.print("</"); writer.print(METS.prefix); writer.print(":serviceBinding>\n"); } writer.print("</"); writer.print(METS.prefix); writer.print(":behaviorSec>\n"); } }
private void appendStructMaps(DigitalObject obj, PrintWriter writer) throws ObjectIntegrityException { Iterator<String> dissIdIter = obj.disseminatorIdIterator(); while (dissIdIter.hasNext()) { String did = dissIdIter.next(); Iterator<Disseminator> dissIter = obj.disseminators(did).iterator(); while (dissIter.hasNext()) { Disseminator diss = DOTranslationUtility.setDisseminatorDefaults(dissIter.next()); writer.print("<"); writer.print(METS.prefix); writer.print(":structMap ID=\""); writer.print(diss.dsBindMapID); writer.print("\" TYPE=\"fedora:dsBindingMap\">\n"); writer.print("<"); writer.print(METS.prefix); writer.print(":div TYPE=\""); writer.print(diss.sDepID); writer.print("\""); if (diss.dsBindMap.dsBindMapLabel != null && !diss.dsBindMap.dsBindMapLabel.equals("")) { writer.print(" LABEL=\""); writer.print(StreamUtility.enc(diss.dsBindMap.dsBindMapLabel)); writer.print("\""); } writer.print(">\n"); DSBinding[] bindings = diss.dsBindMap.dsBindings; for (int i = 0; i < bindings.length; i++) { if (bindings[i].bindKeyName == null || bindings[i].bindKeyName.equals("")) { throw new ObjectIntegrityException( "Object's disseminator" + " binding map binding must have a binding key name."); } writer.print("<"); writer.print(METS.prefix); writer.print(":div TYPE=\""); writer.print(bindings[i].bindKeyName); if (bindings[i].bindLabel != null && !bindings[i].bindLabel.equals("")) { writer.print("\" LABEL=\""); writer.print(StreamUtility.enc(bindings[i].bindLabel)); } if (bindings[i].seqNo != null && !bindings[i].seqNo.equals("")) { writer.print("\" ORDER=\""); writer.print(bindings[i].seqNo); } if (bindings[i].datastreamID == null || bindings[i].datastreamID.equals("")) { throw new ObjectIntegrityException( "Object's disseminator" + " binding map binding must point to a datastream."); } writer.print("\">\n<"); writer.print(METS.prefix); writer.print(":fptr FILEID=\""); writer.print(bindings[i].datastreamID); writer.print("\"/>\n"); writer.print("</"); writer.print(METS.prefix); writer.print(":div>\n"); } writer.print("</"); writer.print(METS.prefix); writer.print(":div>\n"); writer.print("</"); writer.print(METS.prefix); writer.print(":structMap>\n"); } } }