Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

added XSD and ECore for access controls

  • Loading branch information...
commit 9b6502d827b1ec5dc9740764843313595b6819bc 1 parent be21c4a
@gregjan gregjan authored
Showing with 2,930 additions and 0 deletions.
  1. +7 −0 access-control/.classpath
  2. +28 −0 access-control/.project
  3. +16 −0 access-control/META-INF/MANIFEST.MF
  4. +14 −0 access-control/build.properties
  5. +88 −0 access-control/model/acl.ecore
  6. +26 −0 access-control/model/acl.genmodel
  7. +29 −0 access-control/model/acl.xsd2ecore
  8. +8 −0 access-control/plugin.properties
  9. +26 −0 access-control/plugin.xml
  10. +133 −0 access-control/src/edu/unc/lib/schemas/acl/AccessControlType.java
  11. +64 −0 access-control/src/edu/unc/lib/schemas/acl/AclFactory.java
  12. +456 −0 access-control/src/edu/unc/lib/schemas/acl/AclPackage.java
  13. +115 −0 access-control/src/edu/unc/lib/schemas/acl/DocumentRoot.java
  14. +83 −0 access-control/src/edu/unc/lib/schemas/acl/GrantType.java
  15. +316 −0 access-control/src/edu/unc/lib/schemas/acl/impl/AccessControlTypeImpl.java
  16. +121 −0 access-control/src/edu/unc/lib/schemas/acl/impl/AclFactoryImpl.java
  17. +419 −0 access-control/src/edu/unc/lib/schemas/acl/impl/AclPackageImpl.java
  18. +286 −0 access-control/src/edu/unc/lib/schemas/acl/impl/DocumentRootImpl.java
  19. +221 −0 access-control/src/edu/unc/lib/schemas/acl/impl/GrantTypeImpl.java
  20. +160 −0 access-control/src/edu/unc/lib/schemas/acl/util/AclAdapterFactory.java
  21. +56 −0 access-control/src/edu/unc/lib/schemas/acl/util/AclResourceFactoryImpl.java
  22. +32 −0 access-control/src/edu/unc/lib/schemas/acl/util/AclResourceImpl.java
  23. +172 −0 access-control/src/edu/unc/lib/schemas/acl/util/AclSwitch.java
  24. +54 −0 access-control/src/edu/unc/lib/schemas/acl/util/AclXMLProcessor.java
