package tr.com.srdc.mdr.core.model.iso11179.composite;
import java.util.Calendar;
import java.util.List;
import tr.com.srdc.mdr.core.api.composite.PermissibleValue;
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.EnumeratedValueDomainResource;
/**
*
* A Permissible Value is an expression of a Value Meaning within an Enumerated
* Value Domain. It is one of a set of such values that comprises an Enumerated
* Value Domain. Each Permissible Value is associated with a Value Meaning.
*
* @author anil
*
*/
public interface PermissibleValueResource extends MDRResource, PermissibleValue {
/**
* Sets {@link Vocabulary#permissibleValueBeginDate} property with given
* value
*
* @param permissibleValueBeginDate
*/
void setPermissibleValueBeginDate(Calendar permissibleValueBeginDate);
/**
*
* @return Value of {@link Vocabulary#permissibleValueBeginDate} property
*/
Calendar getPermissibleValueBeginDate();
/**
* Sets {@link Vocabulary#permissibleValueEndDate} property with given value
*
* @param permissibleValueEndDate
* if given <code>null</code>, removes property
*/
void setPermissibleValueEndDate(Calendar permissibleValueEndDate);
/**
*
* @return Value of {@link Vocabulary#permissibleValueEndDate} property,
* <code>null</code> if such property does not exist
*/
Calendar getPermissibleValueEndDate();
/**
* Sets {@link Vocabulary#hasPermittedValue} property with given value
*
* @param hasPermittedValue
*/
void setHasPermittedValue(ValueResource hasPermittedValue);
/**
*
* @return Value of {@link Vocabulary#hasPermittedValue} property
*/
ValueResource getHasPermittedValue();
/**
* Sets {@link Vocabulary#hasPermissibleValueMeaning} property with given
* value
*
* @param hasPermissibleValueMeaning
*/
void setHasPermissibleValueMeaning(
ValueMeaningResource hasPermissibleValueMeaning);
/**
*
* @return Value of {@link Vocabulary#hasPermissibleValueMeaning} property
*/
ValueMeaningResource getHasPermissibleValueMeaning();
/**
* Adds {@link Vocabulary#containedInPermissibleValueSet} property with
* given value
*
* @param containedInPermissibleValueSet
*/
void addContainedInPermissibleValueSet(
EnumeratedValueDomainResource containedInPermissibleValueSet);
/**
* Removes {@link Vocabulary#containedInPermissibleValueSet} property with
* given value
*
* @param containedInPermissibleValueSet
*/
void removeContainedInPermissibleValueSet(
EnumeratedValueDomainResource containedInPermissibleValueSet);
/**
*
* @return {@link List} of all
* {@link Vocabulary#containedInPermissibleValueSet} property values
* @throws MDRException
*/
List<EnumeratedValueDomainResource> getContainedInPermissibleValueSets()
throws MDRException;
}