1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.core.statement.dto; 17 18 import java.io.Serializable; 19 import java.util.Date; 20 import java.util.HashMap; 21 import java.util.Map; 22 23 import javax.xml.bind.annotation.XmlAccessType; 24 import javax.xml.bind.annotation.XmlAccessorType; 25 import javax.xml.bind.annotation.XmlAttribute; 26 import javax.xml.bind.annotation.XmlElement; 27 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 28 29 import org.kuali.student.common.dto.HasAttributes; 30 import org.kuali.student.common.dto.HasTypeState; 31 import org.kuali.student.common.dto.Idable; 32 import org.kuali.student.common.dto.MetaInfo; 33 import org.kuali.student.core.ws.binding.JaxbAttributeMapListAdapter; 34 35 @XmlAccessorType(XmlAccessType.FIELD) 36 public class RefStatementRelationInfo implements Serializable, Idable, HasTypeState, HasAttributes { 37 38 private static final long serialVersionUID = 1L; 39 40 @XmlElement 41 private String refObjectTypeKey; 42 43 @XmlElement 44 private String refObjectId; 45 46 @XmlElement 47 private String statementId; 48 49 @XmlElement 50 private Date effectiveDate; 51 52 @XmlElement 53 private Date expirationDate; 54 55 @XmlElement 56 @XmlJavaTypeAdapter(JaxbAttributeMapListAdapter.class) 57 private Map<String, String> attributes = new HashMap<String, String>(); 58 59 @XmlElement 60 private MetaInfo metaInfo; 61 62 @XmlAttribute 63 private String type; 64 65 @XmlAttribute 66 private String state; 67 68 @XmlAttribute 69 private String id; 70 71 /** 72 * Gets the unique identifier for an object type. 73 * Used to identify the type of object being referred to, 74 * so that the id can be resolved. 75 * 76 * @return Reference object type key 77 */ 78 public String getRefObjectTypeKey() { 79 return refObjectTypeKey; 80 } 81 82 /** 83 * Sets the unique identifier for an object type. 84 * Used to identify the type of object being referred to, 85 * so that the id can be resolved. 86 * 87 * @param refObjectTypeKey Reference object type key 88 */ 89 public void setRefObjectTypeKey(String refObjectTypeKey) { 90 this.refObjectTypeKey = refObjectTypeKey; 91 } 92 93 /** 94 * Sets the identifier for an object. 95 * This will likely require some additional context in order to be resolved, 96 * such as the type of object. An objectId could be a cluId, a luiId, 97 * an orgId, a documentId, etc. 98 * 99 * @return Reference object id 100 */ 101 public String getRefObjectId() { 102 return refObjectId; 103 } 104 105 /** 106 * Gets the identifier for an object. 107 * This will likely require some additional context in order to be resolved, 108 * such as the type of object. An objectId could be a cluId, a luiId, 109 * an orgId, a documentId, etc. 110 * 111 * @param refObjectId Reference object id 112 */ 113 public void setRefObjectId(String refObjectId) { 114 this.refObjectId = refObjectId; 115 } 116 117 /** 118 * Gets the unique identifier for a single statement record. 119 * 120 * @return 121 */ 122 public String getStatementId() { 123 return statementId; 124 } 125 126 /** 127 * Sets the unique identifier for a single statement record. 128 * 129 * @param statementId Statement id 130 */ 131 public void setStatementId(String statementId) { 132 this.statementId = statementId; 133 } 134 135 /** 136 * Gets the date and time that this object to statement relationship 137 * became effective. This is a similar concept to the effective date on 138 * enumerated values. When an expiration date has been specified, 139 * this field must be less than or equal to the expiration date. 140 * 141 * @return Object to statement relationship effective date 142 */ 143 public Date getEffectiveDate() { 144 return effectiveDate; 145 } 146 147 /** 148 * Sets the date and time that this object to statement relationship 149 * became effective. This is a similar concept to the effective date on 150 * enumerated values. When an expiration date has been specified, 151 * this field must be less than or equal to the expiration date. 152 * 153 * @param effectiveDate Object to statement relationship effective date 154 */ 155 public void setEffectiveDate(Date effectiveDate) { 156 this.effectiveDate = effectiveDate; 157 } 158 159 /** 160 * Gets the date and time that this object to statement relationship expires. 161 * This is a similar concept to the expiration date on enumerated values. 162 * If specified, this should be greater than or equal to the effective date. 163 * If this field is not specified, then no expiration date has been 164 * currently defined and should automatically be considered greater 165 * than the effective date. 166 * 167 * @return Object to statement relationship expiration date 168 */ 169 public Date getExpirationDate() { 170 return expirationDate; 171 } 172 173 /** 174 * Sets the date and time that this object to statement relationship expires. 175 * This is a similar concept to the expiration date on enumerated values. 176 * If specified, this should be greater than or equal to the effective date. 177 * If this field is not specified, then no expiration date has been 178 * currently defined and should automatically be considered greater 179 * than the effective date. 180 * 181 * @param expirationDate Object to statement relationship expiration date 182 */ 183 public void setExpirationDate(Date expirationDate) { 184 this.expirationDate = expirationDate; 185 } 186 187 /** 188 * Gets the list of key/value pairs, typically used for dynamic attributes. 189 * 190 * @return Map of attributes 191 */ 192 public Map<String, String> getAttributes() { 193 return attributes; 194 } 195 196 /** 197 * Sets the list of key/value pairs, typically used for dynamic attributes. 198 * 199 * @param attributes Map of attributes 200 */ 201 public void setAttributes(Map<String, String> attributes) { 202 this.attributes = attributes; 203 } 204 205 /** 206 * Gets the create and last update info for the structure. 207 * This is optional and treated as read only since the data is set by 208 * the internals of the service during maintenance operations. 209 * 210 * @return Meta data information 211 */ 212 public MetaInfo getMetaInfo() { 213 return metaInfo; 214 } 215 216 /** 217 * Sets the create and last update info for the structure. 218 * This is optional and treated as read only since the data is set by 219 * the internals of the service during maintenance operations. 220 * 221 * @param metaInfo Meta data information 222 */ 223 public void setMetaInfo(MetaInfo metaInfo) { 224 this.metaInfo = metaInfo; 225 } 226 227 /** 228 * Gets the object to statement relation type. 229 * 230 * @return Object to statement relation type 231 */ 232 public String getType() { 233 return type; 234 } 235 236 /** 237 * Sets the object to statement relation type. 238 * 239 * @param type Object to statement relation type 240 */ 241 public void setType(String type) { 242 this.type = type; 243 } 244 245 /** 246 * Gets the identifier for the current status of the object to statement 247 * relationship. The values for this field are constrained to those in 248 * the refStatementRelationState enumeration. A separate setup operation 249 * does not exist for retrieval of the meta data around this value. 250 * 251 * @return Object to statement relation state 252 */ 253 public String getState() { 254 return state; 255 } 256 257 /** 258 * Sets the identifier for the current status of the object to statement 259 * relationship. The values for this field are constrained to those in 260 * the refStatementRelationState enumeration. A separate setup operation 261 * does not exist for retrieval of the meta data around this value. 262 * 263 * @param state Object to statement relation state 264 */ 265 public void setState(String state) { 266 this.state = state; 267 } 268 269 /** 270 * Gets the unique identifier for a single Object Statement Relationship record. 271 * 272 * @return Object to Statement Relation Identifier 273 */ 274 public String getId() { 275 return id; 276 } 277 278 /** 279 * Sets the unique identifier for a single Object Statement Relationship record. 280 * 281 * @param id Object to statement relation identifier 282 */ 283 public void setId(String id) { 284 this.id = id; 285 } 286 287 @Override 288 public String toString() { 289 return "RefStatementRelationInfo[id=" + id + ", type=" + type 290 + ", statementId=" + statementId + ", refObjectId=" 291 + refObjectId + ", refObjectTypeKey=" + refObjectTypeKey + "]"; 292 } 293 }