<?xml version="1.0"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<model>
  <id>continuum-view-models</id>
  <name>ContinuumViewModels</name>
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.continuum.web.model</value>
    </default>
  </defaults>
  <classes>
    <class rootElement="true">
      <name>ContinuumViewModels</name>
      <version>1.0.0</version>
      <fields>
        <field>
          <name>projectSummarys</name>
          <version>1.0.0</version>
          <description></description>
          <required>true</required>
          <association>
            <type>ProjectSummary</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
         <field>
          <name>groupSummarys</name>
          <version>1.0.0</version>
          <description></description>
          <required>true</required>
          <association>
            <type>GroupSummary</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
         <field>
          <name>buildDefinitionSummarys</name>
          <version>1.0.0</version>
          <description></description>
          <required>true</required>
          <association>
            <type>BuildDefinitionSummary</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <name>notifierSummarys</name>
          <version>1.0.0</version>
          <description></description>
          <required>false</required>
          <association>
            <type>NotifierSummary</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
    <class>
      <name>ProjectSummary</name>
      <version>1.0.0</version>
      <fields>
        <field>
          <name>id</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>project id of the project</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>name</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>name of the project</description>
          <type>String</type>
        </field>
        <field>
          <name>version</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>version of the project</description>
          <type>String</type>
        </field>
        <field>
          <name>projectGroupId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>id of the project group this project is a member of</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>projectGroupName</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>name of the project group this project is a member of</description>
          <type>String</type>
        </field>
        <field>
          <name>latestBuildId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>latest build id of the project</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>buildInSuccessId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description></description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>buildNumber</name>
          <version>1.0.0</version>
          <required>true</required>
          <description></description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>state</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>lifecycle state of the project</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>inBuildingQueue</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>true/false depending on if the project is in the build queue or not</description>
          <type>boolean</type>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>inCheckoutQueue</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>true/false depending on if the project is in the checkout queue or not</description>
          <type>boolean</type>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>lastBuildDateTime</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>last build dateTime of the project</description>
          <type>long</type>
        </field>
        <field>
          <name>lastBuildDuration</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>last build duration of the project</description>
          <type>String</type>
        </field>
        <field>
          <name>projectType</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>type of the project</description>
          <type>String</type>
        </field>
      </fields>
    </class>
    <class>
      <name>GroupSummary</name>
      <version>1.0.0</version>
      <fields>
        <field>
          <name>id</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>internal continuum group id</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>name</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>name of the project group</description>
          <type>String</type>
        </field>
         <field>
          <name>groupId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>maven groupId of the project group</description>
          <type>String</type>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>description of the project group</description>
          <type>String</type>
        </field>
        <field>
          <name>numProjects</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>the number of projects in the project group</description>
          <type>int</type>
        </field>
        <field>
          <name>projectType</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>the type of project, maven2/maven1/ant/shell</description>
          <type>String</type>
        </field>
        <field>
          <name>statusMessage</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>a status message like, (building project X)</description>
          <type>String</type>
        </field>
        <field>
         <name>nextScheduledBuild</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>timestamp for the next scheduled build</description>
          <type>String</type>
        </field>
        <field>
          <name>projects</name>
          <version>1.0.0</version>
          <description></description>
          <required>true</required>
          <association>
            <type>ProjectSummary</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <name>numSuccesses</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>number of successful builds in the project group</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>numFailures</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>number of failed builds in the project group</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>numErrors</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>number of errored builds in the project group</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>repositoryId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>local repository id of the project group</description>
          <type>int</type>
          <defaultValue>-1</defaultValue>
        </field>
        <field>
          <name>repositoryName</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>local repository name of the project group</description>
          <type>String</type>
        </field>
      </fields>
    </class>
    <class>
      <name>BuildDefinitionSummary</name>
      <version>1.0.0+</version>
      <fields>
        <field>
          <name>id</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>id of the build definition</description>
          <type>int</type>
        </field>
        <field>
          <name>projectId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>project id of the project containing the build definition</description>
          <type>int</type>
        </field>
        <field>
          <name>projectGroupId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>project group id of the project group with the build definition</description>
          <type>int</type>
        </field>
        <field>
          <name>goals</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>goals for build definition</description>
          <type>String</type>
        </field>
        <field>
          <name>arguments</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>arguments for build definition</description>
          <type>String</type>
        </field>
        <field>
          <name>buildFile</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>goals for build definition</description>
          <type>String</type>
        </field>
        <field>
          <name>isBuildFresh</name>
          <version>1.0.0</version>
          <description>if the build is to be smoked and checked back out from the scm each build</description>
          <type>boolean</type>
        </field>
        <field>
          <name>isDefault</name>
          <version>1.0.0</version>
          <description>if the build definition is used in default cases</description>
          <type>boolean</type>
        </field>
        <field>
          <name>scheduleId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>id of the schedule for build definition</description>
          <type>int</type>
        </field>
        <field>
          <name>scheduleName</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>name of the schedule for build definition</description>
          <type>String</type>
        </field>
        <field>
          <name>from</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>source of build definition, project or project group lvl</description>
          <type>String</type>
        </field>
        <field>
          <name>profileName</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>name of the profile for the build definition</description>
          <type>String</type>
        </field>
        <field>
          <name>projectName</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>if project lvl, then the name of the project using the definition</description>
          <type>String</type>
        </field>
        <field>
          <name>profileId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>id of the profile for build definition</description>
          <type>int</type>
        </field> 
        <field>
          <name>description</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>description of the buid defintion</description>
        </field>
        <field>
          <name>type</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>type of the buid defintion</description>
        </field>   
        <field>
          <name>alwaysBuild</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <defaultValue>false</defaultValue>
          <description>true if the build had to be forced even if there is no scm change</description>
        </field>                    
      </fields>
    </class>
    <class>
      <name>NotifierSummary</name>
      <version>1.0.0+</version>
       <fields>
        <field>
          <name>id</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>id of the notifier</description>
          <type>int</type>
        </field>
        <field>
          <name>projectId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>project id of the project containing the notifier</description>
          <type>int</type>
        </field>
        <field>
          <name>projectName</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>project name of the project containing the notifier</description>
          <type>String</type>
        </field>
        <field>
          <name>projectGroupId</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>project group id of the project group with the notifier</description>
          <type>int</type>
        </field>
        <field>
          <name>type</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>Type of notifier - mail, IRC, jabber etc.</description>
          <type>String</type>
        </field>
        <field>
          <name>fromProject</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>The origin of the notifier (pom or user).</description>
          <type>boolean</type>
        </field>
        <field>
          <name>events</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>Events that trigger this notifier</description>
          <type>String</type>
        </field>
        <field>
          <name>recipient</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>Recipient for notifications generated by the notifier</description>
          <type>String</type>
        </field>
        <field>
          <name>sender</name>
          <version>1.0.0</version>
          <required>false</required>
          <description>Sender of the notifications</description>
          <type>String</type>
        </field>
        <field>
          <name>enabled</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>Determines if the notifier is enabled</description>
          <type>boolean</type>
        </field>
      </fields>
    </class>    
    <class>
      <name>DistributedBuildSummary</name>
      <version>1.0.0+</version>
      <fields>
        <field>
          <name>url</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>URL of the build agent</description>
          <type>String</type>
        </field>
        <field>
          <name>projectGroupId</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>ID of the project group</description>
          <type>int</type>
        </field>
        <field>
          <name>projectGroupName</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>Name of the project group</description>
          <type>String</type>
        </field>
        <field>
          <name>scmRootAddress</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>Scm root address of projects</description>
          <type>String</type>
        </field>
        <field>
          <name>cancelEnabled</name>
          <version>1.0.0</version>
          <required>true</required>
          <description>Determines if the cancel button is enabled</description>
          <type>boolean</type>
        </field>
      </fields>
    </class>
  </classes>
</model>
