package tr.com.srdc.mdr.core.model.iso11179.composite;
import java.util.List;
import tr.com.srdc.mdr.core.model.Abbreviation;
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;
/**
*
* {@link SubmissionRelationshipResource} is used to represent the relation between
* <ul>
* <li>Submission</li>
* <li>submitting - submittedBy Relation between {@link OrganizationResource} and
* {@link AdministeredItemResource}</li>
* </ul>
* <br>
* Since {@link Abbreviation} is backed by Jena - Triple Store, such an holder class
* is required to represent n-ary relations
*
* @author anil
*
*/
public interface SubmissionRelationshipResource extends MDRResource {
/**
* Sets {@link Vocabulary#submissionOrganization} property with given value
*
* @param submissionOrganization
* value of {@link Vocabulary#submissionOrganization} property <br>
*/
void setSubmissionOrganization(OrganizationResource submissionOrganization);
/**
*
* @return {@link OrganizationResource} object, value of
* {@link Vocabulary#submissionOrganization} property, <br>
*/
OrganizationResource getSubmissionOrganization();
/**
* Sets {@link Vocabulary#submitter} property with given value
*
* @param submitter
* value of {@link Vocabulary#submitter} property <br>
*/
void setSubmitter(SubmissionResource submitter);
/**
*
* @return {@link SubmissionResource} object, value of
* {@link Vocabulary#submitter} property, <br>
*/
SubmissionResource getSubmitter();
/**
* Adds {@link Vocabulary#submittedItems} property with given value
*
* @param submittedItems
* value of {@link Vocabulary#submittedItems} property
*/
void addSubmittedItems(AdministeredItemResource submittedItems);
/**
*
* @return {@link List} of {@link Vocabulary#submittedItems} property values
*/
List<AdministeredItemResource> getSubmittedItems() throws MDRException;
/**
* Method for removing the administratedItems property to the
* {@link SubmissionRelationshipResource} with the value of
* {@link AdministeredItemResource}.
*
* @param submittedItems
*/
void removeSumittedItem(AdministeredItemResource submittedItems);
}