]> source.dussan.org Git - archiva.git/commitdiff
Furthor work against the model definition.
authorJoakim Erdfelt <joakime@apache.org>
Tue, 20 Mar 2007 21:00:33 +0000 (21:00 +0000)
committerJoakim Erdfelt <joakime@apache.org>
Tue, 20 Mar 2007 21:00:33 +0000 (21:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@520584 13f79535-47bb-0310-9956-ffa450edef68

archiva-model/pom.xml
archiva-model/src/main/mdo/archiva-base.xml [new file with mode: 0644]
archiva-model/src/main/mdo/archiva.xml [deleted file]

index 5bb0f6c16c7badcd06db64fb05ee90d602cb674e..313ece24d757ed80b25e75996390826295d81df2 100755 (executable)
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <version>1.0-alpha-15-SNAPSHOT</version>
-        <configuration>
-          <version>1.0.0</version>
-          <packageWithVersion>false</packageWithVersion>
-          <model>src/main/mdo/archiva.xml</model>
-        </configuration>
         <executions>
           <execution>
-            <id>modello-java</id>
+            <id>archiva-base</id>
             <goals>
               <goal>java</goal>
+              <goal>xsd</goal>
+              <goal>jpox-jdo-mapping</goal>
               <goal>jpox-metadata-class</goal>
-              <!--
               <goal>xpp3-writer</goal>
               <goal>xpp3-reader</goal>
-               -->
-            </goals>
-          </execution>
-          <execution>
-            <id>jpox-jdo-mapping</id>
-            <goals>
-              <goal>jpox-jdo-mapping</goal>
             </goals>
             <configuration>
-              <outputDirectory>${basedir}/target/classes/org/apache/maven/archiva/model/</outputDirectory>
+              <version>1.0.0</version>
+              <packageWithVersion>false</packageWithVersion>
+              <model>src/main/mdo/archiva-base.xml</model>
             </configuration>
           </execution>
         </executions>
diff --git a/archiva-model/src/main/mdo/archiva-base.xml b/archiva-model/src/main/mdo/archiva-base.xml
new file mode 100644 (file)
index 0000000..55f6d22
--- /dev/null
@@ -0,0 +1,1271 @@
+<?xml version="1.0" ?>
+<model jpox.table-prefix="ARCHIVA_"
+       xsd.namespace="http://maven.apache.org/archiva/MODEL-1.0.0"
+       xsd.target-namespace="http://maven.apache.org/archiva/MODEL-1.0.0">
+  <id>archiva-base-model</id>
+  <name>ArchivaBaseModel</name>
+  <version>1.0.0</version>
+  <description>Archiva Model</description>
+  <defaults>
+    <default>
+      <key>package</key>
+      <value>org.apache.maven.archiva.model</value>
+    </default>
+  </defaults>
+
+  <classes>
+    <class stash.storable="false" 
+           rootElement="true"
+           jpox.enabled="false">
+      <name>ArchivaAll</name>
+      <version>1.0.0+</version>
+      <description>
+        This object is only used for the XML backup / restore features of Archiva.
+        This object is not serialized to the Database.
+      </description>
+      <fields>
+        <field>
+          <name>repositories</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaRepositoryModel</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>artifacts</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaArtifactModel</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>repositoryMetadata</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaRepositoryMetadata</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>projects</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaProjectModel</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>artifactHealth</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaArtifactHealth</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>repositoryMetadataHealth</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>ArchivaRepositoryMetadataHealth</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>repositoryContentStatistics</name>
+          <version>1.0.0+</version>
+          <association>
+            <type>RepositoryContentStatistics</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+
+    <!-- _______________________________________________________________
+          ____                      _ _
+         |  _ \ ___ _ __   ___  ___(_) |_ ___  _ __ _   _
+         | |_) / _ \ '_ \ / _ \/ __| | __/ _ \| '__| | | |
+         |  _ <  __/ |_) | (_) \__ \ | || (_) | |  | |_| |
+         |_| \_\___| .__/ \___/|___/_|\__\___/|_|   \__, |
+                   |_|                              |___/
+      -->
+
+    <class stash.storable="true"
+           jpox.table="REPOSITORIES">
+      <name>ArchivaRepositoryModel</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>id</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The unique ID for the repository.
+          </description>
+        </field>
+        <field>
+          <name>name</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The Name of the repository.
+          </description>
+        </field>
+        <field>
+          <name>url</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The URL of the repository.
+          </description>
+        </field>
+        <field>
+          <name>creationSource</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The Source of this repository.
+            (Example: Configuration, POM)
+          </description>
+        </field>
+        <field>
+          <name>layoutName</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The layout of the repository.
+            (Either 'default', or 'legacy')
+          </description>
+        </field>
+        <field>
+          <name>releasePolicy</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The releases policy of the repository.
+          </description>
+        </field>
+        <field>
+          <name>snapshotPolicy</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The snapshot policy of the repository.
+          </description>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="REPOSITORY_CONTENT_KEYS"
+           jpox.use-identifiers-as-primary-key="true"
+           jpox.identity-type="application"
+           jpox.identity-class="RepositoryContentKey">
+      <name>RepositoryContent</name>
+      <version>1.0.0+</version>
+      <description>
+        Repository Content Identifier.
+      </description>
+      <fields>
+        <field jpox.primary-key="true"
+               jpox.value-strategy="off"
+               jpox.persistence-modifier="persistent">
+          <name>groupId</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The Group ID of the repository content.
+          </description>
+        </field>
+        <field jpox.primary-key="true"
+               jpox.value-strategy="off"
+               jpox.persistence-modifier="persistent">
+          <name>artifactId</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The Artifact ID of the repository content.
+          </description>
+        </field>
+        <field jpox.primary-key="true"
+               jpox.value-strategy="off"
+               jpox.persistence-modifier="persistent">
+          <name>version</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The version of the repository content.
+          </description>
+        </field>
+        <field jpox.primary-key="true"
+               jpox.value-strategy="off"
+               jpox.persistence-modifier="persistent">
+          <name>repositoryId</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The repository associated with this content.
+          </description>
+        </field>
+      </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>1.0.0+</version>
+          <code>
+          <![CDATA[
+    /**
+     * Default Constructor.
+     * NOTE: The RepositoryContent object is invalid, and cannot be persisted to
+     *       the database until you set the {@link #setGroupId(String)}, 
+     *       {@link #setArtifactId(String)}, and {@link #setVersion(String)} values
+     *       first.
+     */ 
+    public RepositoryContent()
+    {
+        /* Do nothing */
+    }
+
+    public RepositoryContent( String groupId, String artifactId, String version )
+    {
+        this.setGroupId( groupId );
+        this.setArtifactId( artifactId );
+        this.setVersion( version );
+    }
+
+    public RepositoryContent( String repositoryId, String groupId, String artifactId, String version )
+    {
+        this.setRepositoryId( repositoryId );
+        this.setGroupId( groupId );
+        this.setArtifactId( artifactId );
+        this.setVersion( version );
+    }
+
+    public RepositoryContent( ArchivaRepositoryModel repository, String groupId, String artifactId, String version )
+    {
+        this.setRepositoryId( repository.getId() );
+        this.setGroupId( groupId );
+        this.setArtifactId( artifactId );
+        this.setVersion( version );
+    }
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
+    </class>
+
+    <!-- _______________________________________________________________
+           _         _   _  __            _
+          / \   _ __| |_(_)/ _| __ _  ___| |_
+         / _ \ | '__| __| | |_ / _` |/ __| __|
+        / ___ \| |  | |_| |  _| (_| | (__| |_
+       /_/   \_\_|   \__|_|_|  \__,_|\___|\__|
+
+      -->
+
+    <class stash.storable="true"
+           jpox.table="ARTIFACT">
+      <name>ArchivaArtifactModel</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>contentKey</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The content key for this artifact.
+          </description>
+        </field>
+        <field>
+          <name>classifier</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The classifier for this artifact.
+          </description>
+        </field>
+        <field jpox.column="FILE_TYPE">
+          <name>type</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <description>
+            The type of artifact.
+          </description>
+        </field>
+        <field>
+          <name>checksumMD5</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The MD5 checksum for the artifact file.
+          </description>
+        </field>
+        <field>
+          <name>checksumSHA1</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The SHA1 checksum for the artifact file.
+          </description>
+        </field>
+        <field>
+          <name>checksumBytecode</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The SHA1 checksum for the bytecode in the artifact file. (Can be empty if
+            the artifact contains no bytecode)
+          </description>
+        </field>
+        <field>
+          <name>whenIndexed</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>Date</type>
+          <required>false</required>
+          <description>
+            The timestamp when this artifact was indexed.
+          </description>
+        </field>
+        <field>
+          <name>origin</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The origin of this artifact. (Filesystem, Proxy, Deploy)
+          </description>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="REPOSITORY_METADATA">
+      <name>ArchivaRepositoryMetadata</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>contentKey</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The content key for this repository metadata.
+          </description>
+        </field>
+        <field>
+          <name>releasedVersion</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <type>String</type>
+          <description>
+            The released version id.
+          </description>
+        </field>
+        <field>
+          <name>availableVersions</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>String</type>
+            <multiplicity>*</multiplicity>
+          </association>
+          <description>
+            The list of available version ids.
+          </description>
+        </field>
+        <field>
+          <name>whenIndexed</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>Date</type>
+          <required>false</required>
+          <description>
+            The timestamp when this artifact was indexed.
+          </description>
+        </field>
+        <field>
+          <name>lastUpdated</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>Date</type>
+          <required>false</required>
+          <description>
+            the timestamp when this artifact was indexed.
+          </description>
+        </field>
+        <field>
+          <name>origin</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <type>String</type>
+          <required>false</required>
+          <description>
+            The origin of this artifact. (Filesystem, Proxy, Deploy)
+          </description>
+        </field>
+      </fields>
+    </class>
+
+    <!-- _______________________________________________________________
+         __  __                         ____            _           _
+        |  \/  | __ ___   _____ _ __   |  _ \ _ __ ___ (_) ___  ___| |_
+        | |\/| |/ _` \ \ / / _ \ '_ \  | |_) | '__/ _ \| |/ _ \/ __| __|
+        | |  | | (_| |\ V /  __/ | | | |  __/| | | (_) | |  __/ (__| |_
+        |_|  |_|\__,_| \_/ \___|_| |_| |_|   |_|  \___// |\___|\___|\__|
+                                                     |__/
+     -->
+
+    <class stash.storable="true"
+           jpox.table="PROJECT">
+      <name>ArchivaProjectModel</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>contentKey</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The content key for this artifact.
+          </description>
+        </field>
+        <field>
+          <name>parentContentKey</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The content key for a parent reference.
+          </description>
+        </field>
+        <field>
+          <name>packaging</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The declared packaging for this project model.
+          </description>
+        </field>
+        <field>
+          <name>origin</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The Origin of this Model. (Filesystem, Proxy, or Deploy)
+          </description>
+        </field>
+        <field>
+          <name>whenIndexed</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>Date</type>
+          <description>
+            The timestamp when this model was indexed.
+          </description>
+        </field>
+        <field>
+          <name>url</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <type>String</type>
+          <description>
+            The URL for the project's homepage.
+          </description>
+        </field>
+        <field>
+          <name>organization</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>Organization</type>
+          </association>
+        </field>
+        <field>
+          <name>licenses</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>License</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>issueManagement</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The project's issue management system information.]]></description>
+          <association>
+            <type>IssueManagement</type>
+          </association>
+        </field>
+        <field>
+          <name>ciManagement</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The project's continuous integration information.]]></description>
+          <association>
+            <type>CiManagement</type>
+          </association>
+        </field>
+        <field>
+          <name>scm</name>
+          <version>1.0.0+</version>
+          <description>
+            <![CDATA[Specification for the SCM used by the project, such as CVS, Subversion, etc.]]></description>
+          <association>
+            <type>Scm</type>
+          </association>
+        </field>
+        <field>
+          <name>individuals</name>
+          <version>1.0.0+</version>
+          <description>
+            The list of individuals around this project.
+          </description>
+          <association>
+            <type>Individual</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>dependencies</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+              This element describes all of the dependencies associated with a
+              project.
+          ]]></description>
+          <association>
+            <type>Dependency</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>repositories</name>
+          <version>1.0.0+</version>
+          <description>
+            The list project repositories in use by this project.
+          </description>
+          <association>
+            <type>ProjectRepository</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>plugins</name>
+          <version>1.0.0+</version>
+          <description>
+            The list of plugins that this project uses.
+          </description>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>reports</name>
+          <version>1.0.0+</version>
+          <description>
+            The list of reports that this project uses.
+          </description>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="ORGANIZATION">
+      <name>Organization</name>
+      <description>Specifies the organization that produces this project.</description>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>name</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The full name of the organization.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The URL to the organization's home page.]]></description>
+          <type>String</type>
+        </field>
+        <field jpox.column="FAVICON_URL">
+          <name>favicon</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The URL to the organization's logo image.  This can be an URL relative
+            to the base directory of the generated web site,
+            (e.g., <code>/images/org-logo.png</code>) or an absolute URL
+            (e.g., <code>http://my.corp/logo.png</code>).  This value is used
+            when generating the project documentation.
+          ]]></description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="LICENSES">
+      <name>License</name>
+      <description><![CDATA[
+        Describes the licenses for this project.  This is used to generate
+        the license page of the project's web site, as well as being taken into consideration in other reporting and
+        validation. The licenses listed for the project are that of the project itself, and not of dependencies.
+      ]]></description>
+      <version>1.0.0+</version>
+      <fields>
+        <field jpox.column="LICENSE_ID">
+          <name>id</name>
+          <version>1.0.0+</version>
+          <type>int</type>
+          <description>
+            The type of license.
+          </description>
+        </field>
+        <field>
+          <name>name</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The full legal name of the license.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The official url for the license text.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>comments</name>
+          <description>
+            Addendum information pertaining to this license.
+          </description>
+          <version>1.0.0+</version>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="ISSUE_MANAGEMENT">
+      <name>IssueManagement</name>
+      <description>
+        Information about the issue tracking (or bug tracking) system used to manage this project.
+      </description>
+      <version>1.0.0+</version>
+      <fields>
+        <field jpox.column="SYSTEM_NAME">
+          <name>system</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The name of the issue management system, e.g. Bugzilla]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[URL for the issue management system used by the project.]]></description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>CiManagement</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field jpox.column="SYSTEM_NAME">
+          <name>system</name>
+          <version>1.0.0+</version>
+          <description>
+            <![CDATA[The name of the continuous integration system, e.g. <code>continuum</code>.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description>
+            <![CDATA[URL for the continuous integration system used by the project if it has a web interface.]]></description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Individual</name>
+      <description>
+        Description of a person who has contributed to the project.
+        This includes contributors and commitors.
+      </description>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>name</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The full name of the individual.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>email</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The email address of the individual.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>principal</name>
+          <version>1.0.0+</version>
+          <description>
+            The RedBack (plexus security) principal associated with this Invididual.
+          </description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>commitor</name>
+          <version>1.0.0+</version>
+          <description>
+            The flag if this user is a developer and/or commitor.
+          </description>
+          <type>boolean</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[The URL for the homepage of the individual.]]></description>
+          <type>String</type>
+        </field>
+        <!-- TODO: should this just be a single Organization element -->
+        <field>
+          <name>organization</name>
+          <alias>organisation</alias>
+          <version>1.0.0+</version>
+          <description><![CDATA[The organization to which the individual belongs.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>organizationUrl</name>
+          <alias>organisationUrl</alias>
+          <version>1.0.0+</version>
+          <description><![CDATA[The URL of the organization.]]></description>
+          <type>String</type>
+        </field>
+        <field jpox.column="CONTRIBUTOR_ROLES">
+          <name>roles</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The roles the individual plays in the project.  Each role is
+            described by a <code>role</code> element, the body of which is a
+            role name. This can also be used to describe the contribution.
+          ]]></description>
+          <association>
+            <type>String</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>timezone</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The timezone the individual is in. This is a number in the range -11 to 12.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>properties</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            Properties about the individual, such as an instant messenger handle.
+          ]]></description>
+          <type>Properties</type>
+          <association xml.mapStyle="inline">
+            <type>String</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="DEPENDENCY">
+      <name>Dependency</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>contentKey</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>RepositoryContent</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The content key for this dependency.
+          </description>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            This url will be provided to the user if the jar file cannot be downloaded
+            from the central repository.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field jpox.column="DEPENDENCY_TYPE">
+          <name>type</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The type of dependency. This defaults to <code>jar</code>. While it usually represents the extension on
+            the filename of the dependency, that is not always the case. A type can be mapped to a different
+            extension and a classifier.
+            The type often correspongs to the packaging used, though this is also not always the case.
+            Some examples are <code>jar</code>, <code>war</code>, <code>ejb-client</code> and <code>test-jar</code>.
+            New types can be defined by plugins that set
+            <code>extensions</code> to <code>true</code>, so this is not a complete list.
+          ]]></description>
+          <type>String</type>
+          <defaultValue>jar</defaultValue>
+        </field>
+        <field>
+          <name>classifier</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The classifier of the dependency. This allows distinguishing two artifacts that belong to the same POM but
+            were built differently, and is appended to the filename after the version. For example,
+            <code>jdk14</code> and <code>jdk15</code>.
+          ]]></description>
+          <type>String</type>
+          <required>false</required>
+        </field>
+        <field jpox.column="DEPENDENCY_SCOPE">
+          <name>scope</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            The scope of the dependency - <code>compile</code>, <code>runtime</code>, <code>test</code>,
+            <code>system</code>, and <code>provided</code>. Used to
+            calculate the various classpaths used for compilation, testing, and so on. It also assists in determining
+            which artifacts to include in a distribution of this project. For more information, see
+            <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">the
+            dependency mechanism</a>.]]>
+          </description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>systemPath</name>
+          <version>1.0.0+</version>
+          <description><![CDATA[
+            FOR SYSTEM SCOPE ONLY. Note that use of this property is <b>discouraged</b> and may be replaced in later
+            versions. This specifies the path on the filesystem for this dependency.
+            Requires an absolute path for the value, not relative.
+            Use a property that gives the machine specific absolute path,
+            e.g. <code>${java.home}</code>.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>exclusions</name>
+          <version>1.0.0+</version>
+          <description>
+            Lists a set of artifacts that should be excluded from this dependency's artifact list when it comes to
+            calculating transitive dependencies.
+          </description>
+          <association>
+            <type>Exclusion</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>optional</name>
+          <version>1.0.0+</version>
+          <description>
+            Indicates the dependency is optional for use of this library. While the version of the dependency will be
+            taken into account for dependency calculation if the library is used elsewhere, it will not be passed on
+            transitively.
+          </description>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="EXCLUSIONS">
+      <name>Exclusion</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>groupId</name>
+          <version>4.0.0</version>
+          <description><![CDATA[The group ID of the project to exclude.]]></description>
+          <type>String</type>
+          <required>true</required>
+        </field>
+        <field>
+          <name>artifactId</name>
+          <version>4.0.0</version>
+          <description><![CDATA[The artifact ID of the project to exclude.]]></description>
+          <type>String</type>
+          <required>true</required>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="SCM">
+      <name>Scm</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field jpox.column="SCM_URL">
+          <name>connection</name>
+          <version>1.0.0</version>
+          <description><![CDATA[
+              The source control management system URL
+              that describes the repository and how to connect to the
+              repository. For more information, see the
+              <a href="http://maven.apache.org/scm/scm-url-format.html">URL format</a>
+              and <a href="http://maven.apache.org/scm/scms-overview.html">list of supported SCMs</a>.
+              This connection is read-only.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>developerConnection</name>
+          <version>1.0.0</version>
+          <description><![CDATA[
+            Just like <code>connection</code>, but for developers, i.e. this scm connection
+            will not be read only.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>1.0.0</version>
+          <description>
+            <![CDATA[The URL to the project's browsable SCM repository, such as ViewVC or Fisheye.]]></description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="PROJECT_REPOSITORIES">
+      <name>ProjectRepository</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>id</name>
+          <version>4.0.0</version>
+          <description><![CDATA[
+            A unique identifier for a repository. This is used to match the repository to configuration in
+            the <code>settings.xml</code> file, for example.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>name</name>
+          <version>4.0.0</version>
+          <description><![CDATA[
+            Human readable name of the repository.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>url</name>
+          <version>4.0.0</version>
+          <description><![CDATA[
+             The url of the repository, in the form <code>protocol://hostname/path</code>.
+          ]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>layout</name>
+          <version>4.0.0</version>
+          <description><![CDATA[
+            The type of layout this repository uses for locating and storing artifacts - can be <code>legacy</code> or
+            <code>default</code>.
+          ]]></description>
+          <type>String</type>
+          <defaultValue>default</defaultValue>
+        </field>
+        <field>
+          <name>plugins</name>
+          <version>1.0.0+</version>
+          <description>
+            Flag indicating if this repository is for plugin resolution.
+          </description>
+          <type>boolean</type>
+        </field>
+        <field>
+          <name>releases</name>
+          <version>1.0.0+</version>
+          <description>
+            Flag indicating if this repository has release versioned artifacts.
+          </description>
+          <type>boolean</type>
+        </field>
+        <field>
+          <name>snapshots</name>
+          <version>1.0.0+</version>
+          <description>
+            Flag indicating if this repository has snapshot versioned artifacts.
+          </description>
+          <type>boolean</type>
+        </field>
+      </fields>
+    </class>
+
+    <!-- _______________________________________________________________
+          _   _            _ _   _
+         | | | | ___  __ _| | |_| |__
+         | |_| |/ _ \/ _` | | __| '_ \
+         |  _  |  __/ (_| | | |_| | | |
+         |_| |_|\___|\__,_|_|\__|_| |_|
+      -->
+
+    <class stash.storable="true"
+           jpox.table="HEALTH_PROBLEMS">
+      <name>HealthProblem</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field jpox.column="PROBLEM_TYPE">
+          <name>type</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The type of health problem.
+          </description>
+        </field>
+        <field jpox.column="PROBLEM_ORIGIN">
+          <name>origin</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The origin of the health problem.
+          </description>
+        </field>
+        <field>
+          <name>message</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The origin of the health problem.
+          </description>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="HEALTH_ARTIFACTS">
+      <name>ArchivaArtifactHealth</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>artifact</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>ArchivaArtifactModel</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The Artifact to report on.
+          </description>
+        </field>
+        <field>
+          <name>problems</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>HealthProblem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+          <description>
+            The list of problems associated with this artifact.
+          </description>
+        </field>
+      </fields>
+    </class>
+    <class stash.storable="true"
+           jpox.table="HEALTH_REPOSITORY_METADATAS">
+      <name>ArchivaRepositoryMetadataHealth</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>repositoryMetadata</name>
+          <identity>true</identity>
+          <version>1.0.0+</version>
+          <required>true</required>
+          <association>
+            <type>ArchivaRepositoryMetadata</type>
+            <multiplicity>1</multiplicity>
+          </association>
+          <description>
+            The ArchivaRepositoryMetadata to report on.
+          </description>
+        </field>
+        <field>
+          <name>problems</name>
+          <identity>false</identity>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <association>
+            <type>HealthProblem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+          <description>
+            The list of problems associated with this repository metadata.
+          </description>
+        </field>
+      </fields>
+    </class>
+
+    <!-- _______________________________________________________________
+          ____  _        _   _     _   _
+         / ___|| |_ __ _| |_(_)___| |_(_) ___ ___
+         \___ \| __/ _` | __| / __| __| |/ __/ __|
+          ___) | || (_| | |_| \__ \ |_| | (__\__ \
+         |____/ \__\__,_|\__|_|___/\__|_|\___|___/
+      -->
+
+    <class stash.storable="true"
+           jpox.table="REPOSITORY_STATS">
+      <name>RepositoryContentStatistics</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>repositoryId</name>
+          <version>1.0.0+</version>
+          <identity>false</identity>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The repository id the statistics belong to.
+          </description>
+        </field>
+        <field>
+          <name>whenGathered</name>
+          <version>1.0.0+</version>
+          <identity>false</identity>
+          <required>true</required>
+          <type>Date</type>
+          <description>
+            The timestamp on when this set of statistics was gathered.
+          </description>
+        </field>
+        <field>
+          <name>duration</name>
+          <version>1.0.0+</version>
+          <identity>false</identity>
+          <required>true</required>
+          <type>long</type>
+          <description>
+            The duration (in milliseconds) for the gathering of the statistics.
+          </description>
+        </field>
+        <field>
+          <name>totalFileCount</name>
+          <version>1.0.0+</version>
+          <identity>false</identity>
+          <required>true</required>
+          <type>long</type>
+          <description>
+            The total number of files in the repository.
+          </description>
+        </field>
+        <field>
+          <name>newFileCount</name>
+          <version>1.0.0+</version>
+          <identity>false</identity>
+          <required>true</required>
+          <type>long</type>
+          <description>
+            The number of new files discovered.
+          </description>
+        </field>
+      </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>1.0.0+</version>
+          <code>
+            private transient long startTimestamp;
+
+            public void triggerStart() {
+              startTimestamp = System.currentTimeMillis();
+            }
+
+            public void triggerFinished() {
+              long finished = System.currentTimeMillis();
+              setDuration( finished - startTimestamp );
+              setWhenGathered( new java.util.Date( finished ) );
+            }
+
+            public void increaseFileCount() {
+              this.totalFileCount++;
+            }
+
+            public void increaseNewFileCount() {
+              this.newFileCount++;
+            }
+          </code>
+        </codeSegment>
+      </codeSegments>
+    </class>
+  </classes>
+</model>
diff --git a/archiva-model/src/main/mdo/archiva.xml b/archiva-model/src/main/mdo/archiva.xml
deleted file mode 100644 (file)
index 6d11351..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-<?xml version="1.0" ?>
-<model jpox.table-prefix="ARCHIVA_">
-  <id>archiva-model</id>
-  <name>ArchivaModel</name>
-  <version>1.0.0</version>
-  <description>Archiva Model</description>
-  <defaults>
-    <default>
-      <key>package</key>
-      <value>org.apache.maven.archiva.model</value>
-    </default>
-  </defaults>
-
-  <classes>
-    <class stash.storable="false" rootElement="true">
-      <name>ArchivaDatabase</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>Repositories</name>
-          <version>1.0.0+</version>
-          <association>
-            <type>ArchivaRepositoryModel</type>
-            <multiplicity>*</multiplicity>
-          </association>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="REPOSITORIES">
-      <name>ArchivaRepositoryModel</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>id</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The unique ID for the repository.
-          </description>
-        </field>
-        <field>
-          <name>name</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The Name of the repository.
-          </description>
-        </field>
-        <field>
-          <name>url</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The URL of the repository.
-          </description>
-        </field>
-        <field>
-          <name>creationSource</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The Source of this repository.
-            (Example: Configuration, POM)
-          </description>
-        </field>
-        <field>
-          <name>layoutName</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The layout of the repository.
-            (Either 'default', or 'legacy')
-          </description>
-        </field>
-        <field>
-          <name>releasePolicy</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The releases policy of the repository.
-          </description>
-        </field>
-        <field>
-          <name>snapshotPolicy</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The snapshot policy of the repository.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="REPOSITORY_CONTENT_KEYS"
-           jpox.use-identifiers-as-primary-key="true"
-           jpox.identity-type="application"
-           jpox.identity-class="RepositoryContentKey">
-      <name>RepositoryContent</name>
-      <version>1.0.0+</version>
-      <description>
-        Repository Content Identifier.
-      </description>
-      <fields>
-        <field jpox.primary-key="true"
-               jpox.value-strategy="off"
-               jpox.persistence-modifier="persistent">
-          <name>groupId</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The Group ID of the repository content.
-          </description>
-        </field>
-        <field jpox.primary-key="true"
-               jpox.value-strategy="off"
-               jpox.persistence-modifier="persistent">
-          <name>artifactId</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The Artifact ID of the repository content.
-          </description>
-        </field>
-        <field jpox.primary-key="true"
-               jpox.value-strategy="off"
-               jpox.persistence-modifier="persistent">
-          <name>version</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>false</required>
-          <description>
-            The version of the repository content.
-          </description>
-        </field>
-        <field jpox.primary-key="true"
-               jpox.value-strategy="off"
-               jpox.persistence-modifier="persistent">
-          <name>repositoryId</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <type>String</type>
-          <description>
-            The repository associated with this content.
-          </description>
-        </field>
-      </fields>
-      <codeSegments>
-        <codeSegment>
-          <version>1.0.0+</version>
-          <code>
-    public RepositoryContent( String groupId, String artifactId, String version )
-    {
-        this.setGroupId( groupId );
-        this.setArtifactId( artifactId );
-        this.setVersion( version );
-    }
-
-    public RepositoryContent( String repositoryId, String groupId, String artifactId, String version )
-    {
-        this.setRepositoryId( repositoryId );
-        this.setGroupId( groupId );
-        this.setArtifactId( artifactId );
-        this.setVersion( version );
-    }
-
-    public RepositoryContent( ArchivaRepositoryModel repository, String groupId, String artifactId, String version )
-    {
-        this.setRepositoryId( repository.getId() );
-        this.setGroupId( groupId );
-        this.setArtifactId( artifactId );
-        this.setVersion( version );
-    }
-          </code>
-        </codeSegment>
-      </codeSegments>
-    </class>
-    <class stash.storable="true"
-           jpox.table="ARTIFACTS">
-      <name>ArchivaArtifactModel</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>contentKey</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <association>
-            <type>RepositoryContent</type>
-            <multiplicity>1</multiplicity>
-          </association>
-          <description>
-            The content key for this artifact.
-          </description>
-        </field>
-        <field>
-          <name>classifier</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>false</required>
-          <description>
-            The classifier for this artifact.
-          </description>
-        </field>
-        <field jpox.column="FILE_TYPE">
-          <name>type</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <required>true</required>
-          <description>
-            The type of artifact.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="REPOSITORY_METADATAS">
-      <name>ArchivaRepositoryMetadata</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>contentKey</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <association>
-            <type>RepositoryContent</type>
-            <multiplicity>1</multiplicity>
-          </association>
-          <description>
-            The content key for this repository metadata.
-          </description>
-        </field>
-        <field>
-          <name>releasedVersion</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>false</required>
-          <type>String</type>
-          <description>
-            The released version id.
-          </description>
-        </field>
-        <field>
-          <name>availableVersions</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>false</required>
-          <association>
-            <type>String</type>
-            <multiplicity>*</multiplicity>
-          </association>
-          <description>
-            The list of available version ids.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="HEALTH_PROBLEMS">
-      <name>HealthProblem</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field jpox.column="PROBLEM_TYPE">
-          <name>type</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <type>String</type>
-          <description>
-            The type of health problem.
-          </description>
-        </field>
-        <field jpox.column="PROBLEM_ORIGIN">
-          <name>origin</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <type>String</type>
-          <description>
-            The origin of the health problem.
-          </description>
-        </field>
-        <field>
-          <name>message</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <type>String</type>
-          <description>
-            The origin of the health problem.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="HEALTH_ARTIFACTS">
-      <name>ArchivaArtifactHealth</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>artifact</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <association>
-            <type>ArchivaArtifactModel</type>
-            <multiplicity>1</multiplicity>
-          </association>
-          <description>
-            The Artifact to report on.
-          </description>
-        </field>
-        <field>
-          <name>problems</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>false</required>
-          <association>
-            <type>HealthProblem</type>
-            <multiplicity>*</multiplicity>
-          </association>
-          <description>
-            The list of problems associated with this artifact.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="HEALTH_REPOSITORY_METADATAS">
-      <name>ArchivaRepositoryMetadataHealth</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>repositoryMetadata</name>
-          <identity>true</identity>
-          <version>1.0.0+</version>
-          <required>true</required>
-          <association>
-            <type>ArchivaRepositoryMetadata</type>
-            <multiplicity>1</multiplicity>
-          </association>
-          <description>
-            The ArchivaRepositoryMetadata to report on.
-          </description>
-        </field>
-        <field>
-          <name>problems</name>
-          <identity>false</identity>
-          <version>1.0.0+</version>
-          <required>false</required>
-          <association>
-            <type>HealthProblem</type>
-            <multiplicity>*</multiplicity>
-          </association>
-          <description>
-            The list of problems associated with this repository metadata.
-          </description>
-        </field>
-      </fields>
-    </class>
-    <class stash.storable="true"
-           jpox.table="REPOSITORY_STATS">
-      <name>RepositoryContentStatistics</name>
-      <version>1.0.0+</version>
-      <fields>
-        <field>
-          <name>repositoryId</name>
-          <version>1.0.0+</version>
-          <identity>false</identity>
-          <required>true</required>
-          <type>String</type>
-          <description>
-            The repository id the statistics belong to.
-          </description>
-        </field>
-        <field>
-          <name>whenGathered</name>
-          <version>1.0.0+</version>
-          <identity>false</identity>
-          <required>true</required>
-          <type>Date</type>
-          <description>
-            The timestamp on when this set of statistics was gathered.
-          </description>
-        </field>
-        <field>
-          <name>duration</name>
-          <version>1.0.0+</version>
-          <identity>false</identity>
-          <required>true</required>
-          <type>long</type>
-          <description>
-            The duration (in milliseconds) for the gathering of the statistics.
-          </description>
-        </field>
-        <field>
-          <name>totalFileCount</name>
-          <version>1.0.0+</version>
-          <identity>false</identity>
-          <required>true</required>
-          <type>long</type>
-          <description>
-            The total number of files in the repository.
-          </description>
-        </field>
-        <field>
-          <name>newFileCount</name>
-          <version>1.0.0+</version>
-          <identity>false</identity>
-          <required>true</required>
-          <type>long</type>
-          <description>
-            The number of new files discovered.
-          </description>
-        </field>
-      </fields>
-      <codeSegments>
-        <codeSegment>
-          <version>1.0.0+</version>
-          <code>
-            private transient long startTimestamp;
-
-            public void triggerStart() {
-              startTimestamp = System.currentTimeMillis();
-            }
-
-            public void triggerFinished() {
-              long finished = System.currentTimeMillis();
-              setDuration( finished - startTimestamp );
-              setWhenGathered( new java.util.Date( finished ) );
-            }
-
-            public void increaseFileCount() {
-              this.totalFileCount++;
-            }
-
-            public void increaseNewFileCount() {
-              this.newFileCount++;
-            }
-          </code>
-        </codeSegment>
-      </codeSegments>
-    </class>
-  </classes>
-</model>