package tr.com.srdc.mdr.core.model.iso11179.composite;
import java.util.List;
import tr.com.srdc.mdr.core.api.composite.ClassificationSchemeItem;
import tr.com.srdc.mdr.core.model.MDRException;
import tr.com.srdc.mdr.core.model.MDRResource;
import tr.com.srdc.mdr.core.model.Vocabulary;
import tr.com.srdc.mdr.core.model.iso11179.AdministeredItemResource;
import tr.com.srdc.mdr.core.model.iso11179.ClassificationSchemeResource;
/**
*
* A Classification Scheme Item represents an individual item within a
* Classification Scheme.<br>
*
* @author anil
* @author mert
*/
public interface ClassificationSchemeItemResource extends MDRResource,
ClassificationSchemeItem {
/**
* Sets {@link Vocabulary#classificationSchemeItemTypeName} property with
* given value
*
* @param classificationSchemeItemTypeName
* value of {@link Vocabulary#classificationSchemeItemTypeName}
* property, <br>
* Removes property if given <code>null</code>
*/
void setClassificationSchemeItemTypeName(
String classificationSchemeItemTypeName);
/**
*
* @return {@link String} value of
* {@link Vocabulary#classificationSchemeItemTypeName} property, <br>
* If property is not set, then returns <code>null</code>
*/
String getClassificationSchemeItemTypeName();
/**
* Sets {@link Vocabulary#classificationSchemeItemValue} property with given
* value
*
* @param classificationSchemeItemValue
* value of {@link Vocabulary#classificationSchemeItemValue}
* property,<br>
* Removes property if given <code>null</code>
*/
void setClassificationSchemeItemValue(String classificationSchemeItemValue);
/**
*
* @return {@link String} value of
* {@link Vocabulary#classificationSchemeItemValue} property, <br>
* If property is not set, then returns <code>null</code>
*/
String getClassificationSchemeItemValue();
/**
* Adds {@link Vocabulary#classifying} property with given value
*
* @param administeredItem
* value of {@link Vocabulary#classifying} property
*/
void addClassifying(AdministeredItemResource administeredItem);
/**
* Removes the {@link Vocabulary#classifying} property with given value
*
* @param administeredItem
* value of {@link Vocabulary#classifying} property to be removed
*
*/
void removeClassifying(AdministeredItemResource administeredItem);
/**
*
* @return {@link List} of {@link Vocabulary#classifying} property values
*/
List<AdministeredItemResource> getClassifyings() throws MDRException;
/**
* Sets {@link Vocabulary#containedIn} property with given value and <br>
* sets the {@link Vocabulary#containing} property of the
* classificationScheme with <code>this</code>
*
* @param classificationScheme
* value of {@link Vocabulary#containedIn} property,<br>
* if given <code>null</code> {@link IllegalArgumentException}
* </code>
*/
void setContainedIn(ClassificationSchemeResource classificationScheme);
/**
*
* @return {@link ClassificationSchemeResource} object, value of
* {@link Vocabulary#containedIn} property, <br>
* If property is not set, then returns <code>null</code>
*/
ClassificationSchemeResource getContainedIn();
/**
* Adds {@link Vocabulary#csiAssociatedIn} property with given value
*
* @param csiRelationshipAssociation
* value of {@link Vocabulary#csiAssociatedIn} property
*/
void addCSIAssociatedIn(
ClassificationSchemeItemAssociationResource csiRelationshipAssociation);
/**
* Removed the {@link Vocabulary#csiAssociatedIn} property with given value
*
* @param csiRelationshipAssociation
* value of {@link Vocabulary#csiAssociatedIn} property to be
* removed
*/
void removeCSIAssociatedIn(
ClassificationSchemeItemAssociationResource csiRelationshipAssociation);
/**
*
* @return {@link List} of {@link Vocabulary#csiAssociatedIn} property
* values
*/
List<ClassificationSchemeItemAssociationResource> getCSIAssociatedIns()
throws MDRException;
}