package tr.com.srdc.mdr.core.model.iso11179.composite; import java.util.List; import tr.com.srdc.mdr.core.api.composite.DataElementDerivation; 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.DataElementResource; import tr.com.srdc.mdr.core.model.iso11179.DerivationRuleResource; /** * * A Data Element Derivation is the application of a Derivation Rule to one or * more input Data Elements, to derive one or more output Data Elements. * * @author anil * */ public interface DataElementDerivationResource extends MDRResource, DataElementDerivation { /** * Sets {@link Vocabulary#applyingDerivationRuleApplication} property with * given value * * @param applyingDerivationRuleApplication */ void setApplyingDerivationRuleApplication( DerivationRuleResource applyingDerivationRuleApplication); /** * * @return value of {@link Vocabulary#applyingDerivationRuleApplication} * property */ DerivationRuleResource getApplyingDerivationRuleApplication(); /** * Adds {@link Vocabulary#inputingDerivationInput} property with given value * * @param inputingDerivationInput * if given <code>null</code>, throws * {@link IllegalArgumentException} */ void addInputingDerivationInput(DataElementResource inputingDerivationInput); /** * removes {@link Vocabulary#inputingDerivationInput} property with given * value * * @param inputingDerivationInput * throws {@link IllegalStateException} when try to remove all * values of the property */ void removeInputingDerivationInput(DataElementResource inputingDerivationInput); /** * {@link List} of all {@link Vocabulary#inputingDerivationInput} property * values * * @return * @throws MDRException */ List<DataElementResource> getInputingDerivationInputs() throws MDRException; /** * Adds {@link Vocabulary#derivingDerivationOutput} property with given * value * * @param derivingDerivationOutput */ void addDerivingDerivationOutput(DataElementResource derivingDerivationOutput); /** * removes {@link Vocabulary#derivingDerivationOutput} with given value * * @param derivingDerivationOutput * throws {@link IllegalStateException} when try to remove all * values of the property */ void removeDerivingDerivationOutput(DataElementResource derivingDerivationOutput); /** * * @return {@link List} of all {@link Vocabulary#derivingDerivationOutput} * property values * @throws MDRException */ List<DataElementResource> getDerivingDerivationOutputs() throws MDRException; }