package tr.com.srdc.mdr.core.impl.ai;
import java.util.List;
import tr.com.srdc.mdr.core.api.ai.NonEnumeratedValueDomain;
import tr.com.srdc.mdr.core.api.composite.Datatype;
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.AdministeredItemResource;
import tr.com.srdc.mdr.core.model.iso11179.ConceptualDomainResource;
import tr.com.srdc.mdr.core.model.iso11179.NonEnumeratedConceptualDomainResource;
import tr.com.srdc.mdr.core.model.iso11179.NonEnumeratedValueDomainResource;
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;
/**
*
* A Conceptual Domain that is not specified by a list of all valid Value
* Meanings.
*
* @author serike
*
*/
public class NonEnumeratedConceptualDomainImpl extends ConceptualDomainImpl
implements NonEnumeratedConceptualDomainResource {
/**
* Instead of calling the constructor of this class, use
* {@link MDRResourceFactory#createNonEnumeratedConceptualDomain(AdministrationRecordResource, String, StewardshipRelationshipResource, SubmissionRelationshipResource, RegistrationAuthorityResource, AdministeredItemContextResource, String)
* to avoid entering illegal states.
*
* @param n
* Mostly created by <code>Node.createURI()</code>.
* @param g
* The graph which holds all triples.
* @param conceptualDomainAdministrationRecord
* The AdministrationRecord for a {@link ConceptualDomainResource}.
* @param dimensionality
* Optional. An expression of measurement without units.
* @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 nonEnumeratedConceptualDomainDescription
* A description or specification of a rule, reference, or range
* for a set of all Value Meanings for the Conceptual Domain.
* @param mdrDatabase
* @param administretedBy
* An Administered Item is administered by an
* {@link OrganizationResource} represented by the
* {@link StewardshipRelationshipResource}.
*
*/
public NonEnumeratedConceptualDomainImpl(Node n, EnhGraph g,
AdministrationRecordResource conceptualDomainAdministrationRecord,
String dimensionality,
StewardshipRelationshipResource administeredBy,
SubmissionRelationshipResource submittedBy,
RegistrationAuthorityResource registeredBy,
AdministeredItemContextResource having,
String nonEnumeratedConceptualDomainDescription,
MDRDatabase mdrDatabase) {
super(n, g, conceptualDomainAdministrationRecord, dimensionality,
administeredBy, submittedBy, registeredBy, having, mdrDatabase);
setSuperClass(mdrDatabase.getVocabulary().NonEnumeratedConceptualDomain);
setNonEnumeratedConceptualDomainDescription(nonEnumeratedConceptualDomainDescription);
}
public NonEnumeratedConceptualDomainImpl(Resource resource,
MDRDatabase mdrDatabase) {
super(resource, mdrDatabase);
}
@Override
public void setNonEnumeratedConceptualDomainDescription(
String nonEnumeratedConceptualDomainDescription) {
if (Util.isNull(nonEnumeratedConceptualDomainDescription)) {
throw new IllegalArgumentException(
"Non Enumerated Conceptual Domain Description must be specified for Non Enumerated Conceptual Domain.");
}
setPropertyValue(
mdrDatabase.getVocabulary().nonEnumeratedConceptualDomainDescription,
mdrDatabase.getUtil().createTypedLiteral(
nonEnumeratedConceptualDomainDescription));
}
@Override
public String getNonEnumeratedConceptualDomainDescription() {
return getPropertyValue(
mdrDatabase.getVocabulary().nonEnumeratedConceptualDomainDescription)
.asLiteral().getString();
}
@Override
public void addRepresentedByNonEnumeratedConceptualDomainRepresentation(
NonEnumeratedValueDomainResource representedByNonEnumeratedConceptualDomainRepresentation) {
if (representedByNonEnumeratedConceptualDomainRepresentation == null) {
throw new IllegalArgumentException(
"Null is not allowed as the value of the property to be added.");
}
addProperty(
mdrDatabase.getVocabulary().representedByNonEnumeratedConceptualDomainRepresentation,
representedByNonEnumeratedConceptualDomainRepresentation);
}
@Override
public List<NonEnumeratedValueDomainResource> getRepresentedByNonEnumeratedConceptualDomainRepresentations()
throws MDRException {
NodeIterator it = listPropertyValues(mdrDatabase.getVocabulary().representedByNonEnumeratedConceptualDomainRepresentation);
return mdrDatabase.getUtil().createList(it,
NonEnumeratedValueDomainResource.class);
}
@Override
public void removeRepresentedByNonEnumeratedConceptualDomainRepresentation(
NonEnumeratedValueDomainResource representedByNonEnumeratedConceptualDomainRepresentation) {
if (representedByNonEnumeratedConceptualDomainRepresentation == null) {
throw new IllegalArgumentException(
"Null is not allowed as the value of the property to be removed.");
}
removeProperty(
mdrDatabase.getVocabulary().representedByNonEnumeratedConceptualDomainRepresentation,
representedByNonEnumeratedConceptualDomainRepresentation);
}
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// ///// High-Level Interface Methods////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
@Override
public NonEnumeratedConceptualDomainResource asMDRResource() {
return this;
}
@Override
public String getDomainDescription() {
return this.getNonEnumeratedConceptualDomainDescription();
}
@Override
public NonEnumeratedValueDomain createNonEnumeratedValueDomain(String name,
String definition, Datatype dataType) {
return getContext().createNonEnumeratedValueDomain(this, name,
definition, dataType);
}
@Override
public boolean isEnumeratedConceptualDomain() {
return false;
}
}