package tr.com.srdc.mdr.core.impl.ai; import java.util.List; import tr.com.srdc.mdr.core.impl.composite.AdministrationRecordImpl; import tr.com.srdc.mdr.core.model.MDRException; import tr.com.srdc.mdr.core.model.iso11179.AdministeredItemResource; import tr.com.srdc.mdr.core.model.iso11179.DataElementResource; import tr.com.srdc.mdr.core.model.iso11179.RepresentationClassResource; import tr.com.srdc.mdr.core.model.iso11179.ValueDomainResource; import tr.com.srdc.mdr.core.model.iso11179.composite.AdministeredItemContextResource; import tr.com.srdc.mdr.core.model.iso11179.composite.AdministrationRecordResource; import tr.com.srdc.mdr.core.model.iso11179.composite.OrganizationResource; import tr.com.srdc.mdr.core.model.iso11179.composite.RegistrationAuthorityResource; import tr.com.srdc.mdr.core.model.iso11179.composite.StewardshipRelationshipResource; import tr.com.srdc.mdr.core.model.iso11179.composite.SubmissionRelationshipResource; 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; public class RepresentationClassImpl extends AdministeredItemImpl implements RepresentationClassResource { /** * * @param n * Mostly created by <code>Node.createURI()</code>. * @param g * The graph which holds all triples. * @param representationClassAdministrationRecord * Administration Record for the Administered Item * @param administeredBy * An Administered Item is administered by an * {@link OrganizationResource} represented by the * {@link StewardshipRelationshipResource}. * @param submittedBy * An Administered Item is submitted by an * {@link OrganizationResource} represented by the * {@link SubmissionRelationshipResource}. * @param registeredBy * An {@link AdministeredItemResource} is registered by a * {@link RegistrationAuthorityResource}. * @param having * An {@link AdministeredItemResource} has to have at least one * {@link AdministeredItemContextResource}. * @param mdrDatabase */ public RepresentationClassImpl( Node n, EnhGraph g, AdministrationRecordResource representationClassAdministrationRecord, StewardshipRelationshipResource administeredBy, SubmissionRelationshipResource submittedBy, RegistrationAuthorityResource registeredBy, AdministeredItemContextResource having, MDRDatabase mdrDatabase) { super(n, g, administeredBy, submittedBy, registeredBy, having, mdrDatabase); setSuperClass(mdrDatabase.getVocabulary().RepresentationClass); setAdministrationRecord(representationClassAdministrationRecord); } public RepresentationClassImpl(Resource resource, MDRDatabase mdrDatabase) { super(resource, mdrDatabase); } @Override public AdministrationRecordResource getAdministrationRecord() { return new AdministrationRecordImpl( getPropertyResourceValue(mdrDatabase.getVocabulary().representationClassAdministrationRecord), mdrDatabase); } @Override public void setAdministrationRecord( AdministrationRecordResource representationClassAdministrationRecord) { if (representationClassAdministrationRecord == null) { throw new IllegalArgumentException( "Administration Record must be specified for Representation Class."); } setPropertyValue( mdrDatabase.getVocabulary().representationClassAdministrationRecord, representationClassAdministrationRecord); } @Override public void addTypingValueDomainRepresentationClass( ValueDomainResource typingValueDomainRepresentationClass) { if (typingValueDomainRepresentationClass == null) { throw new IllegalArgumentException( "Null is not allowed as the value of the property to be added."); } addProperty( mdrDatabase.getVocabulary().typingValueDomainRepresentationClass, typingValueDomainRepresentationClass); } @Override public List<ValueDomainResource> getTypingValueDomainRepresentationClasses() throws MDRException { NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().typingValueDomainRepresentationClass); return mdrDatabase.getUtil().createList(it, ValueDomainResource.class); } @Override public void removeTypingValueDomainRepresentationClasses( ValueDomainResource typingValueDomainRepresentationClass) { if (typingValueDomainRepresentationClass == null) { throw new IllegalArgumentException( "Null is not allowed as the value of the property to be removed."); } removeProperty( mdrDatabase.getVocabulary().typingValueDomainRepresentationClass, typingValueDomainRepresentationClass); } @Override public void addTypingDataElementRepresentationClass( DataElementResource typingDataElementRepresentationClass) { if (typingDataElementRepresentationClass == null) { throw new IllegalArgumentException( "Null is not allowed as a value for the property to be added."); } addProperty( mdrDatabase.getVocabulary().typingDataElementRepresentationClass, typingDataElementRepresentationClass); } @Override public void removeTypingDataElementRepresentationClass( DataElementResource typingDataElementRepresentationClass) { if (typingDataElementRepresentationClass == null) { throw new IllegalArgumentException( "Null is not allowed as a value for the property to be removed."); } removeProperty( mdrDatabase.getVocabulary().typingDataElementRepresentationClass, typingDataElementRepresentationClass); } @Override public List<DataElementResource> getTypingDataElementRepresentationClasses() throws MDRException { NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().typingDataElementRepresentationClass); return mdrDatabase.getUtil().createList(it, DataElementResource.class); } // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ///// High-Level Interface Methods//////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// @Override public RepresentationClassResource asMDRResource() { return this; } }