1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
package org.kuali.student.core.atp.service.impl; |
17 | |
|
18 | |
import java.util.ArrayList; |
19 | |
import java.util.List; |
20 | |
|
21 | |
import org.kuali.student.core.atp.dao.AtpDao; |
22 | |
import org.kuali.student.core.atp.dto.AtpInfo; |
23 | |
import org.kuali.student.core.atp.dto.AtpTypeInfo; |
24 | |
import org.kuali.student.core.atp.dto.DateRangeInfo; |
25 | |
import org.kuali.student.core.atp.dto.MilestoneInfo; |
26 | |
import org.kuali.student.core.atp.entity.Atp; |
27 | |
import org.kuali.student.core.atp.entity.AtpAttribute; |
28 | |
import org.kuali.student.core.atp.entity.AtpRichText; |
29 | |
import org.kuali.student.core.atp.entity.AtpType; |
30 | |
import org.kuali.student.core.atp.entity.DateRange; |
31 | |
import org.kuali.student.core.atp.entity.DateRangeAttribute; |
32 | |
import org.kuali.student.core.atp.entity.DateRangeType; |
33 | |
import org.kuali.student.core.atp.entity.Milestone; |
34 | |
import org.kuali.student.core.atp.entity.MilestoneAttribute; |
35 | |
import org.kuali.student.core.atp.entity.MilestoneType; |
36 | |
import org.kuali.student.core.exceptions.DoesNotExistException; |
37 | |
import org.kuali.student.core.exceptions.InvalidParameterException; |
38 | |
import org.kuali.student.core.exceptions.VersionMismatchException; |
39 | |
import org.kuali.student.core.service.impl.BaseAssembler; |
40 | |
import org.springframework.beans.BeanUtils; |
41 | |
|
42 | 0 | public class AtpAssembler extends BaseAssembler{ |
43 | |
|
44 | |
public static Atp toAtp(boolean isUpdate, AtpInfo atpInfo, AtpDao dao) |
45 | |
throws InvalidParameterException, DoesNotExistException, VersionMismatchException { |
46 | |
Atp atp; |
47 | 3 | if (isUpdate) { |
48 | 2 | atp = dao.fetch(Atp.class, atpInfo.getId()); |
49 | 2 | if (atp == null) { |
50 | 0 | throw new DoesNotExistException("Atp does not exist for key: " + atpInfo.getId()); |
51 | |
} |
52 | 2 | if (!String.valueOf(atp.getVersionNumber()).equals(atpInfo.getMetaInfo().getVersionInd())){ |
53 | 1 | throw new VersionMismatchException("Atp to be updated is not the current version"); |
54 | |
} |
55 | |
} else { |
56 | 1 | atp = new Atp(); |
57 | |
} |
58 | |
|
59 | |
|
60 | 2 | BeanUtils.copyProperties(atpInfo, atp, new String[] { "type", |
61 | |
"attributes", "metaInfo", "desc" }); |
62 | |
|
63 | |
|
64 | 2 | atp.setAttributes(toGenericAttributes(AtpAttribute.class, atpInfo.getAttributes(), atp, dao)); |
65 | |
|
66 | |
|
67 | 2 | AtpType atpType = dao.fetch(AtpType.class, atpInfo.getType()); |
68 | 2 | if (atpType == null) { |
69 | 0 | throw new InvalidParameterException( |
70 | |
"AtpType does not exist for key: " + atpInfo.getType()); |
71 | |
} |
72 | 2 | atp.setType(atpType); |
73 | |
|
74 | |
|
75 | 2 | atp.setDescr(toRichText(AtpRichText.class, atpInfo.getDesc())); |
76 | |
|
77 | 2 | return atp; |
78 | |
} |
79 | |
|
80 | |
public static AtpInfo toAtpInfo(Atp atp) { |
81 | 6 | AtpInfo atpInfo = new AtpInfo(); |
82 | |
|
83 | 6 | BeanUtils.copyProperties(atp, atpInfo, new String[] { "type", |
84 | |
"attributes", "metaInfo", "desc" }); |
85 | |
|
86 | |
|
87 | 6 | atpInfo.setAttributes(toAttributeMap(atp.getAttributes())); |
88 | 6 | atpInfo.setMetaInfo(toMetaInfo(atp.getMeta(), atp.getVersionNumber())); |
89 | 6 | atpInfo.setType(atp.getType().getId()); |
90 | 6 | atpInfo.setDesc(toRichTextInfo(atp.getDescr())); |
91 | |
|
92 | 6 | return atpInfo; |
93 | |
} |
94 | |
|
95 | |
|
96 | |
|
97 | |
public static List<AtpInfo> toAtpInfoList(List<Atp> atps) { |
98 | 3 | List<AtpInfo> atpInfoList = new ArrayList<AtpInfo>(); |
99 | 3 | for (Atp atp : atps) { |
100 | 4 | atpInfoList.add(toAtpInfo(atp)); |
101 | |
} |
102 | 3 | return atpInfoList; |
103 | |
} |
104 | |
|
105 | |
|
106 | |
|
107 | |
public static AtpTypeInfo toAtpTypeInfo(AtpType atpType) { |
108 | |
|
109 | 2 | AtpTypeInfo atpTypeInfo = new AtpTypeInfo(); |
110 | |
|
111 | 2 | BeanUtils.copyProperties(atpType, atpTypeInfo, new String[] { |
112 | |
"seasonalType", "durationType", "attributes" }); |
113 | |
|
114 | |
|
115 | 2 | atpTypeInfo.setAttributes(toAttributeMap(atpType.getAttributes())); |
116 | |
|
117 | 2 | atpTypeInfo.setDurationType(atpType.getDurationType().getId()); |
118 | 2 | atpTypeInfo.setSeasonalType(atpType.getSeasonalType().getId()); |
119 | |
|
120 | 2 | return atpTypeInfo; |
121 | |
} |
122 | |
|
123 | |
public static List<AtpTypeInfo> toAtpTypeInfoList(List<AtpType> atpTypes) { |
124 | 1 | List<AtpTypeInfo> typeInfoList = new ArrayList<AtpTypeInfo>(); |
125 | 1 | for (AtpType atpType : atpTypes) { |
126 | 2 | typeInfoList.add(toAtpTypeInfo(atpType)); |
127 | |
} |
128 | 1 | return typeInfoList; |
129 | |
} |
130 | |
|
131 | |
public static DateRange toDateRange(boolean isUpdate, |
132 | |
DateRangeInfo dateRangeInfo, AtpDao dao) |
133 | |
throws InvalidParameterException, DoesNotExistException, VersionMismatchException { |
134 | |
|
135 | |
DateRange dateRange; |
136 | 3 | if (isUpdate) { |
137 | 2 | dateRange = dao.fetch(DateRange.class, dateRangeInfo.getId()); |
138 | 2 | if (dateRange == null) { |
139 | 0 | throw new DoesNotExistException("DateRange does not exist for key: " + dateRangeInfo.getId()); |
140 | |
} |
141 | 2 | if (!String.valueOf(dateRange.getVersionNumber()).equals(dateRangeInfo.getMetaInfo().getVersionInd())){ |
142 | 1 | throw new VersionMismatchException("DateRange to be updated is not the current version"); |
143 | |
} |
144 | |
} else { |
145 | 1 | dateRange = new DateRange(); |
146 | |
} |
147 | |
|
148 | 2 | BeanUtils.copyProperties(dateRangeInfo, dateRange, new String[] { |
149 | |
"atpKey", "type", "attributes", "metaInfo","desc" }); |
150 | |
|
151 | |
|
152 | 2 | dateRange.setAttributes(toGenericAttributes(DateRangeAttribute.class, |
153 | |
dateRangeInfo.getAttributes(), dateRange, dao)); |
154 | |
|
155 | |
|
156 | 2 | Atp atp = dao.fetch(Atp.class, dateRangeInfo.getAtpId()); |
157 | 2 | if (atp == null) { |
158 | 0 | throw new InvalidParameterException("Atp does not exist for key: " |
159 | |
+ dateRangeInfo.getAtpId()); |
160 | |
} |
161 | 2 | dateRange.setAtp(atp); |
162 | |
|
163 | |
|
164 | 2 | DateRangeType dateRangeType = dao.fetch(DateRangeType.class, |
165 | |
dateRangeInfo.getType()); |
166 | 2 | if (dateRangeType == null) { |
167 | 0 | throw new InvalidParameterException( |
168 | |
"DateRangeType does not exist for key: " |
169 | |
+ dateRangeInfo.getType()); |
170 | |
} |
171 | 2 | dateRange.setType(dateRangeType); |
172 | |
|
173 | 2 | dateRange.setDescr(toRichText(AtpRichText.class, dateRangeInfo.getDesc())); |
174 | |
|
175 | 2 | return dateRange; |
176 | |
} |
177 | |
|
178 | |
public static DateRangeInfo toDateRangeInfo(DateRange dateRange) { |
179 | |
|
180 | 4 | DateRangeInfo dateRangeInfo = new DateRangeInfo(); |
181 | |
|
182 | 4 | BeanUtils.copyProperties(dateRange, dateRangeInfo, new String[] { |
183 | |
"atp", "type", "attributes", "metaInfo", "desc" }); |
184 | |
|
185 | |
|
186 | 4 | dateRangeInfo |
187 | |
.setAttributes(toAttributeMap(dateRange.getAttributes())); |
188 | 4 | dateRangeInfo.setMetaInfo(toMetaInfo(dateRange.getMeta(), dateRange |
189 | |
.getVersionNumber())); |
190 | 4 | dateRangeInfo.setType(dateRange.getType().getId()); |
191 | 4 | dateRangeInfo.setAtpId(dateRange.getAtp().getId()); |
192 | 4 | dateRangeInfo.setDesc(toRichTextInfo(dateRange.getDescr())); |
193 | |
|
194 | 4 | return dateRangeInfo; |
195 | |
} |
196 | |
|
197 | |
|
198 | |
|
199 | |
public static List<DateRangeInfo> toDateRangeInfoList( |
200 | |
List<DateRange> dateRanges) { |
201 | 2 | List<DateRangeInfo> dateRangeInfoList = new ArrayList<DateRangeInfo>(); |
202 | 2 | for (DateRange dateRange : dateRanges) { |
203 | 2 | dateRangeInfoList.add(toDateRangeInfo(dateRange)); |
204 | |
} |
205 | 2 | return dateRangeInfoList; |
206 | |
} |
207 | |
|
208 | |
public static Milestone toMilestone(boolean isUpdate, |
209 | |
MilestoneInfo milestoneInfo, AtpDao dao) |
210 | |
throws InvalidParameterException, DoesNotExistException, VersionMismatchException { |
211 | |
|
212 | |
Milestone milestone; |
213 | 3 | if (isUpdate) { |
214 | 2 | milestone = dao.fetch(Milestone.class, milestoneInfo.getId()); |
215 | 2 | if (milestone == null) { |
216 | 0 | throw new DoesNotExistException("Milestone does not exist for key: " + milestoneInfo.getId()); |
217 | |
} |
218 | 2 | if (!String.valueOf(milestone.getVersionNumber()).equals(milestoneInfo.getMetaInfo().getVersionInd())){ |
219 | 1 | throw new VersionMismatchException("Milestone to be updated is not the current version"); |
220 | |
} |
221 | |
} else { |
222 | 1 | milestone = new Milestone(); |
223 | |
} |
224 | |
|
225 | 2 | BeanUtils.copyProperties(milestoneInfo, milestone, new String[] { |
226 | |
"atpKey", "type", "attributes", "metaInfo", "desc" }); |
227 | |
|
228 | |
|
229 | 2 | milestone.setAttributes(toGenericAttributes(MilestoneAttribute.class, |
230 | |
milestoneInfo.getAttributes(), milestone, dao)); |
231 | |
|
232 | |
|
233 | 2 | Atp atp = dao.fetch(Atp.class, milestoneInfo.getAtpId()); |
234 | 2 | if (atp == null) { |
235 | 0 | throw new InvalidParameterException("Atp does not exist for key: " |
236 | |
+ milestoneInfo.getAtpId()); |
237 | |
} |
238 | 2 | milestone.setAtp(atp); |
239 | |
|
240 | |
|
241 | 2 | MilestoneType milestoneType = dao.fetch(MilestoneType.class, |
242 | |
milestoneInfo.getType()); |
243 | 2 | if (milestoneType == null) { |
244 | 0 | throw new InvalidParameterException( |
245 | |
"MilestoneType does not exist for key: " |
246 | |
+ milestoneInfo.getType()); |
247 | |
} |
248 | 2 | milestone.setType(milestoneType); |
249 | |
|
250 | 2 | milestone.setDescr(toRichText(AtpRichText.class, milestoneInfo.getDesc())); |
251 | |
|
252 | 2 | return milestone; |
253 | |
|
254 | |
} |
255 | |
|
256 | |
public static MilestoneInfo toMilestoneInfo(Milestone milestone) { |
257 | |
|
258 | 5 | MilestoneInfo milestoneInfo = new MilestoneInfo(); |
259 | |
|
260 | 5 | BeanUtils.copyProperties(milestone, milestoneInfo, new String[] { |
261 | |
"atp", "type", "attributes", "metaInfo", "desc" }); |
262 | |
|
263 | |
|
264 | 5 | milestoneInfo |
265 | |
.setAttributes(toAttributeMap(milestone.getAttributes())); |
266 | 5 | milestoneInfo.setMetaInfo(toMetaInfo(milestone.getMeta(), milestone |
267 | |
.getVersionNumber())); |
268 | 5 | milestoneInfo.setType(milestone.getType().getId()); |
269 | 5 | milestoneInfo.setAtpId(milestone.getAtp().getId()); |
270 | 5 | milestoneInfo.setDesc(toRichTextInfo(milestone.getDescr())); |
271 | |
|
272 | 5 | return milestoneInfo; |
273 | |
} |
274 | |
|
275 | |
public static List<MilestoneInfo> toMilestoneInfoList( |
276 | |
List<Milestone> milestones) { |
277 | 3 | List<MilestoneInfo> milestoneInfoList = new ArrayList<MilestoneInfo>(); |
278 | 3 | for (Milestone milestone : milestones) { |
279 | 3 | milestoneInfoList.add(toMilestoneInfo(milestone)); |
280 | |
} |
281 | 3 | return milestoneInfoList; |
282 | |
} |
283 | |
|
284 | |
} |