001    /**
002     * Copyright 2010 The Kuali Foundation Licensed under the
003     * Educational Community License, Version 2.0 (the "License"); you may
004     * not use this file except in compliance with the License. You may
005     * obtain a copy of the License at
006     *
007     * http://www.osedu.org/licenses/ECL-2.0
008     *
009     * Unless required by applicable law or agreed to in writing,
010     * software distributed under the License is distributed on an "AS IS"
011     * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012     * or implied. See the License for the specific language governing
013     * permissions and limitations under the License.
014     */
015    
016    package org.kuali.student.lum.lu.dto;
017    
018    import java.io.Serializable;
019    import java.util.Date;
020    import java.util.HashMap;
021    import java.util.Map;
022    
023    import javax.xml.bind.annotation.XmlAccessType;
024    import javax.xml.bind.annotation.XmlAccessorType;
025    import javax.xml.bind.annotation.XmlAttribute;
026    import javax.xml.bind.annotation.XmlElement;
027    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
028    
029    import org.kuali.student.common.dto.HasAttributes;
030    import org.kuali.student.common.dto.Idable;
031    import org.kuali.student.common.dto.MetaInfo;
032    import org.kuali.student.core.ws.binding.JaxbAttributeMapListAdapter;
033    
034    
035    /**
036     *Detailed information about a single LUI.
037     */ 
038    @XmlAccessorType(XmlAccessType.FIELD)
039    public class LuiInfo implements Serializable, Idable, HasAttributes {
040    
041        private static final long serialVersionUID = 1L;
042    
043        @XmlElement
044        private String luiCode;
045    
046        @XmlElement
047        private String cluId;
048    
049        @XmlElement(name="atpKey")
050        private String atpId;
051    
052        @XmlElement
053        private Integer maxSeats;
054    
055        @XmlElement
056        private Date effectiveDate;
057    
058        @XmlElement
059        private Date expirationDate;
060    
061        @XmlElement
062        @XmlJavaTypeAdapter(JaxbAttributeMapListAdapter.class)
063        private Map<String, String> attributes;
064    
065        @XmlElement
066        private MetaInfo metaInfo;
067    
068        @XmlAttribute
069        private String state;
070    
071        @XmlAttribute
072        private String id;
073    
074        /**
075         * Code identifier/name for the LUI. This is typically used in human readable form (e.g. ENGL 100 section 123).
076         */
077        public String getLuiCode() {
078            return luiCode;
079        }
080    
081        public void setLuiCode(String luiCode) {
082            this.luiCode = luiCode;
083        }
084    
085        /**
086         * Unique identifier for a Canonical Learning Unit (CLU).
087         */
088        public String getCluId() {
089            return cluId;
090        }
091    
092        public void setCluId(String cluId) {
093            this.cluId = cluId;
094        }
095    
096        /**
097         * Unique identifier for an Academic Time Period (ATP).
098         */
099        public String getAtpId() {
100            return atpId;
101        }
102    
103        public void setAtpId(String atpId) {
104            this.atpId = atpId;
105        }
106    
107        /**
108         * Maximum number of "seats" that the LUI will hold for registration.
109         */
110        public Integer getMaxSeats() {
111            return maxSeats;
112        }
113    
114        public void setMaxSeats(Integer maxSeats) {
115            this.maxSeats = maxSeats;
116        }
117    
118        /**
119         * Date and time that this LUI became effective. This is a similar concept to the effective date on enumerated values. When an expiration date has been specified, this field must be less than or equal to the expiration date.
120         */
121        public Date getEffectiveDate() {
122            return effectiveDate;
123        }
124    
125        public void setEffectiveDate(Date effectiveDate) {
126            this.effectiveDate = effectiveDate;
127        }
128    
129        /**
130         * Date and time that this LUI expires. This is a similar concept to the expiration date on enumerated values. If specified, this should be greater than or equal to the effective date. If this field is not specified, then no expiration date has been currently defined and should automatically be considered greater than the effective date.
131         */
132        public Date getExpirationDate() {
133            return expirationDate;
134        }
135    
136        public void setExpirationDate(Date expirationDate) {
137            this.expirationDate = expirationDate;
138        }
139    
140        /**
141         * List of key/value pairs, typically used for dynamic attributes.
142         */
143        public Map<String, String> getAttributes() {
144            if (attributes == null) {
145                attributes = new HashMap<String, String>();
146            }
147            return attributes;
148        }
149    
150        public void setAttributes(Map<String, String> attributes) {
151            this.attributes = attributes;
152        }
153    
154        /**
155         * Create and last update info for the structure. This is optional and treated as read only since the data is set by the internals of the service during maintenance operations.
156         */
157        public MetaInfo getMetaInfo() {
158            return metaInfo;
159        }
160    
161        public void setMetaInfo(MetaInfo metaInfo) {
162            this.metaInfo = metaInfo;
163        }
164    
165        /**
166         * The current status of the LUI. The values for this field are constrained to those in the luState enumeration. A separate setup operation does not exist for retrieval of the meta data around this value.
167         */
168        public String getState() {
169            return state;
170        }
171    
172        public void setState(String state) {
173            this.state = state;
174        }
175    
176        /**
177         * Unique identifier for a Learning Unit Instance (LUI). This is optional, due to the identifier being set at the time of creation. Once the LUI has been created, this should be seen as required.
178         */
179        public String getId() {
180            return id;
181        }
182    
183        public void setId(String id) {
184            this.id = id;
185        }
186    }