001    /**
002     * Copyright 2004-2012 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.hr.time.calendar;
017    
018    import org.apache.commons.lang.StringUtils;
019    import org.kuali.hr.time.service.base.TkServiceLocator;
020    import org.kuali.hr.time.task.Task;
021    import org.kuali.hr.time.timeblock.TimeBlock;
022    import org.kuali.hr.time.timeblock.TimeHourDetail;
023    import org.kuali.hr.time.util.TkConstants;
024    import org.kuali.hr.time.workarea.WorkArea;
025    
026    import java.util.ArrayList;
027    import java.util.List;
028    
029    /**
030     * Render helper to handle timeblock and time hour details display
031     */
032    public class TimeBlockRenderer {
033    
034        private TimeBlock timeBlock;
035        private List<TimeHourDetailRenderer> detailRenderers = new ArrayList<TimeHourDetailRenderer>();
036        private String assignmentClass;
037        private String lunchLabel;
038        private String lunchLabelId;
039    
040        public TimeBlockRenderer(TimeBlock b) {
041            this.timeBlock = b;
042            for (TimeHourDetail detail : timeBlock.getTimeHourDetails()) {
043                detailRenderers.add(new TimeHourDetailRenderer(detail));
044            }
045        }
046    
047        public List<TimeHourDetailRenderer> getDetailRenderers() {
048            return detailRenderers;
049        }
050    
051        public TimeBlock getTimeBlock() {
052            return timeBlock;
053        }
054    
055        public String getTimeRange() {
056            StringBuilder b = new StringBuilder();
057            if(StringUtils.equals(timeBlock.getEarnCodeType(), TkConstants.EARN_CODE_TIME)) {
058                b.append(timeBlock.getBeginTimeDisplay().toString(TkConstants.DT_BASIC_TIME_FORMAT));
059                b.append(" - ");
060                b.append(timeBlock.getEndTimeDisplay().toString(TkConstants.DT_BASIC_TIME_FORMAT));
061            }
062    
063            return b.toString();
064        }
065    
066        public String getTitle() {
067            StringBuilder b = new StringBuilder();
068    
069            WorkArea wa = TkServiceLocator.getWorkAreaService().getWorkArea(timeBlock.getTkWorkAreaId());
070            b.append(wa.getDescription());
071            Task task = TkServiceLocator.getTaskService().getTask(timeBlock.getTask(), timeBlock.getBeginDate());
072            if(task != null) {
073                    // do not display task description if the task is the default one
074                    // default task is created in getTask() of TaskService
075                    if(!task.getDescription().equals(TkConstants.TASK_DEFAULT_DESP)) {
076                            b.append("-" + task.getDescription());
077                    }
078            }
079            return b.toString();
080        }
081    
082        public String getAmount() {
083            if(StringUtils.equals(timeBlock.getEarnCodeType(), TkConstants.EARN_CODE_AMOUNT)) {
084                    if(timeBlock.getAmount() != null) {
085                            return timeBlock.getEarnCode() + ": $" + timeBlock.getAmount().toString();
086                    } else {
087                            return timeBlock.getEarnCode() + ": $0.00";
088                    }
089                }
090            return "";
091        }
092    
093        public String getEarnCodeType() {
094            return timeBlock.getEarnCodeType();
095        }
096    
097            public String getAssignmentClass() {
098                    return assignmentClass;
099            }
100    
101            public void setAssignmentClass(String assignmentClass) {
102                    this.assignmentClass = assignmentClass;
103            }
104    
105            public String getLunchLabel() {
106                    return lunchLabel;
107            }
108    
109            public void setLunchLabel(String lunchLabel) {
110                    this.lunchLabel = lunchLabel;
111            }
112    
113        public String getLunchLabelId() {
114            return lunchLabelId;
115        }
116    
117        public void setLunchLabelId(String lunchLabelId) {
118            this.lunchLabelId = lunchLabelId;
119        }
120    }