X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FSimpleDocBinding.java;h=895bb0ffc596ff64182cd1bdc2c91681d4acebd2;hb=844ccad5a3fcbedec17b2af66d460f31abc7cff1;hp=68157060d11747ec74301c2a908b2a913102c521;hpb=a3440159d11615fae0dc30e124c3d906386c5d5f;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/SimpleDocBinding.java b/src/uk/ac/vamsas/client/simpleclient/SimpleDocBinding.java index 6815706..895bb0f 100644 --- a/src/uk/ac/vamsas/client/simpleclient/SimpleDocBinding.java +++ b/src/uk/ac/vamsas/client/simpleclient/SimpleDocBinding.java @@ -1,139 +1,180 @@ -package uk.ac.vamsas.client.simpleclient; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.Vector; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import uk.ac.vamsas.client.Vobject; -import uk.ac.vamsas.client.VorbaIdFactory; -import uk.ac.vamsas.client.VorbaXmlBinder; -import uk.ac.vamsas.objects.core.VAMSAS; -import uk.ac.vamsas.objects.core.VamsasDocument; -import uk.ac.vamsas.objects.utils.AppDataReference; -import uk.ac.vamsas.objects.utils.DocumentStuff; -import uk.ac.vamsas.objects.utils.ProvenanceStuff; -import uk.ac.vamsas.objects.utils.document.VersionEntries; - -/** - * Base class for SimpleClient Vamsas Document Object Manipulation - * holds static vamsasDocument from XML routines and - * state objects for a particular unmarshalled Document instance. - * @author jimp - */ - - -public class SimpleDocBinding { - - protected VorbaIdFactory vorba; - protected static Log log = LogFactory.getLog(SimpleDocBinding.class); - - /** - * @return Returns the vorba. - */ - public VorbaIdFactory getVorba() { - return vorba; - } - - /** - * @param vorba The vorba to set. - */ - public void setVorba(VorbaIdFactory vorba) { - this.vorba = vorba; - } - - /** - * Uses VorbaXmlBinder to retrieve the VamsasDocument from the given stream - */ - public VamsasDocument getVamsasDocument(VamsasArchiveReader oReader) throws IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException { - if (oReader!=null) { - // check the factory - if (vorba==null) { - log.error("Invalid SimpleDocument construction - no VorbaIdFactory defined!"); - return null; - } - - if (oReader.isValid()) { - // Read vamsasDocument.xsd instance - InputStreamReader vdoc = new InputStreamReader(oReader.getVamsasDocumentStream()); - Object unmarsh[] = VorbaXmlBinder.getVamsasObjects(vdoc, vorba, new VamsasDocument()); - if (unmarsh==null) - log.fatal("Couldn't unmarshall document!"); - - Vobject vobjs = (Vobject) unmarsh[0]; - if (vobjs!=null) { - VamsasDocument doc=(VamsasDocument) vobjs; - if (doc!=null) - return doc; - } - log.debug("Found no VamsasDocument object in properly formatted Vamsas Archive."); - } else { - // deprecated data handler (vamsas.xsd instance) - InputStream vxmlis = oReader.getVamsasXmlStream(); - if (vxmlis!=null) { // Might be an old vamsas file. - BufferedInputStream ixml = new BufferedInputStream(oReader.getVamsasXmlStream()); - InputStreamReader vxml = new InputStreamReader(ixml); - Object unmarsh[] = VorbaXmlBinder.getVamsasObjects(vxml, vorba, new VAMSAS()); - - if (unmarsh==null) - log.fatal("Couldn't unmarshall document!"); - - VAMSAS root[]= new VAMSAS[] { null}; - root[0] = (VAMSAS) unmarsh[0]; - - if (root[0]==null) { - log.debug("Found no VAMSAS object in VamsasXML stream."); - } else { - log.debug("Making new VamsasDocument from VamsasXML stream."); - VamsasDocument doc = DocumentStuff.newVamsasDocument(root, - ProvenanceStuff.newProvenance( - vorba.getUserHandle().getFullName(), - "Vamsas Document constructed from vamsas.xml"), VersionEntries.ALPHA_VERSION); - // VAMSAS: decide on 'system' operations provenance form - // LATER: implement classes for translating Vorba properties into provenance user fields. - // VAMSAS: decide on machine readable info embedding in provenance should be done - root[0]=null; - root=null; - return doc; - } - } - } - } - // otherwise - there was no valid original document to read. - return null; - } - - /** - * Extract all jarEntries in an archive referenced by the vamsas document - * LATER: a family of methods for finding extraneous jarEntries , and invalid appDataReferences - * @param doc - * @param oReader - * @return array of the subset of JarEntry names that are referenced in doc - */ - public Vector getReferencedEntries(VamsasDocument doc, VamsasArchiveReader oReader) { - if (oReader==null) - return null; - if (doc==null) { - try { doc = getVamsasDocument(oReader); } - catch (Exception e) { log.warn("Failed to get document from "+oReader.jfileName); }; - } - Vector docrefs = AppDataReference.getAppDataReferences(doc); - if (docrefs==null) - return null; - Vector entries = oReader.getExtraEntries(); - if (entries!=null && entries.size()>0 && docrefs.size()>0) { - int i=0, j=entries.size(); - do { - if (!docrefs.contains(entries.get(i))) { - entries.remove(i); - j--; - } else - i++; - } while (i. + */ +package uk.ac.vamsas.client.simpleclient; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Vector; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import uk.ac.vamsas.client.Vobject; +import uk.ac.vamsas.client.VorbaIdFactory; +import uk.ac.vamsas.client.VorbaXmlBinder; +import uk.ac.vamsas.objects.core.VAMSAS; +import uk.ac.vamsas.objects.core.VamsasDocument; +import uk.ac.vamsas.objects.utils.AppDataReference; +import uk.ac.vamsas.objects.utils.DocumentStuff; +import uk.ac.vamsas.objects.utils.ProvenanceStuff; +import uk.ac.vamsas.objects.utils.document.VersionEntries; + +/** + * Base class for SimpleClient Vamsas Document Object Manipulation holds static + * vamsasDocument from XML routines and state objects for a particular + * unmarshalled Document instance. + * + * @author jimp + */ + +public class SimpleDocBinding { + + protected VorbaIdFactory vorba; + + protected static Log log = LogFactory.getLog(SimpleDocBinding.class); + + /** + * @return Returns the vorba. + */ + public VorbaIdFactory getVorba() { + return vorba; + } + + /** + * @param vorba + * The vorba to set. + */ + public void setVorba(VorbaIdFactory vorba) { + this.vorba = vorba; + } + + /** + * Uses VorbaXmlBinder to retrieve the VamsasDocument from the given stream + */ + public VamsasDocument getVamsasDocument(VamsasArchiveReader oReader) + throws IOException, org.exolab.castor.xml.MarshalException, + org.exolab.castor.xml.ValidationException { + if (oReader != null) { + // check the factory + if (vorba == null) { + log + .error("Invalid SimpleDocument construction - no VorbaIdFactory defined!"); + return null; + } + + if (oReader.isValid()) { + // Read vamsasDocument.xsd instance + InputStreamReader vdoc = new InputStreamReader(oReader + .getVamsasDocumentStream()); + Object unmarsh[] = VorbaXmlBinder.getVamsasObjects(vdoc, vorba, + new VamsasDocument()); + if (unmarsh == null) + log.fatal("Couldn't unmarshall document!"); + + Vobject vobjs = (Vobject) unmarsh[0]; + if (vobjs != null) { + VamsasDocument doc = (VamsasDocument) vobjs; + if (doc != null) + return doc; + } + log + .debug("Found no VamsasDocument object in properly formatted Vamsas Archive."); + } else { + // deprecated data handler (vamsas.xsd instance) + InputStream vxmlis = oReader.getVamsasXmlStream(); + if (vxmlis != null) { // Might be an old vamsas file. + BufferedInputStream ixml = new BufferedInputStream(oReader + .getVamsasXmlStream()); + InputStreamReader vxml = new InputStreamReader(ixml); + Object unmarsh[] = VorbaXmlBinder.getVamsasObjects(vxml, vorba, + new VAMSAS()); + + if (unmarsh == null) + log.fatal("Couldn't unmarshall document!"); + + VAMSAS root[] = new VAMSAS[] { null }; + root[0] = (VAMSAS) unmarsh[0]; + + if (root[0] == null) { + log.debug("Found no VAMSAS object in VamsasXML stream."); + } else { + log.debug("Making new VamsasDocument from VamsasXML stream."); + VamsasDocument doc = DocumentStuff.newVamsasDocument(root, + ProvenanceStuff.newProvenance(vorba.getUserHandle() + .getFullName(), + "Vamsas Document constructed from vamsas.xml"), + VersionEntries.ALPHA_VERSION); + // VAMSAS: decide on 'system' operations provenance form + // LATER: implement classes for translating Vorba properties into + // provenance user fields. + // VAMSAS: decide on machine readable info embedding in provenance + // should be done + root[0] = null; + root = null; + return doc; + } + } + } + } + // otherwise - there was no valid original document to read. + return null; + } + + /** + * Extract all jarEntries in an archive referenced by the vamsas document + * LATER: a family of methods for finding extraneous jarEntries , and invalid + * appDataReferences + * + * @param doc + * @param oReader + * @return array of the subset of JarEntry names that are referenced in doc + */ + public Vector getReferencedEntries(VamsasDocument doc, + VamsasArchiveReader oReader) { + if (oReader == null) + return null; + if (doc == null) { + try { + doc = getVamsasDocument(oReader); + } catch (Exception e) { + log.warn("Failed to get document from " + oReader.jfileName); + } + ; + } + Vector docrefs = AppDataReference.getAppDataReferences(doc); + if (docrefs == null) + return null; + Vector entries = oReader.getExtraEntries(); + if (entries != null && entries.size() > 0 && docrefs.size() > 0) { + int i = 0, j = entries.size(); + do { + if (!docrefs.contains(entries.get(i))) { + entries.remove(i); + j--; + } else + i++; + } while (i < j); + } + return entries; + } +}