View Javadoc

1   /**
2    * Copyright 2005-2011 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krms.api.repository.agenda;
17  
18  import java.io.Serializable;
19  import java.util.Collection;
20  
21  import javax.xml.bind.annotation.XmlAccessType;
22  import javax.xml.bind.annotation.XmlAccessorType;
23  import javax.xml.bind.annotation.XmlAnyElement;
24  import javax.xml.bind.annotation.XmlElement;
25  import javax.xml.bind.annotation.XmlRootElement;
26  import javax.xml.bind.annotation.XmlType;
27  
28  import org.kuali.rice.core.api.CoreConstants;
29  import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
30  import org.kuali.rice.core.api.mo.ModelBuilder;
31  
32  /**
33   * This is a description of what this class does - ewestfal don't forget to fill this in. 
34   * 
35   * @author Kuali Rice Team (rice.collab@kuali.org)
36   *
37   */
38  @XmlRootElement(name = AgendaTreeSubAgendaEntry.Constants.ROOT_ELEMENT_NAME)
39  @XmlAccessorType(XmlAccessType.NONE)
40  @XmlType(name = AgendaTreeSubAgendaEntry.Constants.TYPE_NAME, propOrder = {
41  		AgendaTreeSubAgendaEntry.Elements.AGENDA_ITEM_ID,
42  		AgendaTreeSubAgendaEntry.Elements.SUB_AGENDA_ID,
43  		CoreConstants.CommonElements.FUTURE_ELEMENTS
44  })
45  public final class AgendaTreeSubAgendaEntry extends AbstractDataTransferObject implements AgendaTreeEntryDefinition {
46  
47  	private static final long serialVersionUID = 8594116503548506936L;
48  
49  	@XmlElement(name = Elements.AGENDA_ITEM_ID, required = true)
50  	private final String agendaItemId;
51  	
52  	@XmlElement(name = Elements.SUB_AGENDA_ID, required = true)
53  	private final String subAgendaId;
54  		
55  	@SuppressWarnings("unused")
56      @XmlAnyElement
57      private final Collection<org.w3c.dom.Element> _futureElements = null;
58  	
59  	/**
60  	 * Used only by JAXB.
61  	 */
62  	private AgendaTreeSubAgendaEntry() {
63  		this.agendaItemId = null;
64  		this.subAgendaId = null;
65  	}
66  	
67  	private AgendaTreeSubAgendaEntry(Builder builder) {
68  		this.agendaItemId = builder.getAgendaItemId();
69  		this.subAgendaId = builder.getSubAgendaId();
70  	}
71  	
72  	@Override
73  	public String getAgendaItemId() {
74  		return agendaItemId;
75  	}
76  	
77  	public String getSubAgendaId() {
78  		return this.subAgendaId;
79  	}
80  
81  	public static class Builder implements ModelBuilder, Serializable {
82          
83  		private static final long serialVersionUID = 3548736700798501429L;
84  		
85  		private String agendaItemId;
86  		private String subAgendaId;
87  
88  		/**
89  		 * Private constructor for creating a builder with all of it's required attributes.
90  		 */
91          private Builder(String agendaItemId, String subAgendaId) {
92          	setAgendaItemId(agendaItemId);
93          	setSubAgendaId(subAgendaId);
94          }
95          
96          public static Builder create(String agendaItemId, String subAgendaId){
97          	return new Builder(agendaItemId, subAgendaId);
98          }
99          
100         public String getAgendaItemId() {
101 			return this.agendaItemId;
102 		}
103 
104 		public String getSubAgendaId() {
105 			return this.subAgendaId;
106 		}
107 		
108 		public void setAgendaItemId(String agendaItemId) {
109 			if (agendaItemId == null) {
110 				throw new IllegalArgumentException("agendaItemId was null");
111 			}
112 			this.agendaItemId = agendaItemId;
113 		}
114 
115 		public void setSubAgendaId(String subAgendaId) {
116 			if (subAgendaId == null) {
117 				throw new IllegalArgumentException("subAgendaId was null");
118 			}
119 			this.subAgendaId = subAgendaId;
120 		}
121 
122 		@Override
123         public AgendaTreeSubAgendaEntry build() {
124             return new AgendaTreeSubAgendaEntry(this);
125         }
126 		
127     }
128 	
129 	/**
130 	 * Defines some internal constants used on this class.
131 	 */
132 	static class Constants {
133 		final static String ROOT_ELEMENT_NAME = "agendaTreeSubAgendaEntry";
134 		final static String TYPE_NAME = "AgendaTreeSubAgendaEntryType";
135 	}
136 	
137 	/**
138 	 * A private class which exposes constants which define the XML element names to use
139 	 * when this object is marshalled to XML.
140 	 */
141 	static class Elements {
142 		final static String AGENDA_ITEM_ID = "agendaItemId";
143 		final static String SUB_AGENDA_ID = "subAgendaId";
144 	}
145 
146 }