package tr.com.srdc.mdr.core.impl.composite; import java.util.List; import tr.com.srdc.mdr.core.model.AbstractMDRResource; import tr.com.srdc.mdr.core.model.MDRException; import tr.com.srdc.mdr.core.model.MDRResourceFactory; import tr.com.srdc.mdr.core.model.iso11179.composite.ContactResource; import tr.com.srdc.mdr.core.model.iso11179.composite.StewardshipRelationshipResource; import tr.com.srdc.mdr.core.model.iso11179.composite.StewardshipResource; import tr.com.srdc.mdr.core.store.MDRDatabase; import com.hp.hpl.jena.enhanced.EnhGraph; import com.hp.hpl.jena.graph.Node; import com.hp.hpl.jena.rdf.model.NodeIterator; import com.hp.hpl.jena.rdf.model.Resource; /** * * An Organization shall be identified as the steward responsible for * administering each Administered Item. This relationship identifies a * stewardship contact for the Administered Item. * * @author anil * */ public class StewardshipImpl extends AbstractMDRResource implements StewardshipResource { /** * Instead of calling the constructor of this class, use * {@link MDRResourceFactory#createStewardship(ContactResource)} to avoid * entering illegal states. * * @param n * Mostly created by <code>Node.createURI()</code> * @param g * The graph which holds all triples. * @param stewardshipContact * Steward Responsible Contact Detail of Stewardship * @param mdrDatabase */ public StewardshipImpl(Node n, EnhGraph g, ContactResource stewardshipContact, MDRDatabase mdrDatabase) { super(n, g, mdrDatabase); setSuperClass(mdrDatabase.getVocabulary().Stewardship); setStewardshipContact(stewardshipContact); } public StewardshipImpl(Resource resource, MDRDatabase mdrDatabase) { super(resource, mdrDatabase); } @Override public void setStewardshipContact(ContactResource stewardshipContact) { if (stewardshipContact == null) { throw new IllegalArgumentException( "Stewardship Contact must be specified for Stewardship"); } setPropertyValue(mdrDatabase.getVocabulary().stewardshipContact, stewardshipContact); } @Override public ContactResource getStewardshipContact() { return new ContactImpl( getPropertyResourceValue(mdrDatabase.getVocabulary().stewardshipContact), mdrDatabase); } @Override public void addAdministers(StewardshipRelationshipResource administers) { if (administers == null) { throw new IllegalArgumentException( "Null is not allowed as the value of the property to be added."); } addProperty(mdrDatabase.getVocabulary().administers, administers); } @Override public List<StewardshipRelationshipResource> getAdministers() throws MDRException { NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().administers); return mdrDatabase.getUtil().createList(it, StewardshipRelationshipResource.class); } @Override public void removeAdministers(StewardshipRelationshipResource administers) { if (administers == null) { throw new IllegalArgumentException( "Null is not allowed as the value of the property to be removed."); } removeProperty(mdrDatabase.getVocabulary().administers, administers); } // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ///// High-Level Interface Methods//////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// @Override public StewardshipResource asMDRResource() { return this; } }