From: jprocter Date: Tue, 17 Jan 2006 10:37:39 +0000 (+0000) Subject: fixed the User element and the form of the ApplicationData dataType.xsd definition. X-Git-Tag: Release_0.2~380 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=2b329d524c11576c358e631d2005640fd51b1c55;p=vamsas.git fixed the User element and the form of the ApplicationData dataType.xsd definition. git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@140 be28352e-c001-0410-b1a7-c7978e42abec --- diff --git a/schemas/document.xml b/schemas/document.xml index 633b63b..9bdefd8 100644 --- a/schemas/document.xml +++ b/schemas/document.xml @@ -2,9 +2,15 @@ - - - + alpha + some kind of resolvable session reference. + + + Jim + updated the xml schema + 2006-01-17 + + @@ -99,6 +105,11 @@ - + + name of accompanying jar entry containing data + + another accompanying jar entry or the data tag with embedded data. + + diff --git a/schemas/vamsas.xsd b/schemas/vamsas.xsd index 1a04095..745bcb4 100644 --- a/schemas/vamsas.xsd +++ b/schemas/vamsas.xsd @@ -153,6 +153,18 @@ + + + + + + + + + + + + @@ -161,21 +173,9 @@ - - - - - - - - - - - - - - - - + + + + diff --git a/src/org/vamsas/client/ClientHandle.java b/src/org/vamsas/client/ClientHandle.java index 15add1a..76666f9 100644 --- a/src/org/vamsas/client/ClientHandle.java +++ b/src/org/vamsas/client/ClientHandle.java @@ -18,6 +18,7 @@ public class ClientHandle implements Serializable { super(); this.clientName = clientName; this.version = version; + this.setClientUrn("vamsas://"+clientName+":"+version+"/"); // TODO: decide on application handle ornthing (used to prefix new ids made by a particular application) } /** * (non-unique) human readable vamsas client name diff --git a/src/org/vamsas/client/VorbaXmlBinder.java b/src/org/vamsas/client/VorbaXmlBinder.java index ec6c7f4..c172de3 100644 --- a/src/org/vamsas/client/VorbaXmlBinder.java +++ b/src/org/vamsas/client/VorbaXmlBinder.java @@ -30,7 +30,7 @@ import org.vamsas.objects.core.VamsasDocument; * to avoid validation exceptions when marshalling new objects * into the vamsas document. */ -public class VorbaXmlBinder extends GeneralizedFieldHandler implements UnmarshalListener, MarshalListener { +public class VorbaXmlBinder implements UnmarshalListener { private final IVorbaIdFactory vorbafactory; private final Vector obj; @@ -131,12 +131,7 @@ public class VorbaXmlBinder extends GeneralizedFieldHandler implements Unmarshal if (doc.__vorba==null) doc.__vorba = vorba; doc.__ensure_instance_ids(); // this may take a while. Do we allow for cyclic references ? - final Vector refstomake = new Vector(); - VorbaXmlBinder binder = new VorbaXmlBinder(vorba, refstomake, vorba.extantids); - Marshaller marshaller = new Marshaller(outstream); - marshaller.setMarshalAsDocument(true); - marshaller.setMarshalListener(binder); - marshaller.marshal(doc); + doc.marshal(outstream); } private static boolean ensure_references(Vector unrefed, Hashtable objrefs) { @@ -208,103 +203,4 @@ public class VorbaXmlBinder extends GeneralizedFieldHandler implements Unmarshal } return null; } - - /* (non-Javadoc) - * @see org.exolab.castor.xml.MarshalListener#postMarshal(java.lang.Object) - */ - public void postMarshal(Object object) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.exolab.castor.xml.MarshalListener#preMarshal(java.lang.Object) - */ - public boolean preMarshal(Object newobj) { - if (newobj instanceof object) { - object nobj = (object) newobj; - nobj.set__stored_in_document(true); - Field fd = null; - try { - if (nobj.isRegisterable()) { - // make sure the id field is set - nobj.__vorba = vorbafactory; - fd = nobj.getClass().getField("_id"); - if (fd.get(nobj) != null) { - fd.set(nobj, nobj.getVorbaId().getId()); - /* all thats needed perhaps - * - *if (idstring.length() > 0) { - if (!objrefs.containsKey(idstring)) { - objrefs.put(idstring, nobj); - nobj.setVorbaId(VorbaId.newId(idstring)); - } else { - System.err.println("Serious problem : duplicate id '"+idstring+"' found! expect badness."); - return false; // TODO: HANDLE duplicate XML ids correctly - }*/ - } - } - } catch (Exception e) { - return false; - }; - - } - return false; - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#convertUponGet(java.lang.Object) - */ - public Object convertUponGet(Object value) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#convertUponSet(java.lang.Object) - */ - public Object convertUponSet(Object value) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#getFieldType() - */ - public Class getFieldType() { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#newInstance(java.lang.Object, java.lang.Object[]) - */ - public Object newInstance(Object parent, Object[] args) throws IllegalStateException { - // TODO Auto-generated method stub - return super.newInstance(parent, args); - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#newInstance(java.lang.Object) - */ - public Object newInstance(Object parent) throws IllegalStateException { - // TODO Auto-generated method stub - return super.newInstance(parent); - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.GeneralizedFieldHandler#setCollectionIteration(boolean) - */ - public void setCollectionIteration(boolean autoCollectionIteration) { - // TODO Auto-generated method stub - super.setCollectionIteration(autoCollectionIteration); - } - - /* (non-Javadoc) - * @see org.exolab.castor.mapping.AbstractFieldHandler#hasValue(java.lang.Object) - */ - public boolean hasValue(Object object) { - // TODO Auto-generated method stub - return super.hasValue(object); - } } \ No newline at end of file diff --git a/src/org/vamsas/client/object.java b/src/org/vamsas/client/object.java index 6498d70..b570101 100644 --- a/src/org/vamsas/client/object.java +++ b/src/org/vamsas/client/object.java @@ -218,7 +218,7 @@ public abstract class object { * cascade through all fields referring to an instance of object * calling the same method on them. * TODO: LATER: properly apply castors own field mechanisms to get at accessors - * + * TODO: FIX CYCLIC __ensure+instance_ids */ protected void __ensure_instance_ids() { if (__vorba==null) diff --git a/src/org/vamsas/client/simpleclient/IdFactory.java b/src/org/vamsas/client/simpleclient/IdFactory.java index c046af5..79ec47c 100644 --- a/src/org/vamsas/client/simpleclient/IdFactory.java +++ b/src/org/vamsas/client/simpleclient/IdFactory.java @@ -26,7 +26,7 @@ public class IdFactory extends VorbaIdFactory { private UserHandle user; private CRC32 unique=new CRC32(); // used to attempt a unique but predictable stream for IDs private String idstring; - int sequence=0; // incrementing value for next new ID + int sequence=1; // incrementing value for next new ID /** * */ @@ -47,8 +47,8 @@ public class IdFactory extends VorbaIdFactory { this.user = user; unique.reset(); unique.update(new Object[] { session, client, user}.toString().getBytes()); - idstring = "vamsas:"+session.getSessionUrn()+":"+unique.getValue()+":"+client.getClientUrn()+"/"; - sequence=0; + // TODO: Ensure format of URNs and use standard composition methods. + idstring = client.getClientUrn()+":"+unique.getValue()+"/"; extantids=new Hashtable(); } @@ -60,10 +60,11 @@ public class IdFactory extends VorbaIdFactory { throw new Error("makeVorbaId called on improperly initialised IdFactory object!"); String newidstring; do { - if (sequence!=0) { + if (sequence>0) { sequence++; } else { idstring+="1/"; + sequence=1; } newidstring=idstring+Integer.toString(sequence); } while (extantids.containsKey(newidstring)); diff --git a/src/org/vamsas/client/simpleclient/VamsasArchive.java b/src/org/vamsas/client/simpleclient/VamsasArchive.java index 721cdf9..39681ad 100644 --- a/src/org/vamsas/client/simpleclient/VamsasArchive.java +++ b/src/org/vamsas/client/simpleclient/VamsasArchive.java @@ -105,7 +105,7 @@ public class VamsasArchive { this.archive = archive; // archive is written in place. virginArchive = true; } - this.openArchive(); + this.openArchive(); // open archive } /** * name of backup of existing archive that has been updated/overwritten. @@ -578,9 +578,9 @@ public class VamsasArchive { if (unmarsh==null) log.fatal("Couldn't unmarshall document!"); - object[] vobjs = (object[]) unmarsh[0]; + object vobjs = (object) unmarsh[0]; if (vobjs!=null) { - VamsasDocument doc=(VamsasDocument) vobjs[0]; + VamsasDocument doc=(VamsasDocument) vobjs; if (doc!=null) return doc; } @@ -621,7 +621,7 @@ public class VamsasArchive { } public void putVamsasDocument(VamsasDocument doc) throws IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException { - VorbaIdFactory vorba = makeDefaultFactory(null); + VorbaIdFactory vorba = makeDefaultFactory(getVorba()); VorbaXmlBinder.putVamsasDocument(getDocumentOutputStream(), vorba, doc); } } diff --git a/src/org/vamsas/objects/core/AppData.java b/src/org/vamsas/objects/core/AppData.java index eef2ff7..a0fb387 100644 --- a/src/org/vamsas/objects/core/AppData.java +++ b/src/org/vamsas/objects/core/AppData.java @@ -15,8 +15,6 @@ import java.io.IOException; import java.io.Reader; import java.io.Serializable; import java.io.Writer; -import java.util.Enumeration; -import java.util.Vector; import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml.Unmarshaller; @@ -38,14 +36,19 @@ implements java.io.Serializable //--------------------------/ /** - * Field _appDataChoice + * Internal choice value storage */ - private org.vamsas.objects.core.AppDataChoice _appDataChoice; + private java.lang.Object _choiceValue; /** - * Field _userList + * Field _data */ - private java.util.Vector _userList; + private byte[] _data; + + /** + * Field _dataReference + */ + private java.lang.String _dataReference; //----------------/ @@ -55,7 +58,6 @@ implements java.io.Serializable public AppData() { super(); - _userList = new Vector(); } //-- org.vamsas.objects.core.AppData() @@ -64,45 +66,6 @@ implements java.io.Serializable //-----------/ /** - * Method addUser - * - * - * - * @param vUser - */ - public void addUser(org.vamsas.objects.core.User vUser) - throws java.lang.IndexOutOfBoundsException - { - _userList.addElement(vUser); - } //-- void addUser(org.vamsas.objects.core.User) - - /** - * Method addUser - * - * - * - * @param index - * @param vUser - */ - public void addUser(int index, org.vamsas.objects.core.User vUser) - throws java.lang.IndexOutOfBoundsException - { - _userList.insertElementAt(vUser, index); - } //-- void addUser(int, org.vamsas.objects.core.User) - - /** - * Method enumerateUser - * - * - * - * @return Enumeration - */ - public java.util.Enumeration enumerateUser() - { - return _userList.elements(); - } //-- java.util.Enumeration enumerateUser() - - /** * Note: hashCode() has not been overriden * * @param obj @@ -119,19 +82,26 @@ implements java.io.Serializable if (obj instanceof AppData) { AppData temp = (AppData)obj; - if (this._appDataChoice != null) { - if (temp._appDataChoice == null) return false; - else if (!(this._appDataChoice.equals(temp._appDataChoice))) + if (this._choiceValue != null) { + if (temp._choiceValue == null) return false; + else if (!(this._choiceValue.equals(temp._choiceValue))) return false; } - else if (temp._appDataChoice != null) + else if (temp._choiceValue != null) return false; - if (this._userList != null) { - if (temp._userList == null) return false; - else if (!(this._userList.equals(temp._userList))) + if (this._data != null) { + if (temp._data == null) return false; + else if (!(this._data.equals(temp._data))) return false; } - else if (temp._userList != null) + else if (temp._data != null) + return false; + if (this._dataReference != null) { + if (temp._dataReference == null) return false; + else if (!(this._dataReference.equals(temp._dataReference))) + return false; + } + else if (temp._dataReference != null) return false; return true; } @@ -139,63 +109,39 @@ implements java.io.Serializable } //-- boolean equals(java.lang.Object) /** - * Returns the value of field 'appDataChoice'. - * - * @return AppDataChoice - * @return the value of field 'appDataChoice'. - */ - public org.vamsas.objects.core.AppDataChoice getAppDataChoice() - { - return this._appDataChoice; - } //-- org.vamsas.objects.core.AppDataChoice getAppDataChoice() - - /** - * Method getUser + * Returns the value of field 'choiceValue'. The field + * 'choiceValue' has the following description: Internal choice + * value storage * - * - * - * @param index - * @return User + * @return Object + * @return the value of field 'choiceValue'. */ - public org.vamsas.objects.core.User getUser(int index) - throws java.lang.IndexOutOfBoundsException + public java.lang.Object getChoiceValue() { - //-- check bounds for index - if ((index < 0) || (index > _userList.size())) { - throw new IndexOutOfBoundsException("getUser: Index value '"+index+"' not in range [0.."+_userList.size()+ "]"); - } - - return (org.vamsas.objects.core.User) _userList.elementAt(index); - } //-- org.vamsas.objects.core.User getUser(int) + return this._choiceValue; + } //-- java.lang.Object getChoiceValue() /** - * Method getUser + * Returns the value of field 'data'. * - * - * - * @return User + * @return byte + * @return the value of field 'data'. */ - public org.vamsas.objects.core.User[] getUser() + public byte[] getData() { - int size = _userList.size(); - org.vamsas.objects.core.User[] mArray = new org.vamsas.objects.core.User[size]; - for (int index = 0; index < size; index++) { - mArray[index] = (org.vamsas.objects.core.User) _userList.elementAt(index); - } - return mArray; - } //-- org.vamsas.objects.core.User[] getUser() + return this._data; + } //-- byte[] getData() /** - * Method getUserCount - * + * Returns the value of field 'dataReference'. * - * - * @return int + * @return String + * @return the value of field 'dataReference'. */ - public int getUserCount() + public java.lang.String getDataReference() { - return _userList.size(); - } //-- int getUserCount() + return this._dataReference; + } //-- java.lang.String getDataReference() /** * Method isValid @@ -244,72 +190,26 @@ implements java.io.Serializable } //-- void marshal(org.xml.sax.ContentHandler) /** - * Method removeAllUser - * - */ - public void removeAllUser() - { - _userList.removeAllElements(); - } //-- void removeAllUser() - - /** - * Method removeUser - * - * - * - * @param index - * @return User - */ - public org.vamsas.objects.core.User removeUser(int index) - { - java.lang.Object obj = _userList.elementAt(index); - _userList.removeElementAt(index); - return (org.vamsas.objects.core.User) obj; - } //-- org.vamsas.objects.core.User removeUser(int) - - /** - * Sets the value of field 'appDataChoice'. - * - * @param appDataChoice the value of field 'appDataChoice'. - */ - public void setAppDataChoice(org.vamsas.objects.core.AppDataChoice appDataChoice) - { - this._appDataChoice = appDataChoice; - } //-- void setAppDataChoice(org.vamsas.objects.core.AppDataChoice) - - /** - * Method setUser - * - * + * Sets the value of field 'data'. * - * @param index - * @param vUser + * @param data the value of field 'data'. */ - public void setUser(int index, org.vamsas.objects.core.User vUser) - throws java.lang.IndexOutOfBoundsException + public void setData(byte[] data) { - //-- check bounds for index - if ((index < 0) || (index > _userList.size())) { - throw new IndexOutOfBoundsException("setUser: Index value '"+index+"' not in range [0.."+_userList.size()+ "]"); - } - _userList.setElementAt(vUser, index); - } //-- void setUser(int, org.vamsas.objects.core.User) + this._data = data; + this._choiceValue = data; + } //-- void setData(byte) /** - * Method setUser - * + * Sets the value of field 'dataReference'. * - * - * @param userArray + * @param dataReference the value of field 'dataReference'. */ - public void setUser(org.vamsas.objects.core.User[] userArray) + public void setDataReference(java.lang.String dataReference) { - //-- copy array - _userList.removeAllElements(); - for (int i = 0; i < userArray.length; i++) { - _userList.addElement(userArray[i]); - } - } //-- void setUser(org.vamsas.objects.core.User) + this._dataReference = dataReference; + this._choiceValue = dataReference; + } //-- void setDataReference(java.lang.String) /** * Method unmarshal diff --git a/src/org/vamsas/objects/core/AppDataDescriptor.java b/src/org/vamsas/objects/core/AppDataDescriptor.java index c667bc8..50377d3 100644 --- a/src/org/vamsas/objects/core/AppDataDescriptor.java +++ b/src/org/vamsas/objects/core/AppDataDescriptor.java @@ -60,7 +60,7 @@ public class AppDataDescriptor extends org.exolab.castor.xml.util.XMLClassDescri xmlName = "appData"; //-- set grouping compositor - setCompositorAsSequence(); + setCompositorAsChoice(); org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; org.exolab.castor.mapping.FieldHandler handler = null; org.exolab.castor.xml.FieldValidator fieldValidator = null; @@ -68,78 +68,80 @@ public class AppDataDescriptor extends org.exolab.castor.xml.util.XMLClassDescri //-- initialize element descriptors - //-- _appDataChoice - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.vamsas.objects.core.AppDataChoice.class, "_appDataChoice", "-error-if-this-is-used-", org.exolab.castor.xml.NodeType.Element); + //-- _data + desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(byte[].class, "_data", "data", org.exolab.castor.xml.NodeType.Element); handler = new org.exolab.castor.xml.XMLFieldHandler() { public java.lang.Object getValue( java.lang.Object object ) throws IllegalStateException { AppData target = (AppData) object; - return target.getAppDataChoice(); + return target.getData(); } public void setValue( java.lang.Object object, java.lang.Object value) throws IllegalStateException, IllegalArgumentException { try { AppData target = (AppData) object; - target.setAppDataChoice( (org.vamsas.objects.core.AppDataChoice) value); + target.setData( (byte[]) value); } catch (java.lang.Exception ex) { throw new IllegalStateException(ex.toString()); } } public java.lang.Object newInstance( java.lang.Object parent ) { - return new org.vamsas.objects.core.AppDataChoice(); + return null; } }; desc.setHandler(handler); - desc.setContainer(true); - desc.setClassDescriptor(new org.vamsas.objects.core.AppDataChoiceDescriptor()); desc.setNameSpaceURI("http://www.vamsas.org"); desc.setRequired(true); desc.setMultivalued(false); addFieldDescriptor(desc); - //-- validation code for: _appDataChoice + //-- validation code for: _data fieldValidator = new org.exolab.castor.xml.FieldValidator(); fieldValidator.setMinOccurs(1); { //-- local scope } desc.setValidator(fieldValidator); - //-- _userList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.vamsas.objects.core.User.class, "_userList", "User", org.exolab.castor.xml.NodeType.Element); + //-- _dataReference + desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_dataReference", "dataReference", org.exolab.castor.xml.NodeType.Element); + desc.setImmutable(true); handler = new org.exolab.castor.xml.XMLFieldHandler() { public java.lang.Object getValue( java.lang.Object object ) throws IllegalStateException { AppData target = (AppData) object; - return target.getUser(); + return target.getDataReference(); } public void setValue( java.lang.Object object, java.lang.Object value) throws IllegalStateException, IllegalArgumentException { try { AppData target = (AppData) object; - target.addUser( (org.vamsas.objects.core.User) value); + target.setDataReference( (java.lang.String) value); } catch (java.lang.Exception ex) { throw new IllegalStateException(ex.toString()); } } public java.lang.Object newInstance( java.lang.Object parent ) { - return new org.vamsas.objects.core.User(); + return null; } }; desc.setHandler(handler); desc.setNameSpaceURI("http://www.vamsas.org"); desc.setRequired(true); - desc.setMultivalued(true); + desc.setMultivalued(false); addFieldDescriptor(desc); - //-- validation code for: _userList + //-- validation code for: _dataReference fieldValidator = new org.exolab.castor.xml.FieldValidator(); fieldValidator.setMinOccurs(1); { //-- local scope + StringValidator typeValidator = new StringValidator(); + typeValidator.setWhiteSpace("preserve"); + fieldValidator.setValidator(typeValidator); } desc.setValidator(fieldValidator); } //-- org.vamsas.objects.core.AppDataDescriptor() diff --git a/src/org/vamsas/objects/core/ApplicationData.java b/src/org/vamsas/objects/core/ApplicationData.java index bb0c99e..37f374d 100644 --- a/src/org/vamsas/objects/core/ApplicationData.java +++ b/src/org/vamsas/objects/core/ApplicationData.java @@ -15,6 +15,8 @@ import java.io.IOException; import java.io.Reader; import java.io.Serializable; import java.io.Writer; +import java.util.Enumeration; +import java.util.Vector; import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml.Unmarshaller; @@ -50,6 +52,11 @@ implements java.io.Serializable */ private java.lang.String _urn; + /** + * Field _userList + */ + private java.util.Vector _userList; + //----------------/ //- Constructors -/ @@ -58,6 +65,7 @@ implements java.io.Serializable public ApplicationData() { super(); + _userList = new Vector(); } //-- org.vamsas.objects.core.ApplicationData() @@ -66,6 +74,45 @@ implements java.io.Serializable //-----------/ /** + * Method addUser + * + * + * + * @param vUser + */ + public void addUser(org.vamsas.objects.core.User vUser) + throws java.lang.IndexOutOfBoundsException + { + _userList.addElement(vUser); + } //-- void addUser(org.vamsas.objects.core.User) + + /** + * Method addUser + * + * + * + * @param index + * @param vUser + */ + public void addUser(int index, org.vamsas.objects.core.User vUser) + throws java.lang.IndexOutOfBoundsException + { + _userList.insertElementAt(vUser, index); + } //-- void addUser(int, org.vamsas.objects.core.User) + + /** + * Method enumerateUser + * + * + * + * @return Enumeration + */ + public java.util.Enumeration enumerateUser() + { + return _userList.elements(); + } //-- java.util.Enumeration enumerateUser() + + /** * Note: hashCode() has not been overriden * * @param obj @@ -103,6 +150,13 @@ implements java.io.Serializable } else if (temp._urn != null) return false; + if (this._userList != null) { + if (temp._userList == null) return false; + else if (!(this._userList.equals(temp._userList))) + return false; + } + else if (temp._userList != null) + return false; return true; } return false; @@ -131,6 +185,54 @@ implements java.io.Serializable } //-- java.lang.String getUrn() /** + * Method getUser + * + * + * + * @param index + * @return User + */ + public org.vamsas.objects.core.User getUser(int index) + throws java.lang.IndexOutOfBoundsException + { + //-- check bounds for index + if ((index < 0) || (index > _userList.size())) { + throw new IndexOutOfBoundsException("getUser: Index value '"+index+"' not in range [0.."+_userList.size()+ "]"); + } + + return (org.vamsas.objects.core.User) _userList.elementAt(index); + } //-- org.vamsas.objects.core.User getUser(int) + + /** + * Method getUser + * + * + * + * @return User + */ + public org.vamsas.objects.core.User[] getUser() + { + int size = _userList.size(); + org.vamsas.objects.core.User[] mArray = new org.vamsas.objects.core.User[size]; + for (int index = 0; index < size; index++) { + mArray[index] = (org.vamsas.objects.core.User) _userList.elementAt(index); + } + return mArray; + } //-- org.vamsas.objects.core.User[] getUser() + + /** + * Method getUserCount + * + * + * + * @return int + */ + public int getUserCount() + { + return _userList.size(); + } //-- int getUserCount() + + /** * Returns the value of field 'version'. * * @return String @@ -188,6 +290,30 @@ implements java.io.Serializable } //-- void marshal(org.xml.sax.ContentHandler) /** + * Method removeAllUser + * + */ + public void removeAllUser() + { + _userList.removeAllElements(); + } //-- void removeAllUser() + + /** + * Method removeUser + * + * + * + * @param index + * @return User + */ + public org.vamsas.objects.core.User removeUser(int index) + { + java.lang.Object obj = _userList.elementAt(index); + _userList.removeElementAt(index); + return (org.vamsas.objects.core.User) obj; + } //-- org.vamsas.objects.core.User removeUser(int) + + /** * Sets the value of field 'name'. * * @param name the value of field 'name'. @@ -208,6 +334,40 @@ implements java.io.Serializable } //-- void setUrn(java.lang.String) /** + * Method setUser + * + * + * + * @param index + * @param vUser + */ + public void setUser(int index, org.vamsas.objects.core.User vUser) + throws java.lang.IndexOutOfBoundsException + { + //-- check bounds for index + if ((index < 0) || (index > _userList.size())) { + throw new IndexOutOfBoundsException("setUser: Index value '"+index+"' not in range [0.."+_userList.size()+ "]"); + } + _userList.setElementAt(vUser, index); + } //-- void setUser(int, org.vamsas.objects.core.User) + + /** + * Method setUser + * + * + * + * @param userArray + */ + public void setUser(org.vamsas.objects.core.User[] userArray) + { + //-- copy array + _userList.removeAllElements(); + for (int i = 0; i < userArray.length; i++) { + _userList.addElement(userArray[i]); + } + } //-- void setUser(org.vamsas.objects.core.User) + + /** * Sets the value of field 'version'. * * @param version the value of field 'version'. diff --git a/src/org/vamsas/objects/core/ApplicationDataDescriptor.java b/src/org/vamsas/objects/core/ApplicationDataDescriptor.java index 213f66b..9e0648e 100644 --- a/src/org/vamsas/objects/core/ApplicationDataDescriptor.java +++ b/src/org/vamsas/objects/core/ApplicationDataDescriptor.java @@ -59,6 +59,9 @@ public class ApplicationDataDescriptor extends org.vamsas.objects.core.AppDataDe setExtendsWithoutFlatten(new org.vamsas.objects.core.AppDataDescriptor()); nsURI = "http://www.vamsas.org"; xmlName = "ApplicationData"; + + //-- set grouping compositor + setCompositorAsSequence(); org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; org.exolab.castor.mapping.FieldHandler handler = null; org.exolab.castor.xml.FieldValidator fieldValidator = null; @@ -183,6 +186,41 @@ public class ApplicationDataDescriptor extends org.vamsas.objects.core.AppDataDe desc.setValidator(fieldValidator); //-- initialize element descriptors + //-- _userList + desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.vamsas.objects.core.User.class, "_userList", "User", org.exolab.castor.xml.NodeType.Element); + handler = new org.exolab.castor.xml.XMLFieldHandler() { + public java.lang.Object getValue( java.lang.Object object ) + throws IllegalStateException + { + ApplicationData target = (ApplicationData) object; + return target.getUser(); + } + public void setValue( java.lang.Object object, java.lang.Object value) + throws IllegalStateException, IllegalArgumentException + { + try { + ApplicationData target = (ApplicationData) object; + target.addUser( (org.vamsas.objects.core.User) value); + } + catch (java.lang.Exception ex) { + throw new IllegalStateException(ex.toString()); + } + } + public java.lang.Object newInstance( java.lang.Object parent ) { + return new org.vamsas.objects.core.User(); + } + }; + desc.setHandler(handler); + desc.setNameSpaceURI("http://www.vamsas.org"); + desc.setMultivalued(true); + addFieldDescriptor(desc); + + //-- validation code for: _userList + fieldValidator = new org.exolab.castor.xml.FieldValidator(); + fieldValidator.setMinOccurs(0); + { //-- local scope + } + desc.setValidator(fieldValidator); } //-- org.vamsas.objects.core.ApplicationDataDescriptor() diff --git a/src/org/vamsas/test/simpleclient/ArchiveReports.java b/src/org/vamsas/test/simpleclient/ArchiveReports.java index 20c433b..998191f 100644 --- a/src/org/vamsas/test/simpleclient/ArchiveReports.java +++ b/src/org/vamsas/test/simpleclient/ArchiveReports.java @@ -2,13 +2,16 @@ package org.vamsas.test.simpleclient; import java.io.InputStream; +import org.vamsas.client.object; import org.vamsas.client.simpleclient.VamsasArchiveReader; import org.vamsas.objects.core.Alignment; +import org.vamsas.objects.core.AppData; import org.vamsas.objects.core.ApplicationData; import org.vamsas.objects.core.DataSet; import org.vamsas.objects.core.Entry; import org.vamsas.objects.core.Provenance; import org.vamsas.objects.core.Tree; +import org.vamsas.objects.core.User; import org.vamsas.objects.core.VAMSAS; import org.vamsas.objects.core.VamsasDocument; /** @@ -36,11 +39,57 @@ public class ArchiveReports { System.out.println(pe[i].getDate()+"\t'"+pe[i].getUser()+"'\t"+pe[i].getAction()); return true; } + public static boolean appDataEntryReport(AppData appD, VamsasArchiveReader archive, boolean cascade) { + if (appD!=null) { + boolean nulldata=false; + if (appD.getDataReference()!=null) { + String appData=appD.getDataReference(); + if (appData==null) { System.out.println("Empty DataReference - not valid ?"); } + else + if (appData.length()>1) { + System.out.print("a reference ("+appData+")"); + InputStream jstrm; + if ((jstrm=archive.getAppdataStream(appData))!=null) + System.out.println(" which resolves to a JarEntry."); + else { + System.out.println(" which does not resolve to a JarEntry."); + System.err.println("Unresolved appdata reference '"+appData+"'"); + } + } else { + nulldata=true; + } + } else { + if (appD.getData()==null) + nulldata &= true; + else + System.out.println("an embedded chunk of "+appD.getData().length+" bytes."); + } + if (nulldata) + System.out.println("Null AppData reference/data chunk."); + } + return true; + } + + public static boolean appDataReport(ApplicationData appD, VamsasArchiveReader archive, boolean cascade) { + if (appD!=null) { + // Report on root appData + appDataEntryReport(appD, archive, cascade); + if (appD.getUserCount()>0) { + User users[] = appD.getUser(); + for (int i=0,j=users.length; i0 && cascade) rootReport(document.getVAMSAS(), true); if (document.getApplicationDataCount()>0) { @@ -48,24 +97,8 @@ public class ArchiveReports { ApplicationData appd[] = document.getApplicationData(); for (int i=0,j=appd.length; i1) { - System.out.print("a reference ("+appData+")"); - InputStream jstrm; - if ((jstrm=archive.getAppdataStream(appData))!=null) - System.out.println(" which resolves to a JarEntry."); - else { - System.out.println(" which does not resolve to a JarEntry."); - System.err.println("Unresolved appdata reference '"+appData+"'"); - } - } else { - System.out.println("an empty reference."); - } - } else { - System.out.println("an embedded chunk of "+appd[i].getAppDataChoice().getData().length+" bytes."); - } + System.out.print("AppData is :"); + appDataReport(appd[i], archive, cascade); } } diff --git a/src/org/vamsas/test/simpleclient/ArchiveWriter.java b/src/org/vamsas/test/simpleclient/ArchiveWriter.java index af4f685..7ce8904 100644 --- a/src/org/vamsas/test/simpleclient/ArchiveWriter.java +++ b/src/org/vamsas/test/simpleclient/ArchiveWriter.java @@ -46,7 +46,7 @@ public class ArchiveWriter { if (!ht.containsKey(appdatas[i].getUrn())) { Hashtable aphash = new Hashtable(); ht.put(appdatas[i].getUrn(), aphash); - aphash.put(appdatas[i], appdatas[i].getAppDataChoice().getDataReference()); + aphash.put(appdatas[i], appdatas[i].getDataReference()); } else { // ensure urns and references are unique diff --git a/src/org/vamsas/test/simpleclient/VamsasArchive.java b/src/org/vamsas/test/simpleclient/VamsasArchive.java index ceae705..91dc35e 100644 --- a/src/org/vamsas/test/simpleclient/VamsasArchive.java +++ b/src/org/vamsas/test/simpleclient/VamsasArchive.java @@ -10,7 +10,6 @@ import java.io.PrintWriter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.vamsas.client.simpleclient.*; -import org.vamsas.objects.core.AppDataChoice; import org.vamsas.objects.core.ApplicationData; import org.vamsas.objects.core.User; import org.vamsas.objects.core.VAMSAS; @@ -55,33 +54,35 @@ public class VamsasArchive { // open another and... ApplicationData appdata = new ApplicationData(); appdata.setName("org.vamsas.test.simpleclient.VamsasArchive"); - appdata.setAppDataChoice(new AppDataChoice()); - appdata.getAppDataChoice().setData(new String("this is some test data.").getBytes()); + appdata.setData(new String("this is some test data.").getBytes()); User apuser = new User(); apuser.setFullname("arnold Bugger esq"); apuser.setOrganization("disOrganised"); String appdata_ref = "vamsas:org.vamsas.test.simpleclient.VamsasArchive/"+apuser.getOrganization()+"/"+apuser.getFullname(); - org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(backup, true); + + + File newf=new File(av.getAbsolutePath()+"_new.zip"); + org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); log.info("Getting the document from the backup-original."); VamsasDocument vadoc; VamsasArchiveReader vread = va.getOriginalArchiveReader(); - vadoc = va.getVamsasDocument(); + vadoc = doc; // putting original data into new archive. log.info("Got document. Adding stuff."); - - if (vread.getAppdataStream(appdata_ref)!=null) { - int i=0; - while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null) + if (vread!=null) { + if (vread.getAppdataStream(appdata_ref)!=null) { + int i=0; + while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null) ; - appdata_ref+="/"+Integer.toString(i); + appdata_ref+="/"+Integer.toString(i); + } } log.info("Writing an apdata reference using AppDataStream interface."); - apuser.setAppDataChoice(new AppDataChoice()); - apuser.getAppDataChoice().setDataReference(appdata_ref); + apuser.setDataReference(appdata_ref); appdata.addUser(apuser); - // TODO: FIX CYCLIC __ensure+instance_ids + appdata.setVersion("noggin"); + appdata.setUrn("program:/the.nog/"); // TODO: FIX schema - User.addUser is unsatisfiable! - apuser.addUser(apuser); ObjectOutputStream apdos = new ObjectOutputStream(va.getAppDataStream(appdata_ref)); apdos.writeObject(appdata_ref); apdos.writeObject(apuser); // some random content @@ -90,11 +91,13 @@ public class VamsasArchive { log.info("Preparing to write new document."); doc.addApplicationData(appdata); doc.addVAMSAS(Core.getDemoVamsas()); + va.putVamsasDocument(doc); // gets stream and puts it. // TODO: verify that the vxml stream close method overridden ? va.closeArchive(); + log.info("Dump of new vamsas document :"); - va = new org.vamsas.client.simpleclient.VamsasArchive(backup, true); // TODO - refactor Reader class to have deserializing helpers + va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); // TODO - refactor Reader class to have deserializing helpers ArchiveReports.reportDocument(va.getVamsasDocument(), va.getOriginalArchiveReader(), true); // backup.delete(); // tidy up }