package tr.com.srdc.mdr.core.impl.composite; import java.util.List; import tr.com.srdc.mdr.core.impl.ai.ConceptualDomainImpl; 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.Util; 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.RDFNode; import com.hp.hpl.jena.rdf.model.Resource; /** * * A Conceptual Domain may be associated with other ConceptualDomains , via the * Conceptual Domaint Relationship. The nature of the relationship is described * using the Conceptual Domain relationship type description. * * @author anil * */ public class ConceptualDomainRelationshipImpl extends AbstractMDRResource implements ConceptualDomainRelationshipResource { /** * Instead of calling the constructor of this class, use * {@link MDRResourceFactory#createConceptualDomainRelationship(String)} to * avoid entering illegal states. * * @param n * Mostly created by <code>Node.createURI()</code> * @param g * The graph which holds all triples. * @param conceptualDomainRelationshipTypeDescription * Type Description of the Relationship Between * {@link ConceptualDomainImpl}s * @param conceptualDomainRelationshipTypeDescription * @param mdrDatabase */ public ConceptualDomainRelationshipImpl(Node n, EnhGraph g, String conceptualDomainRelationshipTypeDescription, MDRDatabase mdrDatabase) { super(n, g, mdrDatabase); setSuperClass(mdrDatabase.getVocabulary().ConceptualDomainRelationship); setConceptualDomainRelationshipTypeDescription(conceptualDomainRelationshipTypeDescription); } public ConceptualDomainRelationshipImpl(Resource resource, MDRDatabase mdrDatabase) { super(resource, mdrDatabase); } @Override public void setConceptualDomainRelationshipTypeDescription( String conceptualDomainRelationshipTypeDescription) { if (Util.isNull(conceptualDomainRelationshipTypeDescription)) { throw new IllegalArgumentException( "Type Description must be specified for ConceptualDomainRelationship."); } setPropertyValue( mdrDatabase.getVocabulary().conceptualDomainRelationshipTypeDescription, mdrDatabase.getUtil().createTypedLiteral( conceptualDomainRelationshipTypeDescription)); } @Override public String getConceptualDomainRelationshipTypeDescription() { RDFNode conceptualDomainRelationshipTypeDescription = getPropertyValue(mdrDatabase .getVocabulary().conceptualDomainRelationshipTypeDescription); return conceptualDomainRelationshipTypeDescription.asLiteral() .getString(); } @Override public void addDescribingConceptualDomainRelationship( ConceptualDomainRelationshipAssociationResource describingConceptualDomainRelationship) { if (describingConceptualDomainRelationship == null) { throw new IllegalArgumentException( "Null is not allowed as value of the property to be added."); } addProperty( mdrDatabase.getVocabulary().describingConceptualDomainRelationship, describingConceptualDomainRelationship); } @Override public void removeDescribingConceptualDomainRelationship( ConceptualDomainRelationshipAssociationResource describingConceptualDomainRelationship) { if (describingConceptualDomainRelationship == null) { throw new IllegalArgumentException( "Null is not allowed as a value of the property to be removed."); } removeProperty( mdrDatabase.getVocabulary().describingConceptualDomainRelationship, describingConceptualDomainRelationship); } @Override public List<ConceptualDomainRelationshipAssociationResource> getDescribingConceptualDomainRelationships() throws MDRException { NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().describingConceptualDomainRelationship); return mdrDatabase.getUtil().createList(it, ConceptualDomainRelationshipAssociationResource.class); } // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ///// High-Level Interface Methods//////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// // ////////////////////////////////////////////// @Override public ConceptualDomainRelationshipResource asMDRResource() { return this; } }