Changeset 17957

Show
Ignore:
Timestamp:
08/29/08 11:07:18 (3 months ago)
Author:
sjmittal
Message:

checking in the server side work on working time calendar at personal level
1. prm_db_patch_8.5.0.sql, update_system_properties.sql: added schema changes and system properties for personal working time calendars
2. personal/Setup.jsp: added the link to create/modify the personal working time calendar
3. IWorkingTimeCalendarProvider.java, ScheduleWorkingTimeCalendarProvider?.java, ResourceWorkingTimeCalendarProvider?.java: retrofitted ResourceWorkingTimeCalendarProvider? to implement standard WorkingTimeCalandar? interface
4. WorkingTimeCalendarCreateHelper?.java, WorkingTimeCalendarHelper?.java, WorkingTimeCalendarListHelper?.java: modified the helper classes accordingly so as not to assume that it would always be schedule working time calendar provide
5. WorkingTimeCalendarFinder?.java: modified the finder queries to get working time calendar definitions
6. PnAssignmentWorkServiceImpl?.java, UpdateAssignmentsHandler?.java, UpdateAssignmentsProcessingHandler?.java, WorkChangeHandler?.java: modified the changes to ResourceWorkingTimeCalendarProvider?.java as now it returns working time calendar definition and not definition based working time calendar
7. WorkingTimeCreateHandler?.java, WorkingTimeEditHandler?.java, WorkingTimeEditDateHandler?.java, WorkingTimeListHandler?.java, WorkingTimeViewHandler?.java: modified the working time handler to create a working time calendar provider before calling the helper classes

