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.joda.time.DateTime; 019 import org.joda.time.LocalTime; 020 import org.kuali.hr.core.cache.CacheUtils; 021 import org.kuali.hr.time.service.base.TkServiceLocator; 022 import org.kuali.rice.kns.maintenance.KualiMaintainableImpl; 023 import org.kuali.rice.krad.bo.PersistableBusinessObject; 024 025 public class CalendarEntryMaintainableImpl extends KualiMaintainableImpl { 026 027 /** 028 * 029 */ 030 private static final long serialVersionUID = 1L; 031 032 @Override 033 public PersistableBusinessObject getBusinessObject() { 034 //used to setup the divided time/date fields 035 CalendarEntries payEntry = (CalendarEntries)super.getBusinessObject(); 036 if(payEntry.getBeginPeriodTime()==null){ 037 payEntry.setBeginPeriodDateTime(payEntry.getBeginPeriodDateTime()); 038 payEntry.setEndPeriodDateTime(payEntry.getEndPeriodDateTime()); 039 } 040 return payEntry; 041 } 042 043 @Override 044 public void saveBusinessObject() { 045 CalendarEntries payEntry = (CalendarEntries)super.getBusinessObject(); 046 Calendar calendar = TkServiceLocator.getCalendarService().getCalendarByGroup(payEntry.getCalendarName()); 047 payEntry.setHrCalendarId(calendar.getHrCalendarId()); 048 049 java.sql.Date beginDate = payEntry.getBeginPeriodDate(); 050 java.sql.Time beginTime = payEntry.getBeginPeriodTime(); 051 LocalTime beginTimeLocal = new LocalTime(beginTime.getTime()); 052 DateTime beginDateTime = new DateTime(beginDate.getTime()); 053 beginDateTime = beginDateTime.plus(beginTimeLocal.getMillisOfDay()); 054 payEntry.setBeginPeriodDateTime(new java.util.Date(beginDateTime.getMillis())); 055 056 java.sql.Date endDate = payEntry.getEndPeriodDate(); 057 java.sql.Time endTime = payEntry.getEndPeriodTime(); 058 LocalTime endTimeLocal = new LocalTime(endTime.getTime()); 059 DateTime endDateTime = new DateTime(endDate.getTime()); 060 endDateTime = endDateTime.plus(endTimeLocal.getMillisOfDay()); 061 payEntry.setEndPeriodDateTime(new java.util.Date(endDateTime.getMillis())); 062 063 super.saveBusinessObject(); 064 CacheUtils.flushCache(CalendarEntries.CACHE_NAME); 065 } 066 067 068 069 070 071 072 }