1 package org.kuali.student.enrollment.class2.courseoffering.dto;
2
3 import org.apache.commons.lang.BooleanUtils;
4 import org.apache.commons.lang.StringUtils;
5 import org.kuali.rice.core.api.config.property.ConfigContext;
6 import org.kuali.rice.core.api.util.KeyValue;
7 import org.kuali.student.enrollment.class2.courseoffering.util.ActivityOfferingConstants;
8 import org.kuali.student.enrollment.class2.courseoffering.util.CourseOfferingConstants;
9 import org.kuali.student.enrollment.class2.courseoffering.util.CourseOfferingManagementUtil;
10 import org.kuali.student.enrollment.class2.scheduleofclasses.sort.ComparatorModel;
11 import org.kuali.student.enrollment.courseoffering.dto.ActivityOfferingInfo;
12 import org.kuali.student.enrollment.courseoffering.dto.FormatOfferingInfo;
13 import org.kuali.student.enrollment.courseoffering.dto.OfferingInstructorInfo;
14 import org.kuali.student.enrollment.courseofferingset.dto.SocInfo;
15 import org.kuali.student.enrollment.coursewaitlist.dto.CourseWaitListInfo;
16 import org.kuali.student.r2.common.dto.AttributeInfo;
17 import org.kuali.student.r2.common.util.constants.CourseOfferingSetServiceConstants;
18 import org.kuali.student.r2.common.util.constants.LuiServiceConstants;
19 import org.kuali.student.r2.core.acal.dto.TermInfo;
20 import org.kuali.student.r2.core.population.dto.PopulationInfo;
21 import org.kuali.student.r2.core.scheduling.dto.ScheduleRequestSetInfo;
22 import org.kuali.student.r2.lum.course.dto.CourseInfo;
23 import org.kuali.student.r2.lum.course.infc.CourseCrossListing;
24
25 import java.io.Serializable;
26 import java.util.ArrayList;
27 import java.util.Date;
28 import java.util.HashMap;
29 import java.util.List;
30
31
32
33
34
35
36
37 public class ActivityOfferingWrapper implements Serializable, ComparatorModel{
38
39 private String waitListType;
40 private String waitListTypeUI;
41
42 private String aoClusterName;
43 private String aoClusterID;
44 private ActivityOfferingInfo aoInfo;
45 private FormatOfferingInfo formatOffering;
46 private List<OfferingInstructorWrapper> instructors;
47 private List<ScheduleComponentWrapper> scheduleComponentWrappers;
48 private List<SeatPoolWrapper> seatpools;
49 private List<PopulationInfo> populationsForSPValidation;
50 private boolean readOnlyView;
51 private boolean isChecked;
52 private boolean isCheckedByCluster;
53 private String courseOfferingId;
54 private String populationsJSONString;
55
56 private String stateName;
57 private String typeName;
58 private String typeKey;
59
60 private String formatOfferingName;
61
62 private Date termRegStartDate;
63 private String waitListText = "";
64 private String toolTipText = "";
65
66 private String instructorNameHighestPercentEffort = "";
67
68 private String firstInstructorDisplayName;
69 private String instructorDisplayNames;
70
71 private String courseOfferingCode = "";
72
73 private List<ScheduleWrapper> actualScheduleComponents;
74 private List<ScheduleWrapper> requestedScheduleComponents;
75 private List<ScheduleWrapper> deletedScheduleComponents;
76 private ScheduleWrapper newScheduleRequest;
77
78 private SocInfo socInfo;
79
80 private String scheduledState = "";
81 private String startTimeDisplay = "";
82 private String endTimeDisplay = "";
83 private String daysDisplayName = "";
84 private String buildingName = "";
85 private String buildingCode = "";
86 private String bldgCodeSimple = "";
87 private String roomName = "";
88 private String tbaDisplayName = "";
89 private String colocatedAoInfo = "";
90
91 private List<String> startTime;
92 private List<String> endTime;
93 private List<String> weekDays;
94
95 private boolean schedulesModified;
96
97 private String adminOrg;
98
99
100 private boolean enableApproveButton = false;
101 private boolean enableDraftButton = false;
102 private boolean enableSuspendButton = false;
103 private boolean enableCancelButton = false;
104 private boolean enableReinstateButton = false;
105 private boolean enableMoveToButton = false;
106 private boolean enableDeleteButton = false;
107 private boolean enableCopyAOActionLink = false;
108 private boolean enableEditAOActionLink = false;
109
110 private boolean colocatedAO;
111 private List<ColocatedActivity> colocatedActivities;
112 private boolean maxEnrollmentShared;
113 private boolean hiddenMaxEnrollmentShared;
114 private int sharedMaxEnrollment;
115 private boolean hasSeatpools;
116
117 private ScheduleRequestSetInfo scheduleRequestSetInfo;
118
119 private EditRenderHelper editRenderHelper;
120 private boolean isPartOfColoSetOnLoadAlready;
121 private boolean isColocatedOnLoadAlready;
122 private boolean isSendRDLsToSchedulerAfterMSE;
123 private boolean isRemovedFromColoSet;
124 private String reinstateStateName;
125
126 protected String viewId;
127
128 private CourseOfferingContextBar contextBar = CourseOfferingContextBar.NULL_SAFE_INSTANCE;
129
130
131 private CourseInfo course;
132
133
134
135
136
137 private TermInfo term;
138
139 private String termName;
140
141 private String subTermName = "";
142
143
144 private String termDisplayString = "";
145
146
147 private String subTermId;
148
149 private boolean hasSubTerms;
150
151 private String termStartEndDate = "";
152
153
154
155
156
157 private String subTermDatesJsonString;
158
159
160 private boolean hasRule;
161
162 private SchOfClassesRenderHelper schOfClassesRenderHelper;
163
164 private CourseWaitListInfo courseWaitListInfo;
165
166 private boolean hasWaitlist;
167
168 private boolean hasWaitlistCO;
169
170 private boolean limitWaitlistSize;
171
172 private String requisite;
173
174 private boolean isCentralSchedulingCoOrdinator;
175
176 private String timeSlotType;
177
178 private String crossListedCourseCodes;
179
180
181
182
183
184
185
186
187
188
189
190
191 public static enum NonStandardTimeslotCreationMode {
192
193 ALLOWED,
194 NOT_ALLOWED,
195 NEEDS_APPROVAL;
196
197 private NonStandardTimeslotCreationMode() { }
198
199
200
201
202
203
204
205
206 public static NonStandardTimeslotCreationMode fromString( String text ) {
207 if( text != null ) {
208 for( NonStandardTimeslotCreationMode m : NonStandardTimeslotCreationMode.values() ) {
209 if( text.equalsIgnoreCase( m.name() ) ) {
210 return m;
211 }
212 }
213 }
214 return NonStandardTimeslotCreationMode.NEEDS_APPROVAL;
215 }
216
217 }
218
219 public ActivityOfferingWrapper(){
220 aoInfo = new ActivityOfferingInfo();
221 instructors = new ArrayList<OfferingInstructorWrapper>();
222 OfferingInstructorWrapper instructorWrapper = new OfferingInstructorWrapper();
223 instructors.add(instructorWrapper);
224 seatpools = new ArrayList<SeatPoolWrapper>();
225 populationsForSPValidation = new ArrayList<PopulationInfo>();
226 aoInfo.setStateKey(LuiServiceConstants.LUI_AO_STATE_DRAFT_KEY);
227 aoInfo.setTypeKey(LuiServiceConstants.LECTURE_ACTIVITY_OFFERING_TYPE_KEY);
228 formatOffering = new FormatOfferingInfo();
229 term = new TermInfo();
230 scheduleComponentWrappers = new ArrayList<ScheduleComponentWrapper>();
231 this.setReadOnlyView(false);
232 this.setIsChecked(false);
233 actualScheduleComponents = new ArrayList<ScheduleWrapper>();
234 requestedScheduleComponents = new ArrayList<ScheduleWrapper>();
235 newScheduleRequest = new ScheduleWrapper();
236 colocatedActivities = new ArrayList<ColocatedActivity>();
237 maxEnrollmentShared = true;
238 editRenderHelper = new EditRenderHelper();
239 deletedScheduleComponents = new ArrayList<ScheduleWrapper>();
240 courseWaitListInfo = new CourseWaitListInfo();
241 hasWaitlist = false;
242 hasWaitlistCO = false;
243 limitWaitlistSize = false;
244 startTime = new ArrayList<String>();
245 endTime = new ArrayList<String>();
246 weekDays = new ArrayList<String>();
247 }
248
249 public ActivityOfferingWrapper(ActivityOfferingInfo info){
250 this(info,false);
251 }
252
253 public ActivityOfferingWrapper(ActivityOfferingInfo info,boolean isCentralSchedulingCoOrdinator){
254 this();
255 aoInfo = info;
256 instructors = new ArrayList<OfferingInstructorWrapper>();
257 if(info.getInstructors() == null || info.getInstructors().isEmpty()) {
258 OfferingInstructorWrapper instructorWrapper = new OfferingInstructorWrapper();
259 instructors.add(instructorWrapper);
260 } else if(info.getInstructors().size() > 0) {
261 for(OfferingInstructorInfo instructorInfo : info.getInstructors()) {
262 OfferingInstructorWrapper instructorWrapper = new OfferingInstructorWrapper(instructorInfo);
263 if (instructorInfo.getPercentageEffort() != null) {
264 instructorWrapper.setsEffort(Integer.toString(instructorInfo.getPercentageEffort().intValue()));
265 }
266 instructors.add(instructorWrapper);
267 }
268 }
269 seatpools = new ArrayList<SeatPoolWrapper>();
270 populationsForSPValidation = new ArrayList<PopulationInfo>();
271 startTime = new ArrayList<String>();
272 endTime = new ArrayList<String>();
273 weekDays = new ArrayList<String>();
274 this.isCentralSchedulingCoOrdinator = isCentralSchedulingCoOrdinator;
275 }
276
277 public String getAoClusterName() {
278 return aoClusterName;
279 }
280
281 public void setAoClusterName(String aoClusterName) {
282 this.aoClusterName = aoClusterName;
283 }
284
285 public String getAoClusterID() {
286 return aoClusterID;
287 }
288
289 public void setAoClusterID(String aoClusterID) {
290 this.aoClusterID = aoClusterID;
291 }
292
293 public boolean isEnableApproveButton() {
294 return enableApproveButton;
295 }
296
297 public void setEnableApproveButton(boolean enableApproveButton) {
298 this.enableApproveButton = enableApproveButton;
299 }
300
301 public boolean isEnableDraftButton() {
302 return enableDraftButton;
303 }
304
305 public void setEnableDraftButton(boolean enableDraftButton) {
306 this.enableDraftButton = enableDraftButton;
307 }
308
309 public boolean isEnableSuspendButton() {
310 return enableSuspendButton;
311 }
312
313 public void setEnableSuspendButton(boolean enableSuspendButton) {
314 this.enableSuspendButton = enableSuspendButton;
315 }
316
317 public boolean isEnableCancelButton() {
318 return enableCancelButton;
319 }
320
321 public void setEnableCancelButton(boolean enableCancelButton) {
322 this.enableCancelButton = enableCancelButton;
323 }
324
325 public boolean isEnableMoveToButton() {
326 return enableMoveToButton;
327 }
328
329 public void setEnableMoveToButton(boolean enableMoveToButton) {
330 this.enableMoveToButton = enableMoveToButton;
331 }
332
333 public boolean isEnableReinstateButton() {
334 return enableReinstateButton;
335 }
336
337 public void setEnableReinstateButton(boolean enableReinstateButton) {
338 this.enableReinstateButton = enableReinstateButton;
339 }
340
341 public boolean isEnableDeleteButton() {
342 return enableDeleteButton;
343 }
344
345 public void setEnableDeleteButton(boolean enableDeleteButton) {
346 this.enableDeleteButton = enableDeleteButton;
347 }
348
349 public boolean isEnableCopyAOActionLink() {
350 return enableCopyAOActionLink;
351 }
352
353 public void setEnableCopyAOActionLink(boolean enableCopyAOActionLink) {
354 this.enableCopyAOActionLink = enableCopyAOActionLink;
355 }
356
357 public boolean isEnableEditAOActionLink() {
358 return enableEditAOActionLink;
359 }
360
361 public void setEnableEditAOActionLink(boolean enableEditAOActionLink) {
362 this.enableEditAOActionLink = enableEditAOActionLink;
363 }
364
365 public String getCourseOfferingCode() {
366 return courseOfferingCode;
367 }
368
369 public void setCourseOfferingCode(String courseOfferingCode) {
370 this.courseOfferingCode = courseOfferingCode;
371 }
372
373 public String courseOfferingTitle;
374 public void setCourseOfferingTitle(String courseOfferingTitle) {
375 this.courseOfferingTitle = courseOfferingTitle;
376 }
377
378 public String getCourseOfferingTitle() {
379 return courseOfferingTitle;
380 }
381
382 private String credits = "";
383 public String getCredits() {
384 return credits;
385 }
386
387 public void setCredits(String credits) {
388 this.credits = credits;
389 }
390
391 private String activityCode = "";
392
393 public String getActivityCode() {
394 return activityCode;
395 }
396
397 public void setActivityCode(String activityCode) {
398 this.activityCode = activityCode;
399 }
400
401
402
403
404
405
406
407
408
409
410
411 public boolean isEditActivityCodeAllowed() {
412 if( "false".equalsIgnoreCase( ConfigContext.getCurrentContextConfig().getProperty( CourseOfferingConstants.CONFIG_PARAM_KEY_EDIT_ACTIVITY_CODE ) ) ) {
413 return false;
414 }
415
416 return true;
417 }
418
419
420
421
422
423
424
425
426
427
428
429 public NonStandardTimeslotCreationMode getNonStandardTimeslotCreationMode() {
430 String contextConfigProp = ConfigContext.getCurrentContextConfig().getProperty( ActivityOfferingConstants.ConfigProperties.NON_STANDARD_TIMESLOT_CREATION_MODE);
431 return NonStandardTimeslotCreationMode.fromString(contextConfigProp);
432 }
433
434 public boolean getCanNonStandardTimeslotsBeApproved() {
435 switch( getNonStandardTimeslotCreationMode() ) {
436 case NEEDS_APPROVAL:
437 return true;
438 default:
439 return false;
440
441 }
442 }
443
444 private String abbreviatedCourseType = "";
445
446 public String getAbbreviatedCourseType() {
447 return abbreviatedCourseType;
448 }
449
450 public void setAbbreviatedCourseType(String abbreviatedCourseType) {
451 this.abbreviatedCourseType= abbreviatedCourseType;
452 }
453
454 public String getTermDisplayString() {
455 return termDisplayString;
456 }
457
458 public void setTermDisplayString(String termDisplayString) {
459 this.termDisplayString = termDisplayString;
460 }
461
462 public String getToolTipText() {
463 return toolTipText;
464 }
465
466 public void setToolTipText(String toolTipText) {
467 this.toolTipText = toolTipText;
468 }
469
470 public String getWaitListText() {
471 return waitListText;
472 }
473
474 public void setWaitListText(String waitListText) {
475 this.waitListText = waitListText;
476 }
477
478 public String getTbaDisplayName() {
479 return tbaDisplayName;
480 }
481
482 public void setTbaDisplayName(boolean tba,boolean appendForDisplay) {
483 if (appendForDisplay){
484 tbaDisplayName = tbaDisplayName + "<br>" + (tba ? "TBA" : StringUtils.EMPTY);
485 } else {
486 tbaDisplayName = StringUtils.EMPTY;
487 if (tba){
488 tbaDisplayName = "TBA";
489 }
490 }
491 }
492
493 public FormatOfferingInfo getFormatOffering() {
494 return formatOffering;
495 }
496
497 public void setFormatOffering(FormatOfferingInfo formatOffering) {
498 this.formatOffering = formatOffering;
499 }
500
501 public TermInfo getTerm() {
502 return term;
503 }
504
505 public void setTerm(TermInfo term) {
506 this.term = term;
507 }
508
509 public String getTermId(){
510 if (term != null){
511 return term.getId();
512 }
513 return StringUtils.EMPTY;
514 }
515
516 public ActivityOfferingInfo getAoInfo() {
517 return aoInfo;
518 }
519
520 public void setAoInfo(ActivityOfferingInfo aoInfo) {
521 this.aoInfo = aoInfo;
522 }
523
524 public List<ScheduleComponentWrapper> getScheduleComponentWrappers() {
525 return scheduleComponentWrappers;
526 }
527
528 public void setScheduleComponentWrappers(List<ScheduleComponentWrapper> scheduleComponentWrappers) {
529 this.scheduleComponentWrappers = scheduleComponentWrappers;
530 }
531
532 public boolean getReadOnlyView() {
533 return readOnlyView;
534 }
535
536 public void setReadOnlyView(boolean readOnlyView) {
537 this.readOnlyView = readOnlyView;
538 }
539
540 public boolean getIsChecked() {
541 return isChecked;
542 }
543
544 public void setIsChecked(boolean checked) {
545 this.isChecked = checked;
546 }
547
548 public boolean getIsCheckedByCluster() {
549 return isCheckedByCluster;
550 }
551
552 public void setIsCheckedByCluster(boolean checkedByCluster) {
553 isCheckedByCluster = checkedByCluster;
554 }
555
556 public String getScheduledState() {
557 return scheduledState;
558 }
559
560 public void setScheduledState(String scheduledState) {
561 this.scheduledState = scheduledState;
562 }
563
564 public void setScheduledState(String scheduledState,boolean appendForDisplay) {
565 if (appendForDisplay){
566 this.scheduledState = this.scheduledState + "<br>" + StringUtils.defaultString(scheduledState);
567 }else{
568 this.scheduledState = StringUtils.defaultString(scheduledState);
569 }
570 }
571 public void setScheduledState(String scheduledState,boolean appendForDisplay, String dlTypeClass) {
572 String cssClass = "";
573 if(!StringUtils.isEmpty(dlTypeClass)){
574 cssClass = "class=\"" + dlTypeClass + "\"";
575 }
576 if(StringUtils.isEmpty(this.scheduledState)){
577 appendForDisplay = false;
578 }
579 if (appendForDisplay){
580 this.scheduledState = this.scheduledState + "<br><span " + cssClass + " >" + scheduledState + "</span>";
581 }else{
582 this.scheduledState = "<span " + cssClass + " >" + scheduledState + "</span>";
583 }
584 }
585
586 public String getStateName() {
587 return stateName;
588 }
589
590 public void setStateName(String stateName) {
591 this.stateName = stateName;
592 }
593
594 public String getTypeName() {
595 return typeName;
596 }
597
598 public void setTypeName(String typeName) {
599 this.typeName = typeName;
600 }
601
602 public String getCourseOfferingId() {
603 return courseOfferingId;
604 }
605
606 public void setCourseOfferingId(String courseOfferingId) {
607 this.courseOfferingId = courseOfferingId;
608 }
609
610 public List<OfferingInstructorWrapper> getInstructors() {
611 return instructors;
612 }
613
614 public void setInstructors(List<OfferingInstructorWrapper> instructors) {
615 this.instructors = instructors;
616 }
617
618 public List<SeatPoolWrapper> getSeatpools() {
619 return seatpools;
620 }
621
622 public void setSeatpools(List<SeatPoolWrapper> seatpools) {
623 this.seatpools = seatpools;
624 }
625
626 public List<PopulationInfo> getPopulationsForSPValidation() {
627 return populationsForSPValidation;
628 }
629
630 public void setPopulationsForSPValidation(List<PopulationInfo> populationsForSPValidation) {
631 this.populationsForSPValidation = populationsForSPValidation;
632 }
633
634 public String getFirstInstructorDisplayName() {
635 return firstInstructorDisplayName;
636 }
637
638 public void setFirstInstructorDisplayName(String firstInstructorDisplayName) {
639 this.firstInstructorDisplayName = firstInstructorDisplayName;
640 }
641
642 public String getId() {
643 return aoInfo.getId();
644 }
645
646 public void setId(String id) {
647 aoInfo.setId(id);
648 }
649
650 public String getTermName() {
651 return termName;
652 }
653
654 public void setTermName(String termName) {
655 this.termName = termName;
656 }
657
658 public String getFormatOfferingName() {
659 return formatOfferingName;
660 }
661
662 public void setFormatOfferingName(String formatOfferingName) {
663 this.formatOfferingName = formatOfferingName;
664 }
665
666 public String getIsMaxEnrollmentEstimateUI(){
667 return StringUtils.capitalize(BooleanUtils.toStringYesNo(aoInfo.getIsMaxEnrollmentEstimate()));
668 }
669
670 public String getIsEvaluatedUI(){
671 return StringUtils.capitalize(BooleanUtils.toStringYesNo(aoInfo.getIsEvaluated()));
672 }
673
674 public String getIsHonorsOfferingUI(){
675 return StringUtils.capitalize(BooleanUtils.toStringYesNo(aoInfo.getIsHonorsOffering()));
676 }
677
678 public String getInstructorNameHighestPercentEffort() {
679 return instructorNameHighestPercentEffort;
680 }
681
682 public void setInstructorNameHighestPercentEffort(String instructorNameHighestPercentEffort) {
683 this.instructorNameHighestPercentEffort = instructorNameHighestPercentEffort;
684 }
685
686 public boolean isLegalToDelete() {
687 if (StringUtils.equals(aoInfo.getStateKey(), LuiServiceConstants.LUI_AO_STATE_DRAFT_KEY) ||
688 StringUtils.equals(aoInfo.getStateKey(), LuiServiceConstants.LUI_AO_STATE_APPROVED_KEY) ||
689 StringUtils.equals(aoInfo.getStateKey(), LuiServiceConstants.LUI_AO_STATE_SUBMITTED_KEY) ||
690 StringUtils.equals(aoInfo.getStateKey(), LuiServiceConstants.LUI_AO_STATE_OFFERED_KEY) ||
691 StringUtils.equals(aoInfo.getStateKey(), LuiServiceConstants.LUI_CO_STATE_OFFERED_KEY) ) {
692 return true;
693 }
694 return false;
695 }
696
697 public List<ScheduleWrapper> getActualScheduleComponents() {
698 if (actualScheduleComponents == null){
699 actualScheduleComponents = new ArrayList<ScheduleWrapper>();
700 }
701 return actualScheduleComponents;
702 }
703
704 public void setActualScheduleComponents(List<ScheduleWrapper> actualScheduleComponents) {
705 this.actualScheduleComponents = actualScheduleComponents;
706 }
707
708 public List<ScheduleWrapper> getRequestedScheduleComponents() {
709 if (requestedScheduleComponents == null){
710 requestedScheduleComponents = new ArrayList<ScheduleWrapper>();
711 }
712 return requestedScheduleComponents;
713 }
714
715 public void setRequestedScheduleComponents(List<ScheduleWrapper> requestedScheduleComponents) {
716 this.requestedScheduleComponents = requestedScheduleComponents;
717 }
718
719 public ScheduleWrapper getNewScheduleRequest() {
720 return newScheduleRequest;
721 }
722
723 public void setNewScheduleRequest(ScheduleWrapper newScheduleRequest) {
724 this.newScheduleRequest = newScheduleRequest;
725 }
726
727 public String getStartTimeDisplay() {
728 return startTimeDisplay;
729 }
730
731 public void setStartTimeDisplay(String startTimeDisplay,boolean appendForDisplay) {
732 if (appendForDisplay){
733 this.startTimeDisplay = this.startTimeDisplay + "<br>" + StringUtils.defaultString(startTimeDisplay);
734 }else{
735 this.startTimeDisplay = StringUtils.defaultString(startTimeDisplay);
736 }
737
738 }
739
740 public void setStartTimeDisplay(String startTimeDisplay, boolean appendForDisplay, String dlTypeClass) {
741 String cssClass = "";
742 if(!StringUtils.isEmpty(dlTypeClass)){
743 cssClass = "class=\"" + dlTypeClass + "\"";
744 }
745 if(StringUtils.isEmpty(this.startTimeDisplay)){
746 appendForDisplay = false;
747 }
748 if (appendForDisplay){
749 this.startTimeDisplay = this.startTimeDisplay + "<br><span " + cssClass + " >" + startTimeDisplay + "</span>";
750 }else{
751 this.startTimeDisplay = "<span " + cssClass + " >" + startTimeDisplay + "</span>";
752 }
753 }
754
755 public String getInstructorDisplayNames() {
756 return instructorDisplayNames;
757 }
758
759 public void setInstructorDisplayNames(String instructorDisplayNames) {
760 this.instructorDisplayNames = instructorDisplayNames;
761 }
762
763 public void setInstructorDisplayNames(String instructorDisplayNames,boolean appendForDisplay) {
764 if (appendForDisplay && this.instructorDisplayNames!=null){
765 this.instructorDisplayNames = this.instructorDisplayNames + "<br>" + StringUtils.defaultString(instructorDisplayNames);
766 }else{
767 this.instructorDisplayNames = StringUtils.defaultString(instructorDisplayNames);
768 }
769
770 }
771
772 public String getEndTimeDisplay() {
773 return endTimeDisplay;
774 }
775
776 public void setEndTimeDisplay(String endTimeDisplay,boolean appendForDisplay) {
777 if (appendForDisplay){
778 this.endTimeDisplay = this.endTimeDisplay + "<br>" + StringUtils.defaultString(endTimeDisplay);
779 }else{
780 this.endTimeDisplay = StringUtils.defaultString(endTimeDisplay);
781 }
782 }
783
784 public void setEndTimeDisplay(String endTimeDisplay,boolean appendForDisplay, String dlTypeClass) {
785 String cssClass = "";
786 if(!StringUtils.isEmpty(dlTypeClass)){
787 cssClass = "class=\"" + dlTypeClass + "\"";
788 }
789 if(StringUtils.isEmpty(this.endTimeDisplay)){
790 appendForDisplay = false;
791 }
792 if (appendForDisplay){
793 this.endTimeDisplay = this.endTimeDisplay + "<br><span " + cssClass + " >" + endTimeDisplay + "</span>";
794 }else{
795 this.endTimeDisplay = "<span " + cssClass + " >" + endTimeDisplay + "</span>";
796 }
797 }
798
799 public String getDaysDisplayName() {
800 return daysDisplayName;
801 }
802
803 public void setDaysDisplayName(String daysDisplayName,boolean appendForDisplay) {
804 if (appendForDisplay){
805 this.daysDisplayName = this.daysDisplayName + "<br>" + StringUtils.defaultString(daysDisplayName);
806 }else{
807 this.daysDisplayName = StringUtils.defaultString(daysDisplayName);
808 }
809 }
810
811 public void setDaysDisplayName(String daysDisplayName,boolean appendForDisplay, String dlTypeClass) {
812 String cssClass = "";
813 if(!StringUtils.isEmpty(dlTypeClass)){
814 cssClass = "class=\"" + dlTypeClass + "\"";
815 }
816 if(StringUtils.isEmpty(this.daysDisplayName)){
817 appendForDisplay = false;
818 }
819 if (appendForDisplay){
820 this.daysDisplayName = this.daysDisplayName + "<br><span " + cssClass + " >" + daysDisplayName + "</span>";
821 }else{
822 this.daysDisplayName = "<span " + cssClass + " >" + daysDisplayName + "</span>";
823 }
824 }
825
826 public List<String> getStartTime() {
827 return startTime;
828 }
829
830 public void setStartTime(List<String> startTime) {
831 this.startTime = startTime;
832 }
833
834 public List<String> getEndTime() {
835 return endTime;
836 }
837
838 public void setEndTime(List<String> endTime) {
839 this.endTime = endTime;
840 }
841
842 public List<String> getWeekDays() {
843 return weekDays;
844 }
845
846 public void setWeekDays(List<String> weekDays) {
847 this.weekDays = weekDays;
848 }
849
850 public String getBuildingName() {
851 return buildingName;
852 }
853
854 public void setBuildingName(String buildingName,boolean appendForDisplay) {
855 if (appendForDisplay){
856 this.buildingName = this.buildingName + "<br>" + StringUtils.defaultString(buildingName);
857 }else{
858 this.buildingName = StringUtils.defaultString(buildingName);
859 }
860 }
861 public void setBuildingName(String buildingName,boolean appendForDisplay, String dlTypeClass) {
862 String cssClass = "";
863 if(!StringUtils.isEmpty(dlTypeClass)){
864 cssClass = "class=\"" + dlTypeClass + "\"";
865 }
866 if(StringUtils.isEmpty(this.buildingName)){
867 appendForDisplay = false;
868 }
869 if (appendForDisplay){
870 this.buildingName = this.buildingName + "<br><span " + cssClass + " >" + buildingName + "</span>";
871 }else{
872 this.buildingName = "<span " + cssClass + " >" + buildingName + "</span>";
873 }
874 }
875
876 public String getBldgCodeSimple() {
877 return bldgCodeSimple;
878 }
879
880 public void setBldgCodeSimple(String bldgCodeSimple) {
881 this.bldgCodeSimple = bldgCodeSimple;
882 }
883
884 public String getBuildingCode() {
885 return buildingCode;
886 }
887
888 public void setBuildingCode(String buildingCode, boolean appendForDisplay) {
889 String cssClass = "style=\"border-bottom: 1px dotted;\"";
890 if (appendForDisplay){
891 this.buildingCode = this.buildingCode + "<br><span " + cssClass + " >" + StringUtils.defaultString(buildingCode) + "</span>";
892 }else{
893 this.buildingCode = "<span " + cssClass + " >" + StringUtils.defaultString(buildingCode) + "</span>";
894 }
895 }
896
897 public void setBuildingCode(String buildingCode, boolean appendForDisplay, String dlTypeClass) {
898 String cssClass = "";
899 if(!StringUtils.isEmpty(dlTypeClass)){
900 cssClass = "style=\"border-bottom: 1px dotted;\"";
901 }
902 if(StringUtils.isEmpty(this.buildingCode)){
903 appendForDisplay = false;
904 }
905 if (appendForDisplay){
906 this.buildingCode = this.buildingCode + "<br><span " + cssClass + " >" + buildingCode + "</span>";
907 }else{
908 this.buildingCode = "<span " + cssClass + " >" + buildingCode + "</span>";
909 }
910 }
911
912 public String getRoomName() {
913 return roomName;
914 }
915
916 public void setRoomName(String roomName,boolean appendForDisplay) {
917 if (appendForDisplay){
918 this.roomName = this.roomName + "<br>" + StringUtils.defaultString(roomName);
919 }else{
920 this.roomName = StringUtils.defaultString(roomName);
921 }
922 }
923 public void setRoomName(String roomName,boolean appendForDisplay, String dlTypeClass) {
924 String cssClass = "";
925 if(!StringUtils.isEmpty(dlTypeClass)){
926 cssClass = "class=\"" + dlTypeClass + "\"";
927 }
928 if(StringUtils.isEmpty(this.roomName)){
929 appendForDisplay = false;
930 }
931 if (appendForDisplay){
932 this.roomName = this.roomName + "<br><span " + cssClass + " >" + roomName + "</span>";
933 }else{
934 this.roomName = "<span " + cssClass + " >" + roomName + "</span>";
935 }
936 }
937
938 public List<ScheduleWrapper> getDeletedScheduleComponents() {
939 return deletedScheduleComponents;
940 }
941
942 public void setDeletedScheduleComponents(List<ScheduleWrapper> deletedScheduleComponents) {
943 this.deletedScheduleComponents = deletedScheduleComponents;
944 }
945
946 public String getTypeKey() {
947 return typeKey;
948 }
949
950 public void setTypeKey(String typeKey) {
951 this.typeKey = typeKey;
952 }
953
954 public boolean isSendRDLsToSchedulerAfterMSE() {
955 return isSendRDLsToSchedulerAfterMSE;
956 }
957
958 public void setSendRDLsToSchedulerAfterMSE(boolean sendRDLsToSchedulerAfterMSE) {
959 isSendRDLsToSchedulerAfterMSE = sendRDLsToSchedulerAfterMSE;
960 }
961
962 public boolean isSchedulesModified() {
963 return schedulesModified;
964 }
965
966 public void setSchedulesModified(boolean schedulesModified) {
967 this.schedulesModified = schedulesModified;
968 }
969
970 public SocInfo getSocInfo() {
971 return socInfo;
972 }
973
974 public void setSocInfo(SocInfo socInfo) {
975 this.socInfo = socInfo;
976 }
977
978 public String getAdminOrg(){
979 return adminOrg;
980 }
981 public void setAdminOrg(String adminOrg){
982 this.adminOrg=adminOrg;
983 }
984
985 public Date getTermRegStartDate() {
986 return termRegStartDate;
987 }
988
989 public void setTermRegStartDate(Date termRegStartDate) {
990 this.termRegStartDate = termRegStartDate;
991 }
992
993 public CourseInfo getCourse() {
994 return course;
995 }
996
997 public void setCourse(CourseInfo course) {
998 this.course = course;
999 }
1000
1001 public String getColocatedAoInfo() {
1002 return colocatedAoInfo;
1003 }
1004
1005 public void setColocatedAoInfo(String colocatedAoInfo) {
1006 this.colocatedAoInfo = colocatedAoInfo;
1007 }
1008
1009 public String getPopulationsJSONString() {
1010 return populationsJSONString;
1011 }
1012
1013 public void setPopulationsJSONString(String populationsJSONString) {
1014 this.populationsJSONString = populationsJSONString;
1015 }
1016
1017
1018
1019
1020
1021
1022 public String getCrossListedCourseCodes(){
1023 return crossListedCourseCodes;
1024 }
1025
1026 public void setCrossListedCourseCodes(String crossListedCourseCodes) {
1027 this.crossListedCourseCodes = crossListedCourseCodes;
1028 }
1029
1030
1031
1032
1033
1034 public boolean isColocatedAO() {
1035 return colocatedAO;
1036 }
1037
1038
1039
1040
1041
1042
1043 public void setColocatedAO(boolean colocatedAO) {
1044 this.colocatedAO = colocatedAO;
1045 }
1046
1047 public List<ColocatedActivity> getColocatedActivities() {
1048 return colocatedActivities;
1049 }
1050
1051 public void setColocatedActivities(List<ColocatedActivity> colocatedActivities) {
1052 this.colocatedActivities = colocatedActivities;
1053 }
1054
1055 public boolean isMaxEnrollmentShared() {
1056 return maxEnrollmentShared;
1057 }
1058
1059 public void setMaxEnrollmentShared(boolean maxEnrollmentShared) {
1060 this.maxEnrollmentShared = maxEnrollmentShared;
1061 }
1062
1063 public boolean getHiddenMaxEnrollmentShared(){
1064 return maxEnrollmentShared;
1065 }
1066
1067 public int getSharedMaxEnrollment() {
1068 return sharedMaxEnrollment;
1069 }
1070
1071 public void setSharedMaxEnrollment(int sharedMaxEnrollment) {
1072 this.sharedMaxEnrollment = sharedMaxEnrollment;
1073 }
1074
1075 public boolean getHasSeatpools() {
1076 return hasSeatpools;
1077 }
1078
1079 public void setHasSeatpools(boolean hasSeatpools) {
1080 this.hasSeatpools = hasSeatpools;
1081 }
1082
1083 public ScheduleRequestSetInfo getScheduleRequestSetInfo() {
1084 return scheduleRequestSetInfo;
1085 }
1086
1087 public void setScheduleRequestSetInfo(ScheduleRequestSetInfo scheduleRequestSetInfo) {
1088 this.scheduleRequestSetInfo = scheduleRequestSetInfo;
1089 }
1090
1091
1092
1093
1094
1095
1096
1097 @SuppressWarnings("unused")
1098 public String getColocatedAoInfoUI(){
1099
1100 StringBuilder sb = new StringBuilder();
1101 sb.append("This activity is colocated with:<br>");
1102 sb.append(colocatedAoInfo + "<br>");
1103
1104 return StringUtils.removeEnd(sb.toString(),"<br>");
1105 }
1106
1107 public boolean isPartOfColoSetOnLoadAlready() {
1108 return isPartOfColoSetOnLoadAlready;
1109 }
1110
1111 public void setPartOfColoSetOnLoadAlready(boolean isPartOfColoSetOnLoadAlready) {
1112 this.isPartOfColoSetOnLoadAlready = isPartOfColoSetOnLoadAlready;
1113 }
1114
1115 public boolean isColocatedOnLoadAlready() {
1116 return isColocatedOnLoadAlready;
1117 }
1118
1119 public void setColocatedOnLoadAlready(boolean colocatedOnLoadAlready) {
1120 isColocatedOnLoadAlready = colocatedOnLoadAlready;
1121 }
1122
1123 public boolean isSchedulingCompleted(){
1124 if (getSocInfo() != null){
1125 if (StringUtils.equals(CourseOfferingSetServiceConstants.SOC_SCHEDULING_STATE_COMPLETED,getSocInfo().getSchedulingStateKey())){
1126 return true;
1127 }
1128 }
1129 return false;
1130 }
1131
1132 public CourseOfferingContextBar getContextBar() {
1133 return contextBar;
1134 }
1135
1136 public void setContextBar(CourseOfferingContextBar contextBar) {
1137 this.contextBar = contextBar;
1138 }
1139
1140
1141
1142
1143
1144
1145 public EditRenderHelper getEditRenderHelper() {
1146 return editRenderHelper;
1147 }
1148
1149 public SchOfClassesRenderHelper getSchOfClassesRenderHelper() {
1150 return schOfClassesRenderHelper;
1151 }
1152
1153 public void setSchOfClassesRenderHelper(SchOfClassesRenderHelper schOfClassesRenderHelper) {
1154 this.schOfClassesRenderHelper = schOfClassesRenderHelper;
1155 }
1156
1157
1158
1159
1160 public class EditRenderHelper implements Serializable {
1161
1162 private List<ColocatedActivity> manageSeperateEnrollmentList;
1163
1164 private boolean scheduleEditInProgress;
1165 private boolean isPersistedRDLsExists;
1166 private String selectedAO;
1167
1168 private String prevAOTypeName;
1169 private String nextAOTypeName;
1170
1171 private ActivityOfferingInfo prevAO;
1172 private ActivityOfferingInfo nextAO;
1173
1174 private List<KeyValue> aoCodes;
1175
1176 public EditRenderHelper(){
1177 manageSeperateEnrollmentList = new ArrayList<ColocatedActivity>();
1178 aoCodes = new ArrayList<KeyValue>();
1179 }
1180
1181
1182
1183
1184
1185 public List<ColocatedActivity> getManageSeperateEnrollmentList() {
1186 return manageSeperateEnrollmentList;
1187 }
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198 @SuppressWarnings("unused")
1199 public void setManageSeperateEnrollmentList(List<ColocatedActivity> manageSeperateEnrollmentList) {
1200 this.manageSeperateEnrollmentList = manageSeperateEnrollmentList;
1201 }
1202
1203 public boolean isPersistedRDLsExists() {
1204 return isPersistedRDLsExists;
1205 }
1206
1207 public void setPersistedRDLsExists(boolean persistedRDLsExists) {
1208 isPersistedRDLsExists = persistedRDLsExists;
1209 }
1210
1211 public String getColocatedActivitiesAsString(){
1212
1213 StringBuilder sb = new StringBuilder();
1214 for (ColocatedActivity colo : getColocatedActivities()){
1215 sb.append(colo.getEditRenderHelper().getCode() + ", ");
1216 }
1217 return StringUtils.stripEnd(sb.toString(),", ");
1218 }
1219
1220 public boolean isScheduleEditInProgress() {
1221 return scheduleEditInProgress;
1222 }
1223
1224 public void setScheduleEditInProgress(boolean scheduleEditInProgress) {
1225 this.scheduleEditInProgress = scheduleEditInProgress;
1226 }
1227
1228 public String getSelectedAO() {
1229 return selectedAO;
1230 }
1231
1232 public void setSelectedAO(String selectedAO) {
1233 this.selectedAO = selectedAO;
1234 }
1235
1236
1237 public List<KeyValue> getAoCodes() {
1238 return aoCodes;
1239 }
1240
1241 public void setAoCodes(List<KeyValue> aoCodes) {
1242 this.aoCodes = aoCodes;
1243 }
1244
1245 public ActivityOfferingInfo getPrevAO() {
1246 return prevAO;
1247 }
1248
1249 public void setPrevAO(ActivityOfferingInfo prevAO) {
1250 this.prevAO = prevAO;
1251 }
1252
1253 public ActivityOfferingInfo getNextAO() {
1254 return nextAO;
1255 }
1256
1257 public void setNextAO(ActivityOfferingInfo nextAO) {
1258 this.nextAO = nextAO;
1259 }
1260
1261 public String getPrevAOTypeName() {
1262 return prevAOTypeName;
1263 }
1264
1265 public void setPrevAOTypeName(String prevAOTypeName) {
1266 this.prevAOTypeName = prevAOTypeName;
1267 }
1268
1269 public String getNextAOTypeName() {
1270 return nextAOTypeName;
1271 }
1272
1273 public void setNextAOTypeName(String nextAOTypeName) {
1274 this.nextAOTypeName = nextAOTypeName;
1275 }
1276
1277 }
1278
1279
1280
1281
1282 public class SchOfClassesRenderHelper implements Serializable {
1283
1284 private String information;
1285
1286 public SchOfClassesRenderHelper(){
1287
1288 }
1289
1290 public String getInformation() {
1291 return information;
1292 }
1293
1294 public void setInformation(String information) {
1295 this.information = information;
1296 }
1297 }
1298
1299
1300 public String getSubTermName() {
1301 return subTermName;
1302 }
1303
1304 public void setSubTermName(String subTermName) {
1305 this.subTermName = subTermName;
1306 }
1307
1308 public boolean getHasSubTerms() {
1309 return hasSubTerms;
1310 }
1311
1312 public void setHasSubTerms(boolean hasSubTerms) {
1313 this.hasSubTerms = hasSubTerms;
1314 }
1315
1316 public String getSubTermId() {
1317 return subTermId;
1318 }
1319
1320 public void setSubTermId(String subTermId) {
1321 this.subTermId = subTermId;
1322 }
1323
1324 public String getTermStartEndDate() {
1325 return termStartEndDate;
1326 }
1327
1328 public void setTermStartEndDate(String termStartEndDate) {
1329 this.termStartEndDate = termStartEndDate;
1330 }
1331
1332 public String getSubTermDatesJsonString() {
1333 return subTermDatesJsonString;
1334 }
1335
1336 public void setSubTermDatesJsonString(String subTermDatesJsonString) {
1337 this.subTermDatesJsonString = subTermDatesJsonString;
1338 }
1339
1340
1341
1342
1343
1344 public boolean isRemovedFromColoSet() {
1345 return isRemovedFromColoSet;
1346 }
1347
1348
1349
1350
1351
1352
1353 public void setRemovedFromColoSet(boolean removedFromColoSet) {
1354 isRemovedFromColoSet = removedFromColoSet;
1355 }
1356
1357 public boolean isHasRule() {
1358 return hasRule;
1359 }
1360
1361 public void setHasRule(boolean hasRule) {
1362 this.hasRule = hasRule;
1363 }
1364
1365 public CourseWaitListInfo getCourseWaitListInfo() {
1366 return courseWaitListInfo;
1367 }
1368
1369 public void setCourseWaitListInfo(CourseWaitListInfo courseWaitListInfo) {
1370 this.courseWaitListInfo = courseWaitListInfo;
1371 }
1372
1373 public boolean isHasWaitlist() {
1374 return hasWaitlist;
1375 }
1376
1377 public void setHasWaitlist(boolean hasWaitlist) {
1378 this.hasWaitlist = hasWaitlist;
1379 }
1380
1381 public boolean isHasWaitlistCO() {
1382 return hasWaitlistCO;
1383 }
1384
1385 public void setHasWaitlistCO(boolean hasWaitlistCO) {
1386 this.hasWaitlistCO = hasWaitlistCO;
1387 }
1388
1389 public String getReinstateStateName() {
1390 return reinstateStateName;
1391 }
1392
1393 public void setReinstateStateName(String reinstateStateName) {
1394 this.reinstateStateName = reinstateStateName;
1395 }
1396
1397 public boolean isLimitWaitlistSize() {
1398 return limitWaitlistSize;
1399 }
1400
1401 public void setLimitWaitlistSize(boolean limitWaitlistSize) {
1402 this.limitWaitlistSize = limitWaitlistSize;
1403 }
1404
1405 public String getWaitListType() {
1406 return waitListType;
1407 }
1408
1409 public void setWaitListType(String waitListType) {
1410 this.waitListType = waitListType;
1411 }
1412
1413 public String getWaitListTypeUI() {
1414 return waitListTypeUI;
1415 }
1416
1417 public void setWaitListTypeUI(String waitListTypeUI) {
1418 this.waitListTypeUI = waitListTypeUI;
1419 }
1420
1421 public String getRequisite() {
1422 return requisite;
1423 }
1424
1425 public void setRequisite(String requisite) {
1426 this.requisite = requisite;
1427 }
1428
1429 public String getViewId() {
1430 return viewId;
1431 }
1432
1433 public void setViewId(String viewId) {
1434 this.viewId = viewId;
1435 }
1436
1437 public HashMap getSchedulingStateHash() {
1438 try {
1439 return CourseOfferingManagementUtil.getSchedulingStateAndNameHash();
1440 } catch (Exception e) {
1441 throw new RuntimeException(e);
1442 }
1443 }
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453 public void updateWaitListType(){
1454
1455 Boolean automaticallyProcessed = courseWaitListInfo.getAutomaticallyProcessed();
1456 Boolean confirmationRequired = courseWaitListInfo.getConfirmationRequired();
1457
1458 if((null == automaticallyProcessed) || (null == confirmationRequired)) {
1459 waitListType = LuiServiceConstants.AUTOMATIC_WAITLIST_TYPE_KEY ;
1460 waitListTypeUI = "Automatic";
1461 }
1462
1463 if(automaticallyProcessed && !(confirmationRequired)){
1464 waitListType = LuiServiceConstants.AUTOMATIC_WAITLIST_TYPE_KEY ;
1465 waitListTypeUI = "Automatic";
1466 } else if(automaticallyProcessed && confirmationRequired ) {
1467 waitListType = LuiServiceConstants.CONFIRMATION_WAITLIST_TYPE_KEY;
1468 waitListTypeUI = "Confirmation";
1469 } else if(!(automaticallyProcessed) && !(confirmationRequired)) {
1470 waitListType = LuiServiceConstants.MANUAL_WAITLIST_TYPE_KEY;
1471 waitListTypeUI = "Manual";
1472 }
1473 }
1474
1475 public boolean isAuthorizedToModifyEndTimeTS() {
1476 if (isCentralSchedulingCoOrdinator){
1477 return true;
1478 } else {
1479 if (getNonStandardTimeslotCreationMode() == ActivityOfferingWrapper.NonStandardTimeslotCreationMode.ALLOWED){
1480 return true;
1481 } else if (getNonStandardTimeslotCreationMode() == ActivityOfferingWrapper.NonStandardTimeslotCreationMode.NOT_ALLOWED){
1482 return false;
1483 } else if (getNonStandardTimeslotCreationMode() == ActivityOfferingWrapper.NonStandardTimeslotCreationMode.NEEDS_APPROVAL){
1484 return aoInfo.getIsApprovedForNonStandardTimeSlots();
1485 }
1486 }
1487
1488 return false;
1489
1490 }
1491
1492 public String getTimeSlotType() {
1493 return timeSlotType;
1494 }
1495
1496 public void setTimeSlotType(String timeSlotType) {
1497 this.timeSlotType = timeSlotType;
1498 }
1499 }