Also:
Removed unused method from Assignment DAO

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/core/db/oracle/create-scripts/versions/8.5.0/prm_db_patch_8.5.0.sql

    r17951 r17957  
    3838PROMPT Creating PN_PROJECT_SPACE_META_COMBO table 
    3939@versions/8.5.0/tables/cr_pn_project_space_meta_combo.sql 
     40COMMIT; 
     41 
     42PROMPT Altering PN_WORKINGTIME_CALENDAR table 
     43@versions/8.5.0/tables/alter_pn_workingtime_calendar.sql 
    4044COMMIT; 
    4145 
  • trunk/core/db/oracle/create-scripts/versions/8.5.0/update_system_properties.sql

    r17955 r17957  
    104104values (2000, 'en', 'text', 'prm.workflow.envelope.abort.label', 'Abort Envelope', 'A', 0, 1, null); 
    105105 
     106insert into PN_PROPERTY (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 
     107values (2000, 'en', 'text', 'prm.personal.setup.workingtimecalendar.description', 'Specify your working and non-working time.', 'A', 0, 1, null); 
     108insert into PN_PROPERTY (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 
     109values (2000, 'en', 'text', 'prm.personal.setup.workingtimecalendar.link', 'Work Calendar', 'A', 0, 1, null); 
     110 
    106111update pn_property p set  
    107112       p.property_value = 'It is after this task''''s deadline of {0}.' 
  • trunk/core/src/net/project/admin/mvc/AdminController.java

    r16593 r17957  
    4040 
    4141        //Requisite objects 
    42         SecurityProvider sp = (SecurityProvider)request.getSession(). 
    43             getAttribute("securityProvider"); 
     42        SecurityProvider sp = (SecurityProvider) request.getSession().getAttribute("securityProvider"); 
    4443 
    45         //Handle the request, checking security and doing any operations that 
     44        // Handle the request, checking security and doing any operations that 
    4645        //are required. 
    4746        Handler handler = AdminHandlerMapping.getHandler(request); 
    48         handler.validateSecurity(sp.getCheckedModuleID(), sp.getCheckedActionID(), 
    49             sp.getCheckedObjectID(), request); 
     47        handler.validateSecurity(sp.getCheckedModuleID(), sp.getCheckedActionID(), sp.getCheckedObjectID(), request); 
    5048        Map model = handler.handleRequest(request, response); 
    5149 
  • trunk/core/src/net/project/calendar/workingtime/IWorkingTimeCalendarProvider.java

    r16593 r17957  
    5757    WorkingTimeCalendarDefinition get(String calendarID); 
    5858 
     59     
     60    /** 
     61     * Returns the working time calendar definition for the specified work plan ID. 
     62     * @param planID the ID of the work plan for which the calendar is defined 
     63     * @return the plan's calendar or null if none is found for the resource 
     64     * @throws NullPointerException if the specified ID is null 
     65     */ 
     66    WorkingTimeCalendarDefinition getForPlanID(String planID); 
     67     
    5968    /** 
    6069     * Returns the working time calendar definition for the specified resource person ID. 
  • trunk/core/src/net/project/calendar/workingtime/ScheduleWorkingTimeCalendarProvider.java

    r15790 r17957  
    214214    } 
    215215 
     216    public WorkingTimeCalendarDefinition getForPlanID(String planID) { 
     217        return getDefault(); 
     218    } 
     219 
    216220    /** 
    217221     * Returns the working time calendar definition for the specified resource person ID. 
  • trunk/core/src/net/project/calendar/workingtime/WorkingTimeCalendarCreateHelper.java

    r16593 r17957  
    5050     * The current schedule. 
    5151     */ 
    52     private final Schedule schedule; 
     52//    private final Schedule schedule; 
    5353 
    5454    /** 
     
    8787     * @param request the request 
    8888     */ 
    89     public WorkingTimeCalendarCreateHelper(HttpServletRequest request) { 
    90  
    91         schedule = (Schedule) request.getSession().getAttribute("schedule"); 
    92         if (schedule == null) { 
    93             throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
    94         } 
     89    public WorkingTimeCalendarCreateHelper(HttpServletRequest request, IWorkingTimeCalendarProvider provider) { 
     90 
     91//        schedule = (Schedule) request.getSession().getAttribute("schedule"); 
     92//        if (schedule == null) { 
     93//            throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
     94//        } 
    9595 
    9696        User user = (User) request.getSession().getAttribute("user"); 
     
    102102 
    103103        // Grab the provider for the schedule 
    104         provider = schedule.getWorkingTimeCalendarProvider(); 
     104//        provider = schedule.getWorkingTimeCalendarProvider(); 
     105        this.provider = provider; 
    105106    } 
    106107 
  • trunk/core/src/net/project/calendar/workingtime/WorkingTimeCalendarFinder.java

    r16593 r17957  
    5555            "c.record_status, p.display_name as resource_display_name " + 
    5656            "from pn_workingtime_calendar c, pn_person p " + 
    57             "where p.person_id(+) = c.resource_person_id "; 
     57            "where p.person_id(+) = c.resource_person_id and c.record_status = 'A'"; 
    5858 
    5959    protected String getBaseSQLStatement() { 
     
    138138 
    139139        addWhereClause("c.plan_id = ? "); 
    140         addWhereClause("c.record_status = ? "); 
     140//        addWhereClause("c.record_status = ? "); 
    141141 
    142142        // Create a listener to bind parameters 
     
    145145                int index = 0; 
    146146                db.pstmt.setString(++index, planID); 
    147                 db.pstmt.setString(++index, RecordStatus.ACTIVE.getID()); 
     147//                db.pstmt.setString(++index, RecordStatus.ACTIVE.getID()); 
    148148            } 
    149149        }; 
  • trunk/core/src/net/project/calendar/workingtime/WorkingTimeCalendarHelper.java

    r16593 r17957  
    9696     * The current schedule. 
    9797     */ 
    98     private final Schedule schedule; 
     98//    private final Schedule schedule; 
    9999 
    100100    /** 
     
    130130     * @throws IllegalArgumentException if the calendar with the specified ID cannot be found 
    131131     */ 
    132     public WorkingTimeCalendarHelper(HttpServletRequest request, String calendarID) { 
     132    public WorkingTimeCalendarHelper(HttpServletRequest request, IWorkingTimeCalendarProvider provider, String calendarID) { 
    133133 
    134134        if (calendarID == null) { 
     
    141141        } 
    142142 
    143         schedule = (Schedule) request.getSession().getAttribute("schedule"); 
    144         if (schedule == null) { 
    145             throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
    146         } 
     143//        schedule = (Schedule) request.getSession().getAttribute("schedule"); 
     144//        if (schedule == null) { 
     145//            throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
     146//        } 
    147147 
    148148        // Grab the provider for the schedule 
    149         provider = schedule.getWorkingTimeCalendarProvider(); 
     149//        provider = schedule.getWorkingTimeCalendarProvider(); 
     150         
     151        this.provider = provider; 
    150152 
    151153        WorkingTimeCalendarDefinition calendarDef = provider.get(calendarID); 
  • trunk/core/src/net/project/calendar/workingtime/WorkingTimeCalendarListHelper.java

    r16593 r17957  
    9595     * @throws IllegalStateException if no schedule attribute is found in the session 
    9696     */ 
    97     public WorkingTimeCalendarListHelper(HttpServletRequest request) { 
    98  
    99         Schedule schedule = (Schedule) request.getSession().getAttribute("schedule"); 
    100         if (schedule == null) { 
    101             throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
    102         } 
     97    public WorkingTimeCalendarListHelper(HttpServletRequest request, IWorkingTimeCalendarProvider provider) { 
     98 
     99//        Schedule schedule = (Schedule) request.getSession().getAttribute("schedule"); 
     100//        if (schedule == null) { 
     101//            throw new IllegalStateException("Could not find attribute with name 'schedule' in session"); 
     102//        } 
    103103 
    104104        // Grab the provider for the schedule 
    105         provider = schedule.getWorkingTimeCalendarProvider(); 
     105//        provider = schedule.getWorkingTimeCalendarProvider(); 
     106         
     107        this.provider = provider; 
    106108    } 
    107109 
  • trunk/core/src/net/project/form/assignment/FormAssignment.java

    r17734 r17957  
    317317    } 
    318318     
    319     @Override 
    320     protected void populateAssignment(PnAssignment pnAssignment, String timeZoneId) { 
    321         startTime = pnAssignment.getStartDate(); 
    322         endTime = pnAssignment.getEndDate(); 
    323         estimatedFinish = pnAssignment.getEstimatedFinish(); 
    324         work = new TimeQuantity(pnAssignment.getWork(), TimeQuantityUnit.getForID(pnAssignment.getWorkUnits())); 
    325         workComplete = new TimeQuantity(pnAssignment.getWorkComplete(), TimeQuantityUnit.getForID(pnAssignment.getWorkCompleteUnits())); 
    326     } 
     319//    @Override 
     320//    protected void populateAssignment(PnAssignment pnAssignment, String timeZoneId) { 
     321//        startTime = pnAssignment.getStartDate(); 
     322//        endTime = pnAssignment.getEndDate(); 
     323//        estimatedFinish = pnAssignment.getEstimatedFinish(); 
     324//        work = new TimeQuantity(pnAssignment.getWork(), TimeQuantityUnit.getForID(pnAssignment.getWorkUnits())); 
     325//        workComplete = new TimeQuantity(pnAssignment.getWorkComplete(), TimeQuantityUnit.getForID(pnAssignment.getWorkCompleteUnits())); 
     326//    } 
    327327     
    328328    public void store() throws PersistenceException { 
  • trunk/core/src/net/project/hibernate/dao/IPnAssignmentDAO.java

    r17932 r17957  
    6666        public List<PnTask> getAssigmentsByProjectAndUser(Integer projectId, Integer userId); 
    6767     
    68     public List<Assignment> getAssigmentsByAssignor(Integer assignorId); 
     68//    public List<Assignment> getAssigmentsByAssignor(Integer assignorId); 
    6969     
    7070    public List<PnAssignment> getAssignorAssignmentDetails(Integer assignorId); 
  • trunk/core/src/net/project/hibernate/dao/impl/PnAssignmentDAOImpl.java

    r17956 r17957  
    622622        } 
    623623 
    624     public List<Assignment> getAssigmentsByAssignor(Integer assignorId) { 
    625         List<Assignment> assignments = new ArrayList<Assignment>(); 
    626         String sql = "SELECT a, p1.displayName, p2.displayName, on1.name, on2.name, o1.pnObjectType.objectType, o2.pnObjectType.objectType, pv.timezoneCode " + 
    627                 "FROM PnAssignment a, PnPerson p1, PnPerson p2, PnObjectName on1, PnObjectName on2, PnObject o1, PnObject o2, PnPersonView pv WHERE " + 
    628                 "p1.userStatus = 'Active' AND " + 
    629                 "p1.personId = a.pnAssignor.personId AND " + 
    630                 "a.pnAssignor.personId = :assignorId AND " + 
    631                 "p2.userStatus = 'Active' AND " + 
    632                 "p2.personId = a.comp_id.personId AND " + 
    633                 "pv.personId = p2.personId AND " + 
    634                 "on1.objectId = a.comp_id.objectId AND " + 
    635                 "on2.objectId = a.comp_id.spaceId AND " + 
    636                 "o1.objectId = on2.objectId AND " + 
    637                 "o2.objectId = on1.objectId AND " + 
    638                 "o1.recordStatus = 'A' AND " + 
    639                 "o2.recordStatus = 'A' AND " + 
    640                 "a.recordStatus = 'A'"; 
    641         try { 
    642             Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(sql); 
    643             query.setInteger("assignorId", assignorId); 
    644             Iterator results = query.list().iterator(); 
    645             while (results.hasNext()) { 
    646                 Object[] row = (Object[]) results.next(); 
    647                 PnAssignment pnAssignment = (PnAssignment) row[0]; 
    648                 String assignorName = (String) row[1]; 
    649                 String assigneeName = (String) row[2]; 
    650                 String objectName = (String) row[3]; 
    651                 String spaceName = (String) row[4]; 
    652                 String spaceType = (String) row[5]; 
    653                 String objectType = (String) row[6]; 
    654                 String timeZoneId = (String) row[7]; 
    655                 Assignment assignment = null; 
    656                 AssignmentType assignmentType = AssignmentType.forObjectType(spaceType); 
    657                 if (assignmentType == null) { 
    658                     if (log.isDebugEnabled()){ 
    659                         log.debug(" AssignmentType.forObjectType returned null !"); 
    660                     } 
    661                 } else { 
    662                     assignment = assignmentType.newAssignment(); 
    663                     assignment.populate(pnAssignment, assignorName, assigneeName, objectName, objectType, spaceName, objectType, timeZoneId); 
    664                     assignments.add(assignment); 
    665                 } 
    666  
    667             } 
    668         } catch (Exception e) { 
    669             log.error("Error occured while getting assignments of user from project : " + e.getMessage()); 
    670             e.printStackTrace(); 
    671         } 
    672         return assignments; 
    673     } 
    674      
     624//    public List<Assignment> getAssigmentsByAssignor(Integer assignorId) { 
     625//        List<Assignment> assignments = new ArrayList<Assignment>(); 
     626//        String sql = "SELECT a, p1.displayName, p2.displayName, on1.name, on2.name, o1.pnObjectType.objectType, o2.pnObjectType.objectType, pv.timezoneCode " + 
     627//                "FROM PnAssignment a, PnPerson p1, PnPerson p2, PnObjectName on1, PnObjectName on2, PnObject o1, PnObject o2, PnPersonView pv WHERE " + 
     628//                "p1.userStatus = 'Active' AND " + 
     629//                "p1.personId = a.pnAssignor.personId AND " + 
     630//                "a.pnAssignor.personId = :assignorId AND " + 
     631//                "p2.userStatus = 'Active' AND " + 
     632//                "p2.personId = a.comp_id.personId AND " + 
     633//                "pv.personId = p2.personId AND " + 
     634//                "on1.objectId = a.comp_id.objectId AND " + 
     635//                "on2.objectId = a.comp_id.spaceId AND " + 
     636//                "o1.objectId = on2.objectId AND " + 
     637//                "o2.objectId = on1.objectId AND " + 
     638//                "o1.recordStatus = 'A' AND " + 
     639//                "o2.recordStatus = 'A' AND " + 
     640//                "a.recordStatus = 'A'"; 
     641//        try { 
     642//            Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(sql); 
     643//            query.setInteger("assignorId", assignorId); 
     644//            Iterator results = query.list().iterator(); 
     645//            while (results.hasNext()) { 
     646//                Object[] row = (Object[]) results.next(); 
     647//                PnAssignment pnAssignment = (PnAssignment) row[0]; 
     648//                String assignorName = (String) row[1]; 
     649//                String assigneeName = (String) row[2]; 
     650//                String objectName = (String) row[3]; 
     651//                String spaceName = (String) row[4]; 
     652//                String spaceType = (String) row[5]; 
     653//                String objectType = (String) row[6]; 
     654//                String timeZoneId = (String) row[7]; 
     655//                Assignment assignment = null; 
     656//                AssignmentType assignmentType = AssignmentType.forObjectType(spaceType); 
     657//                if (assignmentType == null) { 
     658//                    if (log.isDebugEnabled()){ 
     659//                        log.debug(" AssignmentType.forObjectType returned null !"); 
     660//                    } 
     661//                } else { 
     662//                    assignment = assignmentType.newAssignment(); 
     663//                    assignment.populate(pnAssignment, assignorName, assigneeName, objectName, objectType, spaceName, objectType, timeZoneId); 
     664//                    assignments.add(assignment); 
     665//                } 
     666// 
     667//            } 
     668//        } catch (Exception e) { 
     669//            log.error("Error occured while getting assignments of user from project : " + e.getMessage()); 
     670//            e.printStackTrace(); 
     671//        } 
     672//        return assignments; 
     673//    } 
     674//     
    675675    public List<PnAssignment> getAssignorAssignmentDetails(Integer assignorId){ 
    676676        List<PnAssignment> assignments = new ArrayList<PnAssignment>();          
  • trunk/core/src/net/project/hibernate/model/PnWorkingtimeCalendar.java

    r16593 r17957  
    139139 
    140140    public String toString() { 
    141         return new ToStringBuilder(this) 
    142             .append("calendarId", getCalendarId()) 
    143             .toString(); 
     141        return new ToStringBuilder(this).append("calendarId", getCalendarId()).toString(); 
    144142    } 
    145143 
  • trunk/core/src/net/project/hibernate/service/IPnAssignmentService.java

    r17956 r17957  
    5757        public List<PnTask> getAssigmentsByProjectAndUser(Integer spaceId, Integer userId);      
    5858     
    59     public List<Assignment> getAssigmentsByAssignor(Integer assignorId); 
     59//    public List<Assignment> getAssigmentsByAssignor(Integer assignorId); 
    6060     
    6161    public Integer getTotalAssignmentCountWithFilters( 
  • trunk/core/src/net/project/hibernate/service/impl/PnAssignmentServiceImpl.java

    r17956 r17957  
    668668        } 
    669669     
    670     public List<Assignment> getAssigmentsByAssignor(Integer assignorId) { 
    671         return pnAssignmentDAO.getAssigmentsByAssignor(assignorId); 
    672     } 
     670//    public List<Assignment> getAssigmentsByAssignor(Integer assignorId) { 
     671//        return pnAssignmentDAO.getAssigmentsByAssignor(assignorId); 
     672//    } 
    673673     
    674674    public List<PnAssignment> getAssignorAssignmentDetails(Integer assignorId){ 
  • trunk/core/src/net/project/hibernate/service/impl/PnAssignmentWorkServiceImpl.java

    r17931 r17957  
    2323import javax.servlet.http.HttpSession; 
    2424 
    25 import org.apache.commons.collections.MultiHashMap; 
    26 import org.apache.commons.collections.MultiMap; 
    27 import org.apache.log4j.Logger; 
    28  
    2925import net.project.base.Module; 
    3026import net.project.base.ObjectType; 
     
    3430import net.project.base.finder.TextComparator; 
    3531import net.project.base.finder.TextFilter; 
    36 import net.project.base.mvc.AbstractJavaScriptView; 
    3732import net.project.base.property.PropertyProvider; 
    3833import net.project.calendar.PnCalendar; 
     
    4136import net.project.calendar.workingtime.IWorkingTimeCalendar; 
    4237import net.project.calendar.workingtime.IWorkingTimeCalendarProvider; 
     38import net.project.calendar.workingtime.WorkingTimeCalendarDefinition; 
    4339import net.project.database.DBBean; 
    4440import net.project.database.DatabaseUtils; 
     
    7773import net.project.util.TimeQuantityUnit; 
    7874import net.project.util.Validator; 
    79 import net.project.view.pages.assignments.MyAssignments; 
    80  
     75 
     76import org.apache.commons.collections.MultiHashMap; 
     77import org.apache.commons.collections.MultiMap; 
     78import org.apache.log4j.Logger; 
    8179 
    8280public class PnAssignmentWorkServiceImpl implements IPnAssignmentWorkService { 
    83          
    84         private static Logger log = Logger.getLogger(PnAssignmentWorkServiceImpl.class); 
    85  
    86         public static final TimeQuantity MAXIMUM_WORK_HOURS = new TimeQuantity( 
    87                         new BigDecimal("24"), TimeQuantityUnit.HOUR); 
    88  
    89         protected ErrorReporter errors; 
    90          
    91         private ResourceWorkingTimeCalendarProvider calendarProvider; 
    92          
    93         protected ErrorReporter errorReporter; 
    94          
    95         private Map planIDMap; 
    96          
    97         private Date startDate; 
    98          
    99         private Date endDate; 
    100          
    101         private List dateHeaders; 
    102          
    103         private List dateLongNames; 
    104          
    105         private List assignments; 
    106          
    107         private Map dateValues; 
    108          
    109         private Map summaryDateValues; 
    110      
    111         private Map assignmentMap; 
    112      
    113         private Boolean showFilterPane; 
    114      
    115         private String percentComplete = null; 
    116      
    117         private TimeQuantity assnWork = TimeQuantity.O_HOURS; 
    118      
    119         private TimeQuantity currentWork = assnWork; 
    120      
    121         private Date scrollBackStartDate; 
    122      
    123         private Date scrollForwardStartDate; 
    124      
    125         private TaskFinder finder = new TaskFinder(); 
    126          
    127         public static class DateHeader { 
     81 
     82    private static Logger log = Logger.getLogger(PnAssignmentWorkServiceImpl.class); 
     83 
     84    public static final TimeQuantity MAXIMUM_WORK_HOURS = new TimeQuantity(new BigDecimal("24"), TimeQuantityUnit.HOUR); 
     85 
     86    protected ErrorReporter errors; 
     87 
     88    private ResourceWorkingTimeCalendarProvider calendarProvider; 
     89 
     90    protected ErrorReporter errorReporter; 
     91 
     92    private Map planIDMap; 
     93 
     94    private Date startDate; 
     95 
     96    private Date endDate; 
     97 
     98    private List dateHeaders; 
     99 
     100    private List dateLongNames; 
     101 
     102    private List assignments; 
     103 
     104    private Map dateValues; 
     105 
     106    private Map summaryDateValues; 
     107 
     108    private Map assignmentMap; 
     109 
     110    private Boolean showFilterPane; 
     111 
     112    private String percentComplete = null; 
     113 
     114    private TimeQuantity assnWork = TimeQuantity.O_HOURS; 
     115 
     116    private TimeQuantity currentWork = assnWork; 
     117 
     118    private Date scrollBackStartDate; 
     119 
     120    private Date scrollForwardStartDate; 
     121 
     122    private TaskFinder finder = new TaskFinder(); 
     123 
     124    public static class DateHeader { 
    128125        public String dayOfWeek; 
     126 
    129127        public String date; 
    130128    } 
    131          
    132         private IPnAssignmentWorkDAO pnAssignmentWorkDAO;        
    133          
    134         private IUtilService utilService;        
    135  
    136        public void setUtilService(IUtilService utilService) { 
    137                this.utilService = utilService; 
    138        
    139  
    140        public void setPnAssignmentWorkDAO(IPnAssignmentWorkDAO pnAssignmentWorkDAO) { 
    141                this.pnAssignmentWorkDAO = pnAssignmentWorkDAO; 
    142        
    143  
    144         public PnAssignmentWork getAssignmentWork(Integer assignmentWorkId) {            
    145                return pnAssignmentWorkDAO.findByPimaryKey(assignmentWorkId)
    146        
    147  
    148        public Integer saveAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
    149                return pnAssignmentWorkDAO.create(pnAssignmentWork); 
    150        
    151  
    152        public void deleteAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
    153                pnAssignmentWorkDAO.delete(pnAssignmentWork); 
    154        
    155  
    156        public void updateAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
    157                pnAssignmentWorkDAO.update(pnAssignmentWork); 
    158        
    159          
     129 
     130    private IPnAssignmentWorkDAO pnAssignmentWorkDAO; 
     131 
     132    private IUtilService utilService; 
     133 
     134    public void setUtilService(IUtilService utilService) { 
     135        this.utilService = utilService; 
     136   
     137 
     138    public void setPnAssignmentWorkDAO(IPnAssignmentWorkDAO pnAssignmentWorkDAO) { 
     139        this.pnAssignmentWorkDAO = pnAssignmentWorkDAO; 
     140   
     141 
     142    public PnAssignmentWork getAssignmentWork(Integer assignmentWorkId) { 
     143        return pnAssignmentWorkDAO.findByPimaryKey(assignmentWorkId)
     144   
     145 
     146    public Integer saveAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
     147        return pnAssignmentWorkDAO.create(pnAssignmentWork); 
     148   
     149 
     150    public void deleteAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
     151        pnAssignmentWorkDAO.delete(pnAssignmentWork); 
     152   
     153 
     154    public void updateAssignmentWork(PnAssignmentWork pnAssignmentWork) { 
     155        pnAssignmentWorkDAO.update(pnAssignmentWork); 
     156   
     157 
    160158        /* (non-Javadoc) 
    161159         * @see net.project.hibernate.service.IPnAssignmentWorkService#getModifiedTimeSheetEntries(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest) 
    162          */ 
    163         public String getModifiedTimeSheetEntries(HttpServletRequest request) { 
    164                 String objectId = request.getParameter("objectId"); 
    165                 String dateToStart = request.getParameter("scroll"); 
    166                 NumberFormat nf = NumberFormat.getInstance(); 
    167                 String scrollType=request.getParameter("scrollType")==null?"week":request.getParameter("scrollType"); 
    168                  
    169                 // Get/Set Date values List while scrolling and first Time Laod. 
    170                 String jsTimesValueArray=getTimeValueForJS(dateToStart,scrollType,objectId); 
    171  
    172                 // Get the assignments that we are displaying 
    173                 try { 
    174                         getAssignments(objectId); 
    175                 } catch (Exception e) { 
    176                         log.error("Error occured while getting assignments:" 
    177                                         + e.getMessage()); 
    178                 } 
    179                 String strTDwidth = "52px"; 
    180                 String timeSheetTable = ""; 
    181                 timeSheetTable += "<table align='left' id='timecard' border='0' width='100%' align=\"center\">\n"; 
    182                 timeSheetTable += "\t<tr>\n"; 
    183                 timeSheetTable += "\t\t<td width='75%'><div id='div1' style='display:block'><table align=\"center\"><tr class='timeSheetHeader'>\n"; 
    184                 timeSheetTable += "\t\t\t<td><img src='" 
    185                                 + SessionManager.getJSPRootURL() 
    186                                 + "/images/leftsingle.gif' border='0' onClick='scrollBack(\"" 
    187                                 + scrollBackStartDate.getTime() + "\",\""+scrollType+"\");'/></td>\n"; 
    188  
    189                 for (Iterator it = dateHeaders.iterator(); it.hasNext();) { 
    190                         DateHeader dateHeader = (DateHeader) it.next(); 
    191                         timeSheetTable += "\t\t\t<td align=\"center\"  width='" + strTDwidth 
    192                                         + "'>" + dateHeader.dayOfWeek + "<br>" + dateHeader.date 
    193                                         + "</td>\n"; 
    194                 } 
    195  
    196                 timeSheetTable += "\t\t\t<td><img src='" 
    197                                 + SessionManager.getJSPRootURL() 
    198                                 + "/images/rightsingle.gif' border='0' align=\"right\" onClick='scrollForward(\"" 
    199                                 + scrollForwardStartDate.getTime() + "\",\""+scrollType+"\");'/></td>\n"; 
    200                 timeSheetTable += "\t\t</tr>"; 
    201                 timeSheetTable += "\t\t<tr>\n"; 
    202                 timeSheetTable += "\t\t\t<td colspan='9' align='center'>\n"; 
    203                 if(scrollType.equalsIgnoreCase("week")){ 
    204                         timeSheetTable += "\t\t\t\t <a href='javascript:changeScrollType(\"day\");'>day</a> &nbsp; week\n"; 
    205                 }else{ 
    206                         timeSheetTable += "\t\t\t\t day &nbsp; <a href='javascript:changeScrollType(\"week\");'>week</a>\n"; 
    207                 } 
    208                 timeSheetTable += "\t\t\t</td></tr></table></div>\n"; 
    209  
    210                 timeSheetTable += "\t\t</td>\n"; 
    211  
    212                 timeSheetTable += "\t\t<td align='center' valign='top' class='blogEntryLabel' nowrap='nowrap' >Total Days<br/>Reported<br/>" 
    213                                            //+"<a href='javascript:showHistory();' class='bluelink'>history</a>"  
    214                                            +"</td>\n"; 
    215                 timeSheetTable += "\t\t<td align='center' valign='top' class='blogEntryLabel' nowrap='nowrap' >Estimated <br/>Remaining</td>\n"; 
    216                 timeSheetTable += "\t\t<td align='center' valign='top' class='blogEntryLabel' nowrap='nowrap' >Total <br/>Est.Days</td>\n"; 
    217                 timeSheetTable += "\t\t<td align='center' valign='top' class='blogEntryLabel' nowrap='nowrap' >% <br/>complete<br/>" 
    218                                        //+"<a href='javascript:setPercentageDiv();' class='redlink'>not accurate?</a>" 
    219                                        +"</td>\n"; 
    220                 timeSheetTable += "\t\t<td></td>\n"; 
    221  
    222                 timeSheetTable += "\t</tr>\n"; 
    223                 timeSheetTable += "\t<tr><td colspan='7' class='blogbar2'></td></tr>\n"; 
    224  
    225                 timeSheetTable += "\t<tr class='tableContent'>\n"; 
    226  
    227                 timeSheetTable += "\t\t<td width='75%'><div id='div11' style='display:block'><table align=\"center\"><tr class='tableContent'>\n"; 
    228                 timeSheetTable += "\t\t\t<td></td>\n"; 
    229                 double percenComplete = 1.0; 
    230                 int forcount = 0; 
    231                 String strWork = TimeQuantity.O_HOURS.toShortString(0, 2); 
    232                 String strWorkComplete = TimeQuantity.O_HOURS.toShortString(0, 2); 
    233                 String strWorkRemaining = TimeQuantity.O_HOURS.toShortString(0, 2); 
    234                 for (Iterator it = assignments.iterator(); it.hasNext();) { 
    235                         Assignment assignment = (Assignment) it.next(); 
    236                         if (assignment instanceof ScheduleEntryAssignment) { 
    237                                 ScheduleEntryAssignment seAssignment = (ScheduleEntryAssignment) assignment; 
    238                                 percenComplete = seAssignment.getPercentComplete() 
    239                                                 .doubleValue(); 
    240                                 strWork = seAssignment.getWork().toShortString(0, 2); 
    241                                 strWorkComplete = seAssignment.getWorkComplete().toShortString( 
    242                                                 0, 2); 
    243                                 strWorkRemaining = seAssignment.getWorkRemaining() 
    244                                                 .toShortString(0, 2); 
    245  
    246                         } else if (assignment instanceof ActivityAssignment) { 
    247                                 ActivityAssignment aAssignment = (ActivityAssignment) assignment; 
    248                                 strWork = aAssignment.getWork().toShortString(0, 2); 
    249                                 strWorkComplete = aAssignment.getWork().toShortString(0, 2); 
    250  
    251                         } else if (assignment instanceof FormAssignment) { 
    252                                 FormAssignment fAssignment = (FormAssignment) assignment; 
    253                                 percenComplete = fAssignment.getPercentComplete().doubleValue(); 
    254                                 strWork = fAssignment.getWork().toShortString(0, 2); 
    255                                 strWorkComplete = fAssignment.getWorkComplete().toShortString( 
    256                                                 0, 2); 
    257                                 strWorkRemaining = fAssignment.getWorkRemaining() 
    258                                                 .toShortString(0, 2); 
    259                         } 
    260                         for (Iterator it2 = dateLongNames.iterator(); it2.hasNext();) { 
    261                                 String name = (String) it2.next(); 
    262                                 TimeQuantity work = (TimeQuantity) dateValues 
    263                                                 .get(new AssignmentDate(new Date(Long.parseLong(name)), 
    264                                                                 assignment.getObjectID())); 
    265                                 work = (work == null ? new TimeQuantity(0, 
    266                                                 TimeQuantityUnit.HOUR) : work); 
    267                                 String valueName = "dateupdX" + assignment.getObjectID() + "X" 
    268                                                 + name; 
    269                                 String valueValue = (request.getParameter(valueName) == null ? " " 
    270                                                 : " value='" + request.getParameter(valueName) + "' "); 
    271                                 timeSheetTable += "\t\t\t<td nowrap='nowrap' width='" + strTDwidth 
    272                                                 + "' align=\"center\">\n"; 
    273                                 timeSheetTable += work.toShortString(0, 2); 
    274                                 timeSheetTable += "\t\t\t\t<br>\n"; 
     160     */ 
     161    public String getModifiedTimeSheetEntries(HttpServletRequest request) { 
     162        String objectId = request.getParameter("objectId"); 
     163        String dateToStart = request.getParameter("scroll"); 
     164        NumberFormat nf = NumberFormat.getInstance(); 
     165        String scrollType = request.getParameter("scrollType") == null ? "week" : request.getParameter("scrollType"); 
     166 
     167        // Get/Set Date values List while scrolling and first Time Laod. 
     168        String jsTimesValueArray = getTimeValueForJS(dateToStart, scrollType, objectId); 
     169 
     170        // Get the assignments that we are displaying 
     171        try { 
     172            getAssignments(objectId); 
     173        } catch (Exception e) { 
     174            log.error("Error occured while getting assignments:" + e.getMessage()); 
     175        } 
     176        String strTDwidth = "52px"; 
     177        String timeSheetTable = ""; 
     178        timeSheetTable += "<table align='left' id='timecard' border='0' width='100%' align=\"center\">\n"; 
     179        timeSheetTable += "\t<tr>\n"; 
     180        timeSheetTable += "\t\t<td width='75%'><div id='div1' style='display:block'><table align=\"center\"><tr class='timeSheetHeader'>\n"; 
     181        timeSheetTable += "\t\t\t<td><img src='" + SessionManager.getJSPRootURL() + "/images/leftsingle.gif' border='0' onClick='scrollBack(\"" + scrollBackStartDate.getTime() + "\",\"" + scrollType + "\");'/></td>\n"; 
     182 
     183        for (Iterator it = dateHeaders.iterator(); it.hasNext();) { 
     184            DateHeader dateHeader = (DateHeader) it.next(); 
     185            timeSheetTable += "\t\t\t<td align=\"center\"  width='" + strTDwidth + "'>" + dateHeader.dayOfWeek + "<br>" + dateHeader.date + "</td>\n"; 
     186        } 
     187 
     188