package tr.com.srdc.mdr.core.impl.composite;
import tr.com.srdc.mdr.core.model.AbstractMDRResource;
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.ItemIdentifierResource;
import tr.com.srdc.mdr.core.model.iso11179.composite.RegistrationAuthorityIdentifierResource;
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.Resource;
/**
* The composite data type Item Identifier is used to specify the unique
* identifier for an Administered Item.
*
* @author anil
*
*/
public class ItemIdentifierImpl extends AbstractMDRResource implements
ItemIdentifierResource {
/**
* Instead of calling the constructor of this class, use
* {@link MDRResourceFactory#createItemIdentifier(RegistrationAuthorityIdentifierImpl)}
* to avoid entering illegal states.
*
* @param n
* Mostly created by <code>Node.createURI()</code>
* @param g
* The graph which holds all triples.
* @param itemRegistrationAuthorityIdentifier
* The identifier for the owning Registration Authority.
* @param dataIdentifier
* The unique identifier for an Administered Item within a
* Registration Authority
* @param version
* The unique version identifier of the Administered Item
* @param mdrDatabase
*/
public ItemIdentifierImpl(
Node n,
EnhGraph g,
RegistrationAuthorityIdentifierResource itemRegistrationAuthorityIdentifier,
String dataIdentifier, String version, MDRDatabase mdrDatabase) {
super(n, g, mdrDatabase);
setSuperClass(mdrDatabase.getVocabulary().ItemIdentifier);
setItemRegistrationAuthorityIdentifier(itemRegistrationAuthorityIdentifier);
setDataIdentifier(dataIdentifier);
setVersion(version);
}
/**
* Constructor for {@link ItemIdentifierImpl} which constructs the class
* from a given {@link Resource}.
*
* @param resource
* @param mdrDatabase
*/
public ItemIdentifierImpl(Resource resource, MDRDatabase mdrDatabase) {
super(resource, mdrDatabase);
}
@Override
public void setItemRegistrationAuthorityIdentifier(
RegistrationAuthorityIdentifierResource itemRegistrationAuthorityIdentifier) {
if (itemRegistrationAuthorityIdentifier == null) {
throw new IllegalArgumentException(
"Registration Authority Identifier must be specified for ItemIdentifier.");
}
setPropertyValue(
mdrDatabase.getVocabulary().itemRegistrationAuthorityIdentifier,
itemRegistrationAuthorityIdentifier);
}
@Override
public RegistrationAuthorityIdentifierImpl getItemRegistrationAuthorityIdentifier() {
return new RegistrationAuthorityIdentifierImpl(
getPropertyResourceValue(mdrDatabase.getVocabulary().itemRegistrationAuthorityIdentifier),
mdrDatabase);
}
@Override
public void setDataIdentifier(String dataIdentifier) {
if (Util.isNull(dataIdentifier)) {
throw new IllegalArgumentException(
"Data Identifier must be specified for ItemIdentifier.");
}
setPropertyValue(mdrDatabase.getVocabulary().dataIdentifier,
mdrDatabase.getUtil().createTypedLiteral(dataIdentifier));
}
@Override
public String getDataIdentifier() {
return getPropertyValue(mdrDatabase.getVocabulary().dataIdentifier)
.asLiteral().getString();
}
@Override
public void setVersion(String version) {
if (Util.isNull(version)) {
throw new IllegalArgumentException(
"Version must be specified for ItemIdentifier.");
}
setPropertyValue(mdrDatabase.getVocabulary().version, mdrDatabase
.getUtil().createTypedLiteral(version));
}
@Override
public String getVersion() {
return getPropertyValue(mdrDatabase.getVocabulary().version)
.asLiteral().getString();
}
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// ///// High-Level Interface Methods////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
// //////////////////////////////////////////////
@Override
public ItemIdentifierResource asMDRResource() {
return this;
}
}