package tr.com.srdc.mdr.core.model.iso11179.composite;
import java.util.List;
import tr.com.srdc.mdr.core.api.composite.RegistrationAuthority;
import tr.com.srdc.mdr.core.model.MDRException;
import tr.com.srdc.mdr.core.model.Vocabulary;
import tr.com.srdc.mdr.core.model.iso11179.AdministeredItemResource;
/**
* A Registration Authority is any Organization authorized to register metadata.
* A Registration Authority is a subtype of Organization and inherits all of its
* attributes and relationships. An Administered Item has a Registration
* Authority that is its owner. A Registration Authority may register many
* Administered Items.
*
* @author anil
*
*/
public interface RegistrationAuthorityResource extends OrganizationResource,
RegistrationAuthority {
/**
* Sets {@link Vocabulary#registrationAuthorityIdentifier} property with
* given value
*
* @param registrationAuthorityIdentifier
* value of {@link Vocabulary#registrationAuthorityIdentifier}
* property, <br>
*/
void setRegistrationAuthorityIdentifier(
RegistrationAuthorityIdentifierResource registrationAuthorityIdentifier);
/**
*
* @return {@link RegistrationAuthorityIdentifierResource} object, value of
* {@link Vocabulary#registrationAuthorityIdentifier} property <br>
*/
RegistrationAuthorityIdentifierResource getRegistrationAuthorityIdentifier();
/**
* Adds {@link Vocabulary#documentationLanguageIdentifier} property with
* given value
*
* @param documentationLanguageIdentifier
* value of {@link Vocabulary#documentationLanguageIdentifier}
* property There should be at least 1 value for the property,
* throws IllegalArgumentException when try to remove all values
*/
void addDocumentationLanguageIdentifier(
LanguageIdentificationResource documentationLanguageIdentifier);
/**
* Removes the {@link Vocabulary#documentationLanguageIdentifier} property
* with given value
*
* @param documentationLanguageIdentifier
* value of {@link Vocabulary#documentationLanguageIdentifier}
* property to be removed. There should be at least 1 value for
* the property, throws IllegalArgumentException when try to
* remove all values
*/
void removeDocumentationLanguageIdentifier(
LanguageIdentificationResource documentationLanguageIdentifier);
/**
*
* @return {@link List} of
* {@link Vocabulary#documentationLanguageIdentifier} property
* values
*/
List<LanguageIdentificationResource> getDocumentationLanguageIdentifiers()
throws MDRException;
/**
* Adds {@link Vocabulary#registering} property with given value
*
* @param registering
* value of {@link Vocabulary#registering} property.
*/
void addRegistering(AdministeredItemResource registering);
/**
* Removes the {@link Vocabulary#registering} property with given value
*
* @param registering
* value of {@link Vocabulary#registering} property to be
* removed.
*/
void removeRegistering(AdministeredItemResource registering);
/**
*
* @return {@link List} of {@link Vocabulary#registering} property values
*/
List<AdministeredItemResource> getRegistering() throws MDRException;
/**
* Adds {@link Vocabulary#representedBy} property with given value
*
* @param representedBy
* value of {@link Vocabulary#representedBy} property There
* should be at least 1 value for the property, throws
* IllegalArgumentException when try to remove all values
*/
void addRepresentedBy(RegistrarResource representedBy);
/**
* Removes the {@link Vocabulary#representedBy} property with given value
*
* @param representedBy
* value of {@link Vocabulary#representedBy} property to be
* removed. There should be at least 1 value for the property,
* throws IllegalArgumentException when try to remove all values
*/
void removeRepresentedBy(RegistrarResource representedBy);
/**
*
* @return {@link List} of {@link Vocabulary#representedBy} property values
*/
List<RegistrarResource> getRepresentedBy() throws MDRException;
}