View
7 access-control/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
View
28 access-control/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>access-control</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
View
16 access-control/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: access-control;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.unc.lib.schemas.acl,
+ edu.unc.lib.schemas.acl.impl,
+ edu.unc.lib.schemas.acl.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
View
14 access-control/build.properties
@@ -0,0 +1,14 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
View
88 access-control/model/acl.ecore
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="acl"
+ nsURI="http://lib.unc.edu/schemas/acl" nsPrefix="acl">
+ <eClassifiers xsi:type="ecore:EClass" name="AccessControlType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="accessControl_._type"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="grant" upperBound="-1"
+ eType="#//GrantType" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="grant"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="embargoUntil" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="embargo-until"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inherit" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+ defaultValueLiteral="true" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="inherit"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="accessControl" upperBound="-2"
+ eType="#//AccessControlType" volatile="true" transient="true" derived="true"
+ containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="accessControl"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GrantType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="grant_._type"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="role" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="role"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
View
26 access-control/model/acl.genmodel
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/access-control/src"
+ modelPluginID="access-control" modelName="Acl" importerID="org.eclipse.xsd.ecore.importer"
+ complianceLevel="6.0" copyrightFields="false">
+ <foreignModel>../../curators-workbench/etc/acl.xsd</foreignModel>
+ <genPackages prefix="Acl" basePackage="edu.unc.lib.schemas" resource="XML" disposableProviderFactory="true"
+ ecorePackage="acl.ecore#/">
+ <genClasses ecoreClass="acl.ecore#//AccessControlType">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference acl.ecore#//AccessControlType/grant"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute acl.ecore#//AccessControlType/embargoUntil"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute acl.ecore#//AccessControlType/inherit"/>
+ </genClasses>
+ <genClasses ecoreClass="acl.ecore#//DocumentRoot">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute acl.ecore#//DocumentRoot/mixed"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference acl.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference acl.ecore#//DocumentRoot/xSISchemaLocation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference acl.ecore#//DocumentRoot/accessControl"/>
+ </genClasses>
+ <genClasses ecoreClass="acl.ecore#//GrantType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute acl.ecore#//GrantType/group"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute acl.ecore#//GrantType/role"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
View
29 access-control/model/acl.xsd2ecore
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsd2ecore:XSD2EcoreMappingRoot xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd2ecore="http://www.eclipse.org/emf/2002/XSD2Ecore" inputs="../../curators-workbench/etc/acl.xsd#/"
+ outputs="acl.ecore#/" topToBottom="true">
+ <nested inputs="bundleentry://902.fwk20324370/cache/www.w3.org/2001/MagicXMLSchema.xsd#//anySimpleType;XSDSimpleTypeDefinition=1"
+ outputs="http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType"/>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle/grant;XSDElementDeclaration/XSDComplexTypeDefinition"
+ outputs="acl.ecore#//GrantType">
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle/grant;XSDElementDeclaration/XSDComplexTypeDefinition/XSDAttributeUse=1"
+ outputs="acl.ecore#//GrantType/group"/>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle/grant;XSDElementDeclaration/XSDComplexTypeDefinition/XSDAttributeUse"
+ outputs="acl.ecore#//GrantType/role"/>
+ </nested>
+ <nested inputs="bundleentry://902.fwk20324370/cache/www.w3.org/2001/XMLSchema.xsd#//date;XSDSimpleTypeDefinition=17"
+ outputs="http://www.eclipse.org/emf/2003/XMLType#//Date"/>
+ <nested inputs="bundleentry://902.fwk20324370/cache/www.w3.org/2001/XMLSchema.xsd#//boolean;XSDSimpleTypeDefinition=10"
+ outputs="http://www.eclipse.org/emf/2003/XMLType#//Boolean"/>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition"
+ outputs="acl.ecore#//AccessControlType">
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle"
+ outputs="acl.ecore#//AccessControlType/grant"/>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDAttributeUse=1"
+ outputs="acl.ecore#//AccessControlType/embargoUntil"/>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration/XSDComplexTypeDefinition/XSDAttributeUse"
+ outputs="acl.ecore#//AccessControlType/inherit"/>
+ </nested>
+ <nested inputs="../../curators-workbench/etc/acl.xsd#//accessControl;XSDElementDeclaration"
+ outputs="acl.ecore#//DocumentRoot/accessControl"/>
+</xsd2ecore:XSD2EcoreMappingRoot>
View
8 access-control/plugin.properties
@@ -0,0 +1,8 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = Acl Model
+providerName = www.example.org
View
26 access-control/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://lib.unc.edu/schemas/acl"
+ class="edu.unc.lib.schemas.acl.AclPackage"
+ genModel="model/acl.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ type="acl"
+ class="edu.unc.lib.schemas.acl.util.AclResourceFactoryImpl"/>
+ </extension>
+
+</plugin>
View
133 access-control/src/edu/unc/lib/schemas/acl/AccessControlType.java
@@ -0,0 +1,133 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Access Control Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.AccessControlType#getGrant <em>Grant</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.AccessControlType#getEmbargoUntil <em>Embargo Until</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.AccessControlType#isInherit <em>Inherit</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see edu.unc.lib.schemas.acl.AclPackage#getAccessControlType()
+ * @model extendedMetaData="name='accessControl_._type' kind='elementOnly'"
+ * @generated
+ */
+public interface AccessControlType extends EObject {
+ /**
+ * Returns the value of the '<em><b>Grant</b></em>' containment reference list.
+ * The list contents are of type {@link edu.unc.lib.schemas.acl.GrantType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Grant</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Grant</em>' containment reference list.
+ * @see edu.unc.lib.schemas.acl.AclPackage#getAccessControlType_Grant()
+ * @model containment="true"
+ * extendedMetaData="kind='element' name='grant'"
+ * @generated
+ */
+ EList<GrantType> getGrant();
+
+ /**
+ * Returns the value of the '<em><b>Embargo Until</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Embargo Until</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Embargo Until</em>' attribute.
+ * @see #setEmbargoUntil(XMLGregorianCalendar)
+ * @see edu.unc.lib.schemas.acl.AclPackage#getAccessControlType_EmbargoUntil()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.Date"
+ * extendedMetaData="kind='attribute' name='embargo-until'"
+ * @generated
+ */
+ XMLGregorianCalendar getEmbargoUntil();
+
+ /**
+ * Sets the value of the '{@link edu.unc.lib.schemas.acl.AccessControlType#getEmbargoUntil <em>Embargo Until</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Embargo Until</em>' attribute.
+ * @see #getEmbargoUntil()
+ * @generated
+ */
+ void setEmbargoUntil(XMLGregorianCalendar value);
+
+ /**
+ * Returns the value of the '<em><b>Inherit</b></em>' attribute.
+ * The default value is <code>"true"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inherit</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inherit</em>' attribute.
+ * @see #isSetInherit()
+ * @see #unsetInherit()
+ * @see #setInherit(boolean)
+ * @see edu.unc.lib.schemas.acl.AclPackage#getAccessControlType_Inherit()
+ * @model default="true" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+ * extendedMetaData="kind='attribute' name='inherit'"
+ * @generated
+ */
+ boolean isInherit();
+
+ /**
+ * Sets the value of the '{@link edu.unc.lib.schemas.acl.AccessControlType#isInherit <em>Inherit</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Inherit</em>' attribute.
+ * @see #isSetInherit()
+ * @see #unsetInherit()
+ * @see #isInherit()
+ * @generated
+ */
+ void setInherit(boolean value);
+
+ /**
+ * Unsets the value of the '{@link edu.unc.lib.schemas.acl.AccessControlType#isInherit <em>Inherit</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetInherit()
+ * @see #isInherit()
+ * @see #setInherit(boolean)
+ * @generated
+ */
+ void unsetInherit();
+
+ /**
+ * Returns whether the value of the '{@link edu.unc.lib.schemas.acl.AccessControlType#isInherit <em>Inherit</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Inherit</em>' attribute is set.
+ * @see #unsetInherit()
+ * @see #isInherit()
+ * @see #setInherit(boolean)
+ * @generated
+ */
+ boolean isSetInherit();
+
+} // AccessControlType
View
64 access-control/src/edu/unc/lib/schemas/acl/AclFactory.java
@@ -0,0 +1,64 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.AclPackage
+ * @generated
+ */
+public interface AclFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ AclFactory eINSTANCE = edu.unc.lib.schemas.acl.impl.AclFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Access Control Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Access Control Type</em>'.
+ * @generated
+ */
+ AccessControlType createAccessControlType();
+
+ /**
+ * Returns a new object of class '<em>Document Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Document Root</em>'.
+ * @generated
+ */
+ DocumentRoot createDocumentRoot();
+
+ /**
+ * Returns a new object of class '<em>Grant Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Grant Type</em>'.
+ * @generated
+ */
+ GrantType createGrantType();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ AclPackage getAclPackage();
+
+} //AclFactory
View
456 access-control/src/edu/unc/lib/schemas/acl/AclPackage.java
@@ -0,0 +1,456 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.AclFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface AclPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "acl";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://lib.unc.edu/schemas/acl";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "acl";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ AclPackage eINSTANCE = edu.unc.lib.schemas.acl.impl.AclPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl <em>Access Control Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getAccessControlType()
+ * @generated
+ */
+ int ACCESS_CONTROL_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Grant</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACCESS_CONTROL_TYPE__GRANT = 0;
+
+ /**
+ * The feature id for the '<em><b>Embargo Until</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACCESS_CONTROL_TYPE__EMBARGO_UNTIL = 1;
+
+ /**
+ * The feature id for the '<em><b>Inherit</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACCESS_CONTROL_TYPE__INHERIT = 2;
+
+ /**
+ * The number of structural features of the '<em>Access Control Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACCESS_CONTROL_TYPE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.DocumentRootImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ int DOCUMENT_ROOT = 1;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Access Control</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ACCESS_CONTROL = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link edu.unc.lib.schemas.acl.impl.GrantTypeImpl <em>Grant Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.GrantTypeImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getGrantType()
+ * @generated
+ */
+ int GRANT_TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRANT_TYPE__GROUP = 0;
+
+ /**
+ * The feature id for the '<em><b>Role</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRANT_TYPE__ROLE = 1;
+
+ /**
+ * The number of structural features of the '<em>Grant Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRANT_TYPE_FEATURE_COUNT = 2;
+
+
+ /**
+ * Returns the meta object for class '{@link edu.unc.lib.schemas.acl.AccessControlType <em>Access Control Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Access Control Type</em>'.
+ * @see edu.unc.lib.schemas.acl.AccessControlType
+ * @generated
+ */
+ EClass getAccessControlType();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link edu.unc.lib.schemas.acl.AccessControlType#getGrant <em>Grant</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Grant</em>'.
+ * @see edu.unc.lib.schemas.acl.AccessControlType#getGrant()
+ * @see #getAccessControlType()
+ * @generated
+ */
+ EReference getAccessControlType_Grant();
+
+ /**
+ * Returns the meta object for the attribute '{@link edu.unc.lib.schemas.acl.AccessControlType#getEmbargoUntil <em>Embargo Until</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Embargo Until</em>'.
+ * @see edu.unc.lib.schemas.acl.AccessControlType#getEmbargoUntil()
+ * @see #getAccessControlType()
+ * @generated
+ */
+ EAttribute getAccessControlType_EmbargoUntil();
+
+ /**
+ * Returns the meta object for the attribute '{@link edu.unc.lib.schemas.acl.AccessControlType#isInherit <em>Inherit</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Inherit</em>'.
+ * @see edu.unc.lib.schemas.acl.AccessControlType#isInherit()
+ * @see #getAccessControlType()
+ * @generated
+ */
+ EAttribute getAccessControlType_Inherit();
+
+ /**
+ * Returns the meta object for class '{@link edu.unc.lib.schemas.acl.DocumentRoot <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @see edu.unc.lib.schemas.acl.DocumentRoot
+ * @generated
+ */
+ EClass getDocumentRoot();
+
+ /**
+ * Returns the meta object for the attribute list '{@link edu.unc.lib.schemas.acl.DocumentRoot#getMixed <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @see edu.unc.lib.schemas.acl.DocumentRoot#getMixed()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_Mixed();
+
+ /**
+ * Returns the meta object for the map '{@link edu.unc.lib.schemas.acl.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @see edu.unc.lib.schemas.acl.DocumentRoot#getXMLNSPrefixMap()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * Returns the meta object for the map '{@link edu.unc.lib.schemas.acl.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @see edu.unc.lib.schemas.acl.DocumentRoot#getXSISchemaLocation()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link edu.unc.lib.schemas.acl.DocumentRoot#getAccessControl <em>Access Control</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Access Control</em>'.
+ * @see edu.unc.lib.schemas.acl.DocumentRoot#getAccessControl()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_AccessControl();
+
+ /**
+ * Returns the meta object for class '{@link edu.unc.lib.schemas.acl.GrantType <em>Grant Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Grant Type</em>'.
+ * @see edu.unc.lib.schemas.acl.GrantType
+ * @generated
+ */
+ EClass getGrantType();
+
+ /**
+ * Returns the meta object for the attribute '{@link edu.unc.lib.schemas.acl.GrantType#getGroup <em>Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Group</em>'.
+ * @see edu.unc.lib.schemas.acl.GrantType#getGroup()
+ * @see #getGrantType()
+ * @generated
+ */
+ EAttribute getGrantType_Group();
+
+ /**
+ * Returns the meta object for the attribute '{@link edu.unc.lib.schemas.acl.GrantType#getRole <em>Role</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Role</em>'.
+ * @see edu.unc.lib.schemas.acl.GrantType#getRole()
+ * @see #getGrantType()
+ * @generated
+ */
+ EAttribute getGrantType_Role();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ AclFactory getAclFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl <em>Access Control Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getAccessControlType()
+ * @generated
+ */
+ EClass ACCESS_CONTROL_TYPE = eINSTANCE.getAccessControlType();
+
+ /**
+ * The meta object literal for the '<em><b>Grant</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACCESS_CONTROL_TYPE__GRANT = eINSTANCE.getAccessControlType_Grant();
+
+ /**
+ * The meta object literal for the '<em><b>Embargo Until</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACCESS_CONTROL_TYPE__EMBARGO_UNTIL = eINSTANCE.getAccessControlType_EmbargoUntil();
+
+ /**
+ * The meta object literal for the '<em><b>Inherit</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACCESS_CONTROL_TYPE__INHERIT = eINSTANCE.getAccessControlType_Inherit();
+
+ /**
+ * The meta object literal for the '{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.DocumentRootImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Access Control</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__ACCESS_CONTROL = eINSTANCE.getDocumentRoot_AccessControl();
+
+ /**
+ * The meta object literal for the '{@link edu.unc.lib.schemas.acl.impl.GrantTypeImpl <em>Grant Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see edu.unc.lib.schemas.acl.impl.GrantTypeImpl
+ * @see edu.unc.lib.schemas.acl.impl.AclPackageImpl#getGrantType()
+ * @generated
+ */
+ EClass GRANT_TYPE = eINSTANCE.getGrantType();
+
+ /**
+ * The meta object literal for the '<em><b>Group</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRANT_TYPE__GROUP = eINSTANCE.getGrantType_Group();
+
+ /**
+ * The meta object literal for the '<em><b>Role</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRANT_TYPE__ROLE = eINSTANCE.getGrantType_Role();
+
+ }
+
+} //AclPackage
View
115 access-control/src/edu/unc/lib/schemas/acl/DocumentRoot.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.DocumentRoot#getAccessControl <em>Access Control</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see edu.unc.lib.schemas.acl.AclPackage#getDocumentRoot()
+ * @model extendedMetaData="name='' kind='mixed'"
+ * @generated
+ */
+public interface DocumentRoot extends EObject {
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute list.
+ * @see edu.unc.lib.schemas.acl.AclPackage#getDocumentRoot_Mixed()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+ * extendedMetaData="kind='elementWildcard' name=':mixed'"
+ * @generated
+ */
+ FeatureMap getMixed();
+
+ /**
+ * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link java.lang.String},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+ * @see edu.unc.lib.schemas.acl.AclPackage#getDocumentRoot_XMLNSPrefixMap()
+ * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+ * extendedMetaData="kind='attribute' name='xmlns:prefix'"
+ * @generated
+ */
+ EMap<String, String> getXMLNSPrefixMap();
+
+ /**
+ * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link java.lang.String},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>XSI Schema Location</em>' map.
+ * @see edu.unc.lib.schemas.acl.AclPackage#getDocumentRoot_XSISchemaLocation()
+ * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+ * extendedMetaData="kind='attribute' name='xsi:schemaLocation'"
+ * @generated
+ */
+ EMap<String, String> getXSISchemaLocation();
+
+ /**
+ * Returns the value of the '<em><b>Access Control</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access Control</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access Control</em>' containment reference.
+ * @see #setAccessControl(AccessControlType)
+ * @see edu.unc.lib.schemas.acl.AclPackage#getDocumentRoot_AccessControl()
+ * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+ * extendedMetaData="kind='element' name='accessControl' namespace='##targetNamespace'"
+ * @generated
+ */
+ AccessControlType getAccessControl();
+
+ /**
+ * Sets the value of the '{@link edu.unc.lib.schemas.acl.DocumentRoot#getAccessControl <em>Access Control</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Access Control</em>' containment reference.
+ * @see #getAccessControl()
+ * @generated
+ */
+ void setAccessControl(AccessControlType value);
+
+} // DocumentRoot
View
83 access-control/src/edu/unc/lib/schemas/acl/GrantType.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Grant Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.GrantType#getGroup <em>Group</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.GrantType#getRole <em>Role</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see edu.unc.lib.schemas.acl.AclPackage#getGrantType()
+ * @model extendedMetaData="name='grant_._type' kind='empty'"
+ * @generated
+ */
+public interface GrantType extends EObject {
+ /**
+ * Returns the value of the '<em><b>Group</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group</em>' attribute.
+ * @see #setGroup(Object)
+ * @see edu.unc.lib.schemas.acl.AclPackage#getGrantType_Group()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.AnySimpleType" required="true"
+ * extendedMetaData="kind='attribute' name='group'"
+ * @generated
+ */
+ Object getGroup();
+
+ /**
+ * Sets the value of the '{@link edu.unc.lib.schemas.acl.GrantType#getGroup <em>Group</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Group</em>' attribute.
+ * @see #getGroup()
+ * @generated
+ */
+ void setGroup(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Role</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Role</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Role</em>' attribute.
+ * @see #setRole(Object)
+ * @see edu.unc.lib.schemas.acl.AclPackage#getGrantType_Role()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.AnySimpleType" required="true"
+ * extendedMetaData="kind='attribute' name='role'"
+ * @generated
+ */
+ Object getRole();
+
+ /**
+ * Sets the value of the '{@link edu.unc.lib.schemas.acl.GrantType#getRole <em>Role</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Role</em>' attribute.
+ * @see #getRole()
+ * @generated
+ */
+ void setRole(Object value);
+
+} // GrantType
View
316 access-control/src/edu/unc/lib/schemas/acl/impl/AccessControlTypeImpl.java
@@ -0,0 +1,316 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl.impl;
+
+import edu.unc.lib.schemas.acl.AccessControlType;
+import edu.unc.lib.schemas.acl.AclPackage;
+import edu.unc.lib.schemas.acl.GrantType;
+
+import java.util.Collection;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Access Control Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl#getGrant <em>Grant</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl#getEmbargoUntil <em>Embargo Until</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.AccessControlTypeImpl#isInherit <em>Inherit</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AccessControlTypeImpl extends EObjectImpl implements AccessControlType {
+ /**
+ * The cached value of the '{@link #getGrant() <em>Grant</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGrant()
+ * @generated
+ * @ordered
+ */
+ protected EList<GrantType> grant;
+
+ /**
+ * The default value of the '{@link #getEmbargoUntil() <em>Embargo Until</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmbargoUntil()
+ * @generated
+ * @ordered
+ */
+ protected static final XMLGregorianCalendar EMBARGO_UNTIL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEmbargoUntil() <em>Embargo Until</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmbargoUntil()
+ * @generated
+ * @ordered
+ */
+ protected XMLGregorianCalendar embargoUntil = EMBARGO_UNTIL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isInherit() <em>Inherit</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isInherit()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean INHERIT_EDEFAULT = true;
+
+ /**
+ * The cached value of the '{@link #isInherit() <em>Inherit</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isInherit()
+ * @generated
+ * @ordered
+ */
+ protected boolean inherit = INHERIT_EDEFAULT;
+
+ /**
+ * This is true if the Inherit attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean inheritESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AccessControlTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return AclPackage.Literals.ACCESS_CONTROL_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<GrantType> getGrant() {
+ if (grant == null) {
+ grant = new EObjectContainmentEList<GrantType>(GrantType.class, this, AclPackage.ACCESS_CONTROL_TYPE__GRANT);
+ }
+ return grant;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLGregorianCalendar getEmbargoUntil() {
+ return embargoUntil;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEmbargoUntil(XMLGregorianCalendar newEmbargoUntil) {
+ XMLGregorianCalendar oldEmbargoUntil = embargoUntil;
+ embargoUntil = newEmbargoUntil;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, AclPackage.ACCESS_CONTROL_TYPE__EMBARGO_UNTIL, oldEmbargoUntil, embargoUntil));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isInherit() {
+ return inherit;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInherit(boolean newInherit) {
+ boolean oldInherit = inherit;
+ inherit = newInherit;
+ boolean oldInheritESet = inheritESet;
+ inheritESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, AclPackage.ACCESS_CONTROL_TYPE__INHERIT, oldInherit, inherit, !oldInheritESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetInherit() {
+ boolean oldInherit = inherit;
+ boolean oldInheritESet = inheritESet;
+ inherit = INHERIT_EDEFAULT;
+ inheritESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, AclPackage.ACCESS_CONTROL_TYPE__INHERIT, oldInherit, INHERIT_EDEFAULT, oldInheritESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetInherit() {
+ return inheritESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case AclPackage.ACCESS_CONTROL_TYPE__GRANT:
+ return ((InternalEList<?>)getGrant()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case AclPackage.ACCESS_CONTROL_TYPE__GRANT:
+ return getGrant();
+ case AclPackage.ACCESS_CONTROL_TYPE__EMBARGO_UNTIL:
+ return getEmbargoUntil();
+ case AclPackage.ACCESS_CONTROL_TYPE__INHERIT:
+ return isInherit();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case AclPackage.ACCESS_CONTROL_TYPE__GRANT:
+ getGrant().clear();
+ getGrant().addAll((Collection<? extends GrantType>)newValue);
+ return;
+ case AclPackage.ACCESS_CONTROL_TYPE__EMBARGO_UNTIL:
+ setEmbargoUntil((XMLGregorianCalendar)newValue);
+ return;
+ case AclPackage.ACCESS_CONTROL_TYPE__INHERIT:
+ setInherit((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case AclPackage.ACCESS_CONTROL_TYPE__GRANT:
+ getGrant().clear();
+ return;
+ case AclPackage.ACCESS_CONTROL_TYPE__EMBARGO_UNTIL:
+ setEmbargoUntil(EMBARGO_UNTIL_EDEFAULT);
+ return;
+ case AclPackage.ACCESS_CONTROL_TYPE__INHERIT:
+ unsetInherit();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case AclPackage.ACCESS_CONTROL_TYPE__GRANT:
+ return grant != null && !grant.isEmpty();
+ case AclPackage.ACCESS_CONTROL_TYPE__EMBARGO_UNTIL:
+ return EMBARGO_UNTIL_EDEFAULT == null ? embargoUntil != null : !EMBARGO_UNTIL_EDEFAULT.equals(embargoUntil);
+ case AclPackage.ACCESS_CONTROL_TYPE__INHERIT:
+ return isSetInherit();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (embargoUntil: ");
+ result.append(embargoUntil);
+ result.append(", inherit: ");
+ if (inheritESet) result.append(inherit); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //AccessControlTypeImpl
View
121 access-control/src/edu/unc/lib/schemas/acl/impl/AclFactoryImpl.java
@@ -0,0 +1,121 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl.impl;
+
+import edu.unc.lib.schemas.acl.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AclFactoryImpl extends EFactoryImpl implements AclFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AclFactory init() {
+ try {
+ AclFactory theAclFactory = (AclFactory)EPackage.Registry.INSTANCE.getEFactory("http://lib.unc.edu/schemas/acl");
+ if (theAclFactory != null) {
+ return theAclFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new AclFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AclFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case AclPackage.ACCESS_CONTROL_TYPE: return createAccessControlType();
+ case AclPackage.DOCUMENT_ROOT: return createDocumentRoot();
+ case AclPackage.GRANT_TYPE: return createGrantType();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AccessControlType createAccessControlType() {
+ AccessControlTypeImpl accessControlType = new AccessControlTypeImpl();
+ return accessControlType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DocumentRoot createDocumentRoot() {
+ DocumentRootImpl documentRoot = new DocumentRootImpl();
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GrantType createGrantType() {
+ GrantTypeImpl grantType = new GrantTypeImpl();
+ return grantType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AclPackage getAclPackage() {
+ return (AclPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static AclPackage getPackage() {
+ return AclPackage.eINSTANCE;
+ }
+
+} //AclFactoryImpl
View
419 access-control/src/edu/unc/lib/schemas/acl/impl/AclPackageImpl.java
@@ -0,0 +1,419 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl.impl;
+
+import edu.unc.lib.schemas.acl.AccessControlType;
+import edu.unc.lib.schemas.acl.AclFactory;
+import edu.unc.lib.schemas.acl.AclPackage;
+import edu.unc.lib.schemas.acl.DocumentRoot;
+import edu.unc.lib.schemas.acl.GrantType;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AclPackageImpl extends EPackageImpl implements AclPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass accessControlTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass grantTypeEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see edu.unc.lib.schemas.acl.AclPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private AclPackageImpl() {
+ super(eNS_URI, AclFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link AclPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static AclPackage init() {
+ if (isInited) return (AclPackage)EPackage.Registry.INSTANCE.getEPackage(AclPackage.eNS_URI);
+
+ // Obtain or create and register package
+ AclPackageImpl theAclPackage = (AclPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof AclPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new AclPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ XMLTypePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theAclPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theAclPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theAclPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(AclPackage.eNS_URI, theAclPackage);
+ return theAclPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAccessControlType() {
+ return accessControlTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAccessControlType_Grant() {
+ return (EReference)accessControlTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAccessControlType_EmbargoUntil() {
+ return (EAttribute)accessControlTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAccessControlType_Inherit() {
+ return (EAttribute)accessControlTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDocumentRoot() {
+ return documentRootEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDocumentRoot_Mixed() {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_XMLNSPrefixMap() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_XSISchemaLocation() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_AccessControl() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGrantType() {
+ return grantTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGrantType_Group() {
+ return (EAttribute)grantTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGrantType_Role() {
+ return (EAttribute)grantTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AclFactory getAclFactory() {
+ return (AclFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ accessControlTypeEClass = createEClass(ACCESS_CONTROL_TYPE);
+ createEReference(accessControlTypeEClass, ACCESS_CONTROL_TYPE__GRANT);
+ createEAttribute(accessControlTypeEClass, ACCESS_CONTROL_TYPE__EMBARGO_UNTIL);
+ createEAttribute(accessControlTypeEClass, ACCESS_CONTROL_TYPE__INHERIT);
+
+ documentRootEClass = createEClass(DOCUMENT_ROOT);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__ACCESS_CONTROL);
+
+ grantTypeEClass = createEClass(GRANT_TYPE);
+ createEAttribute(grantTypeEClass, GRANT_TYPE__GROUP);
+ createEAttribute(grantTypeEClass, GRANT_TYPE__ROLE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(accessControlTypeEClass, AccessControlType.class, "AccessControlType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAccessControlType_Grant(), this.getGrantType(), null, "grant", null, 0, -1, AccessControlType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAccessControlType_EmbargoUntil(), theXMLTypePackage.getDate(), "embargoUntil", null, 0, 1, AccessControlType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAccessControlType_Inherit(), theXMLTypePackage.getBoolean(), "inherit", "true", 0, 1, AccessControlType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_AccessControl(), this.getAccessControlType(), null, "accessControl", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ initEClass(grantTypeEClass, GrantType.class, "GrantType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getGrantType_Group(), theXMLTypePackage.getAnySimpleType(), "group", null, 1, 1, GrantType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getGrantType_Role(), theXMLTypePackage.getAnySimpleType(), "role", null, 1, 1, GrantType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations() {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (accessControlTypeEClass,
+ source,
+ new String[] {
+ "name", "accessControl_._type",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getAccessControlType_Grant(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "grant"
+ });
+ addAnnotation
+ (getAccessControlType_EmbargoUntil(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "embargo-until"
+ });
+ addAnnotation
+ (getAccessControlType_Inherit(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "inherit"
+ });
+ addAnnotation
+ (documentRootEClass,
+ source,
+ new String[] {
+ "name", "",
+ "kind", "mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_Mixed(),
+ source,
+ new String[] {
+ "kind", "elementWildcard",
+ "name", ":mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_XMLNSPrefixMap(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "xmlns:prefix"
+ });
+ addAnnotation
+ (getDocumentRoot_XSISchemaLocation(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "xsi:schemaLocation"
+ });
+ addAnnotation
+ (getDocumentRoot_AccessControl(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "accessControl",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (grantTypeEClass,
+ source,
+ new String[] {
+ "name", "grant_._type",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getGrantType_Group(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "group"
+ });
+ addAnnotation
+ (getGrantType_Role(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "role"
+ });
+ }
+
+} //AclPackageImpl
View
286 access-control/src/edu/unc/lib/schemas/acl/impl/DocumentRootImpl.java
@@ -0,0 +1,286 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl.impl;
+
+import edu.unc.lib.schemas.acl.AccessControlType;
+import edu.unc.lib.schemas.acl.AclPackage;
+import edu.unc.lib.schemas.acl.DocumentRoot;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.DocumentRootImpl#getAccessControl <em>Access Control</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends EObjectImpl implements DocumentRoot {
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+ protected FeatureMap mixed;
+
+ /**
+ * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXMLNSPrefixMap()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, String> xMLNSPrefixMap;
+
+ /**
+ * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXSISchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, String> xSISchemaLocation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DocumentRootImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return AclPackage.Literals.DOCUMENT_ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FeatureMap getMixed() {
+ if (mixed == null) {
+ mixed = new BasicFeatureMap(this, AclPackage.DOCUMENT_ROOT__MIXED);
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, String> getXMLNSPrefixMap() {
+ if (xMLNSPrefixMap == null) {
+ xMLNSPrefixMap = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ }
+ return xMLNSPrefixMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, String> getXSISchemaLocation() {
+ if (xSISchemaLocation == null) {
+ xSISchemaLocation = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+ }
+ return xSISchemaLocation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AccessControlType getAccessControl() {
+ return (AccessControlType)getMixed().get(AclPackage.Literals.DOCUMENT_ROOT__ACCESS_CONTROL, true);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAccessControl(AccessControlType newAccessControl, NotificationChain msgs) {
+ return ((FeatureMap.Internal)getMixed()).basicAdd(AclPackage.Literals.DOCUMENT_ROOT__ACCESS_CONTROL, newAccessControl, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAccessControl(AccessControlType newAccessControl) {
+ ((FeatureMap.Internal)getMixed()).set(AclPackage.Literals.DOCUMENT_ROOT__ACCESS_CONTROL, newAccessControl);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case AclPackage.DOCUMENT_ROOT__MIXED:
+ return ((InternalEList<?>)getMixed()).basicRemove(otherEnd, msgs);
+ case AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ return ((InternalEList<?>)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
+ case AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ return ((InternalEList<?>)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
+ case AclPackage.DOCUMENT_ROOT__ACCESS_CONTROL:
+ return basicSetAccessControl(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case AclPackage.DOCUMENT_ROOT__MIXED:
+ if (coreType) return getMixed();
+ return ((FeatureMap.Internal)getMixed()).getWrapper();
+ case AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ if (coreType) return getXMLNSPrefixMap();
+ else return getXMLNSPrefixMap().map();
+ case AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ if (coreType) return getXSISchemaLocation();
+ else return getXSISchemaLocation().map();
+ case AclPackage.DOCUMENT_ROOT__ACCESS_CONTROL:
+ return getAccessControl();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case AclPackage.DOCUMENT_ROOT__MIXED:
+ ((FeatureMap.Internal)getMixed()).set(newValue);
+ return;
+ case AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ ((EStructuralFeature.Setting)getXMLNSPrefixMap()).set(newValue);
+ return;
+ case AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ ((EStructuralFeature.Setting)getXSISchemaLocation()).set(newValue);
+ return;
+ case AclPackage.DOCUMENT_ROOT__ACCESS_CONTROL:
+ setAccessControl((AccessControlType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case AclPackage.DOCUMENT_ROOT__MIXED:
+ getMixed().clear();
+ return;
+ case AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ getXMLNSPrefixMap().clear();
+ return;
+ case AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ getXSISchemaLocation().clear();
+ return;
+ case AclPackage.DOCUMENT_ROOT__ACCESS_CONTROL:
+ setAccessControl((AccessControlType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case AclPackage.DOCUMENT_ROOT__MIXED:
+ return mixed != null && !mixed.isEmpty();
+ case AclPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+ case AclPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+ case AclPackage.DOCUMENT_ROOT__ACCESS_CONTROL:
+ return getAccessControl() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DocumentRootImpl
View
221 access-control/src/edu/unc/lib/schemas/acl/impl/GrantTypeImpl.java
@@ -0,0 +1,221 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package edu.unc.lib.schemas.acl.impl;
+
+import edu.unc.lib.schemas.acl.AclPackage;
+import edu.unc.lib.schemas.acl.GrantType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Grant Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.GrantTypeImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link edu.unc.lib.schemas.acl.impl.GrantTypeImpl#getRole <em>Role</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GrantTypeImpl extends EObjectImpl implements GrantType {
+ /**
+ * The default value of the '{@link #getGroup() <em>Group</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGroup()
+ * @generated
+ * @ordered
+ */
+ protected static final Object GROUP_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGroup()
+ * @generated
+ * @ordered
+ */
+ protected Object group = GROUP_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getRole() <em>Role</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRole()
+ * @generated
+ * @ordered
+ */
+ protected static final Object ROLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRole() <em>Role</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRole()
+ * @generated
+ * @ordered
+ */
+ protected Object role = ROLE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GrantTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return AclPackage.Literals.GRANT_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getGroup() {
+ return group;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGroup(Object newGroup) {
+ Object oldGroup = group;
+ group = newGroup;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, AclPackage.GRANT_TYPE__GROUP, oldGroup, group));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getRole() {
+ return role;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRole(Object newRole) {
+ Object oldRole = role;
+ role = newRole;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, AclPackage.GRANT_TYPE__ROLE, oldRole, role));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case AclPackage.GRANT_TYPE__GROUP: