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    package org.kuali.student.enrollment.acal.dto;
016    
017    import java.io.Serializable;
018    import java.util.Date;
019    import java.util.List;
020    
021    import javax.xml.bind.annotation.XmlAccessType;
022    import javax.xml.bind.annotation.XmlAccessorType;
023    import javax.xml.bind.annotation.XmlAnyElement;
024    import javax.xml.bind.annotation.XmlElement;
025    import javax.xml.bind.annotation.XmlType;
026    
027    import org.kuali.student.enrollment.acal.infc.KeyDate;
028    import org.kuali.student.r2.common.dto.IdEntityInfo;
029    
030    import org.w3c.dom.Element;
031    
032    @XmlAccessorType(XmlAccessType.FIELD)
033    @XmlType(name = "KeyDateInfo", propOrder = { 
034                    "id", "typeKey", "stateKey", "name", "descr", 
035                    "isAllDay", "isRelativeToKeyDate", "relativeAnchorKeyDateId", 
036                    "isDateRange", "startDate", "endDate",
037                    "meta", "attributes", "_futureElements" })
038    
039    public class KeyDateInfo 
040        extends IdEntityInfo 
041        implements KeyDate, Serializable {
042    
043        private static final long serialVersionUID = 1L;
044            
045        @XmlElement
046        private Boolean isAllDay;
047    
048        @XmlElement
049        private Boolean isRelativeToKeyDate;
050            
051        @XmlElement
052        private String relativeAnchorKeyDateId;
053    
054        @XmlElement
055        private Boolean isDateRange;
056            
057        @XmlElement
058        private Date startDate;
059            
060        @XmlElement
061        private Date endDate;
062            
063        @XmlAnyElement
064        private List<Element> _futureElements;
065    
066        /**
067         * Constructs a new KeyDateInfo.
068         */
069        public KeyDateInfo() {
070        }
071        
072        /**
073         * Constructs a new KeyDateInfo from another KeyDate.
074         * 
075         * @param keyDate the KeyDate to copy
076         */
077        public KeyDateInfo(KeyDate keyDate) {
078            super(keyDate);
079            if (keyDate != null) {
080                this.isAllDay = keyDate.getIsAllDay();
081                this.isRelativeToKeyDate = keyDate.getIsRelativeToKeyDate();
082                this.relativeAnchorKeyDateId = keyDate.getRelativeAnchorKeyDateId();
083    
084                this.isDateRange = keyDate.getIsDateRange();
085    
086                if (keyDate.getStartDate() != null) {
087                    this.startDate = new Date(keyDate.getStartDate().getTime());
088                }
089    
090                if (keyDate.getEndDate() != null) {
091                    this.endDate = new Date(keyDate.getEndDate().getTime());
092                }
093            }
094        }
095    
096        @Override
097        public Boolean getIsAllDay() {
098            return isAllDay;
099        }
100        
101        public void setIsAllDay(Boolean isAllDay) {
102            this.isAllDay = isAllDay;
103        }
104    
105        @Override
106        public Boolean getIsRelativeToKeyDate() {
107            return isRelativeToKeyDate;
108        }
109        
110        public void setIsRelativeToKeyDate(Boolean isRelativeToKeyDate) {
111            this.isRelativeToKeyDate = isRelativeToKeyDate;
112        }
113    
114        @Override
115        public String getRelativeAnchorKeyDateId() {
116            return relativeAnchorKeyDateId;
117        }
118        
119        public void setRelativeAnchorKeyDateId(String relativeAnchorKeyDateId) {
120            this.relativeAnchorKeyDateId = relativeAnchorKeyDateId;
121        }
122        
123        @Override
124        public Boolean getIsDateRange() {
125            return isDateRange;
126        }
127        
128        public void setIsDateRange(Boolean isDateRange) {
129            this.isDateRange = isDateRange;
130        }
131        
132        @Override
133        public Date getStartDate() {
134            return startDate;
135        }
136        
137        public void setStartDate(Date startDate) {
138            this.startDate = startDate;
139        }
140        
141        @Override
142        public Date getEndDate() {
143            return endDate;
144        }
145        
146        public void setEndDate(Date endDate) {
147            this.endDate = endDate;
148        }
149    }