package tr.com.srdc.mdr.core.impl.composite; import java.util.List; import tr.com.srdc.mdr.core.model.Abbreviation; 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.ConceptualDomainResource; import tr.com.srdc.mdr.core.model.iso11179.composite.ConceptualDomainRelationshipAssociationResource; import tr.com.srdc.mdr.core.model.iso11179.composite.ConceptualDomainRelationshipResource; 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; /** * * ConceptualDomainRelationshipAssociation represents the relation between * <ul> * <li>ConceptualDomain Relationship</li> * <li>Association Among ConceptualDomain s</li> * </ul> * <br> * Since {@link Abbreviation} backed by Jena TripleStore, such an holder class is * required for n-ary relations * * @author anil * */ public class ConceptualDomainRelationshipAssociationImpl extends AbstractMDRResource implements ConceptualDomainRelationshipAssociationResource { /** * Instead of calling the constructor of this class, use * {@link MDRResourceFactory#createConceptualDomainRelationshipAssociation(ConceptualDomainRelationshipResource)} * to avoid entering illegal states. * * @param n * Mostly created by <code>Node.createURI()</code> * @param g * The graph which holds all triples. * @param describedByConceptualDomainRelationship * ConceptualDomainRelationship which Describes the assoiaciation * @param mdrDatabase */ public ConceptualDomainRelationshipAssociationImpl( Node n, EnhGraph g, ConceptualDomainRelationshipResource describedByConceptualDomainRelationship, MDRDatabase mdrDatabase) { super(n, g, mdrDatabase); setSuperClass(mdrDatabase.getVocabulary().ConceptualDomainRelationshipAssociation); setDescribedByConceptualDomainRelationship(describedByConceptualDomainRelationship); } public ConceptualDomainRelationshipAssociationImpl(Resource resource, MDRDatabase mdrDatabase) { super(resource, mdrDatabase); } @Override public void setDescribedByConceptualDomainRelationship( ConceptualDomainRelationshipResource describedByConceptualDomainRelationship) { if (describedByConceptualDomainRelationship == null) { throw new IllegalArgumentException( "Data Element Concept Relationship must be specfied for ConceptualDomainRelationshipAssociation."); } setPropertyValue( mdrDatabase.getVocabulary().describedByConceptualDomainRelationship, describedByConceptualDomainRelationship); } @Override public ConceptualDomainRelationshipResource getDescribedByConceptualDomainRelationship() { Resource describedByConceptualDomainRelationship = getPropertyResourceValue(mdrDatabase .getVocabulary().describedByConceptualDomainRelationship); return new ConceptualDomainRelationshipImpl( describedByConceptualDomainRelationship, mdrDatabase); } @Override public void addRelatingConceptualDomainRelationship( ConceptualDomainResource relatingConceptualDomainRelationship) { if (relatingConceptualDomainRelationship == null) { throw new IllegalArgumentException( "Null is not allowed as a value of the property to be added."); } addProperty( mdrDatabase.getVocabulary().relatingConceptualDomainRelationship, relatingConceptualDomainRelationship); } @Override public void removeRelatingConceptualDomainRelationship( ConceptualDomainResource relatingConceptualDomainRelationship) { if (relatingConceptualDomainRelationship == null) { throw new IllegalArgumentException( "Null is not allowed as a value of the property to be removed."); } removeProperty( mdrDatabase.getVocabulary().relatingConceptualDomainRelationship, relatingConceptualDomainRelationship); } @Override public List<ConceptualDomainResource> getRelatingConceptualDomainRelationships() throws MDRException { NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().relatingConceptualDomainRelationship); return mdrDatabase.getUtil().createList(it, ConceptualDomainResource.class); } // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ///// High-Level Interface Methods//////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// @Override public ConceptualDomainRelationshipAssociationResource asMDRResource() { return this; } }