package tr.com.srdc.mdr.core.model.iso11179.composite;
import java.util.List;
import tr.com.srdc.mdr.core.api.composite.ReferenceDocument;
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;
/**
* An Administered Item may be described by one or more Reference Documents. For
* each Reference Document, the Organization that originated the Reference
* Document must be identified.
*
* @author anil
*
*/
public interface ReferenceDocumentResource extends MDRResource, ReferenceDocument {
/**
* Sets {@link Vocabulary#referenceDocumentIdentifier} property with given
* value
*
* @param referenceDocumentIdentifier
* value of {@link Vocabulary#referenceDocumentIdentifier}
* property, <br>
*/
void setReferenceDocumentIdentifier(String referenceDocumentIdentifier);
/**
*
* @return {@link String} value of
* {@link Vocabulary#referenceDocumentIdentifier} property, <br>
*/
String getReferenceDocumentIdentifier();
/**
* Sets {@link Vocabulary#referenceDocumentTypeDescription} property with
* given value
*
* @param referenceDocumentTypeDescription
* value of {@link Vocabulary#referenceDocumentTypeDescription}
* property, <br>
* Removes property if given <code>null</code>
*/
void setReferenceDocumentTypeDescription(
String referenceDocumentTypeDescription);
/**
*
* @return {@link String} value of
* {@link Vocabulary#referenceDocumentTypeDescription} property, <br>
* If property is not set, then returns <code>null</code>
*/
String getReferenceDocumentTypeDescription();
/**
* Adds {@link Vocabulary#referenceDocumentLanguageIdentifier} property with
* given value
*
* @param referenceDocumentLanguageIdentifier
* value of
* {@link Vocabulary#referenceDocumentLanguageIdentifier}
* property
*/
void addReferenceDocumentLanguageIdentifier(
LanguageIdentificationResource referenceDocumentLanguageIdentifier);
/**
* Removes the {@link Vocabulary#referenceDocumentLanguageIdentifier}
* property with given value
*
* @param referenceDocumentLanguageIdentifier
* value of
* {@link Vocabulary#referenceDocumentLanguageIdentifier}
* property to be removed
*/
void removeReferenceDocumentLanguageIdentifier(
LanguageIdentificationResource referenceDocumentLanguageIdentifier);
/**
*
* @return {@link List} of
* {@link Vocabulary#referenceDocumentLanguageIdentifier} property
* values
* @throws MDRException
*/
List<LanguageIdentificationResource> getReferenceDocumentLanguageIdentifiers()
throws MDRException;
/**
* Sets {@link Vocabulary#referenceDocumentTitle} property with given value
*
* @param referenceDocumentTitle
* value of {@link Vocabulary#referenceDocumentTitle} property, <br>
* Removes property if given <code>null</code>
*/
void setReferenceDocumentTitle(String referenceDocumentTitle);
/**
*
* @return {@link String} value of {@link Vocabulary#referenceDocumentTitle}
* property, <br>
* If property is not set, then returns <code>null</code>
*/
String getReferenceDocumentTitle();
/**
* Adds {@link Vocabulary#providedBy} property with given value
*
* @param providedBy
* value of {@link Vocabulary#providedBy} property There should
* be at least 1 value for the property, throws
* IllegalArgumentException when try to remove all values
*/
void addProvidedBy(OrganizationResource providedBy);
/**
* Removes the {@link Vocabulary#providedBy} property with given value
*
* @param providedBy
* value of {@link Vocabulary#providedBy} property to be removed.
* There should be at least 1 value for the property, throws
* IllegalArgumentException when try to remove all values
*/
void removeProvidedBy(OrganizationResource providedBy);
/**
*
* @return {@link List} of {@link Vocabulary#providedBy} property values
*/
List<OrganizationResource> getProvidedBy() throws MDRException;
/**
* Adds {@link Vocabulary#describing} property with given value
*
* @param describing
* value of {@link Vocabulary#describing} property.
*/
void addDescribing(AdministeredItemResource describing);
/**
* Removes the {@link Vocabulary#describing} property with given value
*
* @param describing
* value of {@link Vocabulary#describing} property to be removed.
*/
void removeDescribing(AdministeredItemResource describing);
/**
*
* @return {@link List} of {@link Vocabulary#describing} property values
*/
List<AdministeredItemResource> getDescribing() throws MDRException;
}