<?xml version="1.0" encoding="UTF-8"?>
<schema 
xmlns="http://www.w3.org/2001/XMLSchema" 
targetNamespace="nz.ac.aut.scrumcity"
xmlns:sc="nz.ac.aut.scrumcity" 
elementFormDefault="qualified">
	<element name="Release">

		<complexType>
			<sequence>
				<element name="ID" type="string"></element>
				<element name="Title" type="string"></element>
                <element name="Description" type="string"></element>
                <element name="StartDate" type="dateTime"></element>
				<element name="TotalWorkTime" type="double"> 
                	<annotation>
                		<documentation>
                			Any value supplied here will be ignored
                			during runtime/visualization as this value
                			will be calculated dynamically based on
                			values of constituting features.
                		</documentation>
                	</annotation>
                </element>
                <element name="ActualCompletionDate" type="dateTime">
                </element>
				<element name="ExpectedCompletionDate" type="dateTime">
				</element>
				<element name="Sprints" maxOccurs="1" minOccurs="1">
					<complexType>
						<sequence minOccurs="1" maxOccurs="unbounded">
							<element name="Sprint" type="sc:SprintType">
							</element>
						</sequence>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>


	<complexType name="SprintType">
		<sequence>
			<element name="ID" type="string"></element>
			<element name="Title" type="string"></element>
            <element name="Description" type="string"></element>
            <element name="StartDate" type="dateTime"></element>
            
            <element name="ActualCompletionDate" 
            		 type="dateTime">
            </element>
            <element name="ExpectedCompletionDate" 
            		 type="dateTime">
            </element>
			<element name="Features" maxOccurs="1" 
					 minOccurs="1">
				<complexType>
					<sequence minOccurs="1" maxOccurs="unbounded">
						<element name="Feature" type="sc:FeatureType">
						</element>
					</sequence>
				</complexType>
			</element>

		</sequence>
	</complexType>

	<complexType name="FeatureType">
		<sequence>
			<element name="ID" type="string"></element>
			<element name="Title" type="string"></element>
            <element name="Description" type="string"></element>
            <element name="Owner" type="string"></element>
            <element name="Category" type="string"></element>
            <element name="Type" type="sc:Feature_Type" 
            		 minOccurs="1" maxOccurs="1">
				<annotation>
					<documentation>
						Type of Feature. Acceptable values are
						: Feature, BugFix, Enhancement.
					</documentation>
				</annotation>
			</element>
            <element name="Priority" type="sc:Priority_Type" 
            		 minOccurs="1" maxOccurs="1">
               <annotation>
					<documentation>
						Priority of this Feature. Acceptable 
						values are: High, Normal, Low.
					</documentation>
				</annotation>
			</element>
            <element name="MethodRefs" minOccurs="1" maxOccurs="1">
            	<complexType>
            		<sequence>
            			<element name="MethodRef" type="string"
            					 maxOccurs="unbounded" minOccurs="1">
            				<annotation>
            					<documentation>
            					This should hold the Qualified Name of 
            					any method that is a direct manifestation
            					of this feature, i.e., was created as a 
            					result of this feature's implementation.
            					</documentation>
            				</annotation></element>
            		</sequence>
            	</complexType>
            </element>
            <element name="ClassRefs"  minOccurs="1" maxOccurs="1">
            <complexType>
            		<sequence>
            			<element name="ClassRef" type="string" 
            					 maxOccurs="unbounded" minOccurs="1">
            				<annotation>
            					<documentation>
            					This should hold the Qualified Name 
            					of any Class that is a direct 
            					manifestation of this feature, i.e.,
            					was created as a result of 
            					this feature's implementation.
            					</documentation>
            				</annotation></element>
            		</sequence>
            	</complexType>
            </element>
            <element name="Tasks"  minOccurs="0" maxOccurs="1">
            <complexType>
            		<sequence>
            			<element name="Task" type="string" 
            			         maxOccurs="unbounded" minOccurs="1">
            				<annotation>
            					<documentation>
            					 A feature can have a set of multiple tasks
            					</documentation>
            				</annotation>
            			</element>
            		</sequence>
            	</complexType>
            </element>
            <element name="WorkEntries"  minOccurs="0" maxOccurs="1">
            <complexType>
            		<sequence>
	            		<annotation>
		            		<documentation>
		            		A set of work entries corresponding to the
		            		 daily updates that developers record for
		            		  each feature/user story that they have 
		            		  worked on
		            		</documentation>
	            		</annotation>
            			<element name="WorkEntry" maxOccurs="unbounded" 
            					  minOccurs="1">
            				<complexType>
            					<sequence>
            						<element name="QName" type="string">
            						</element>
            						<element name="Date" type="dateTime">
            						</element>
            						<element name="Hours" type="double">
            						</element>
            						<element name="Type" 
            							     type="sc:WorkEntry_Type">
            						</element>
            					</sequence>
            				</complexType>
            			</element>
            		</sequence>
            	</complexType>
            </element>
			<element name="CommenceDateTime" type="dateTime"></element>
			<element name="CompletionDateTime" type="dateTime"></element>
			<element name="OriginalWorkEstimate" type="double"></element>
		</sequence>
	</complexType>

	<simpleType name="Feature_Type">
		<restriction base="string">
			<enumeration value="Feature"></enumeration>
			<enumeration value="BugFix"></enumeration>
			<enumeration value="Enhancement"></enumeration>
		</restriction>
	</simpleType>

	<simpleType name="Priority_Type">
		<restriction base="string">
			<enumeration value="High"></enumeration>
			<enumeration value="Normal"></enumeration>
			<enumeration value="Low"></enumeration>
		</restriction>
	</simpleType>
	
	<simpleType name="WorkEntry_Type">
		<restriction base="string">
			<enumeration value="Remaining"></enumeration>
			<enumeration value="Completed"></enumeration>
		</restriction>
	</simpleType>
</schema>




















