[jboss-user] [JBoss jBPM] - Re: How to get the Business Hours:Min:Sec
itsolvs
do-not-reply at jboss.com
Fri Jan 26 12:40:14 EST 2007
Ed,
Thanks for the suggestion. I did some basic implemenation. Though it is not 100% complete , good for some body to start with. At this point the requirement was dropped from the project. I will update on this once I get chance to work again.
Following is the code:
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
static int deltaHour = 0;
static int deltaMinute = 0;
static boolean flag= true;
static boolean isFirstTime= true;
public static void main(String args[]){
System.out.println("Current Time ..."+new Date());
//findBusinesstime();
Calendar calendar = BusinessCalendar.getCalendar();
calendar.set(Calendar.YEAR, 2007);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 25);
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date startDay = calendar.getTime();
System.out.println(startDay);
Calendar calendar2 = BusinessCalendar.getCalendar();
calendar2.set(Calendar.YEAR, 2007);
calendar2.set(Calendar.MONTH, Calendar.JANUARY);
calendar2.set(Calendar.DAY_OF_MONTH, 27);
calendar2.set(Calendar.HOUR_OF_DAY, 13);
calendar2.set(Calendar.MINUTE, 15);
calendar2.set(Calendar.SECOND, 0);
calendar2.set(Calendar.MILLISECOND, 0);
Date endDay = calendar2.getTime();
System.out.println(endDay);
addHours("D:/workspace/SLA");
}
public static String getBusinessHours(BusinessCalendar businessCalendar,Date startDate, Date endDate){
DayPart dayPart = null;
Calendar calendar = BusinessCalendar.getCalendar();
calendar.setTime(startDate);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
System.out.println("startDate------->"+startDate);
System.out.println("endDate------->"+endDate);
System.out.println("deltaHour------->"+deltaHour);
System.out.println("deltaMinute------->"+deltaMinute);
if(compareDates(startDate,endDate)== 1){ // First before day
if (!businessCalendar.isHoliday(startDate)) {
Day day = businessCalendar.findDay(startDate);
for (int i=0; ((i < day.dayParts.length)
&& (dayPart==null)); i++) {
DayPart dayPart1 = day.dayParts;
DayPart dayPart2 = day.dayParts[++i];
int fromHour1 = dayPart1.fromHour;
int fromMinute1 = dayPart1.fromMinute;
int toHour1 = dayPart1.toHour;
int toMinute1 = dayPart1.toMinute;
int fromHour2 = dayPart2.fromHour;
int fromMinute2 = dayPart2.fromMinute;
int toHour2 = dayPart2.toHour;
int toMinute2 = dayPart2.toMinute;
System.out.println("fromHour1------->"+dayPart1.fromHour);
System.out.println("fromMinute1------->"+dayPart1.fromMinute);
System.out.println("toHour1------->"+dayPart1.toHour);
System.out.println("toMinute1------->"+dayPart1.toMinute);
System.out.println("fromHour2------->"+dayPart2.fromHour);
System.out.println("fromMinute2------->"+dayPart2.fromMinute);
System.out.println("toHour2------->"+dayPart2.toHour);
System.out.println("toMinute2------->"+dayPart2.toMinute);
if(dayPart1.includes(startDate)){
System.out.println("Included in DayPart1 ...");
if(hour >= fromHour1 && minute !=0){
deltaHour = deltaHour+((toHour1-hour)-1);
deltaMinute = deltaMinute+((60-minute)+toMinute1);
if(fromMinute2 !=0 || toMinute2!=0){
deltaHour =deltaHour+ (toHour2-fromHour2)-1;
deltaMinute =deltaMinute+ (60-(fromMinute2-toMinute2));
}else{
deltaHour =deltaHour+ (fromHour2-toHour2)-1;
}
}
}
System.out.println("------"+minute+":"+toMinute1+":"+hour+":"+toHour1);
if(dayPart2.includes(startDate) ||((minute >= toMinute1 && minute <= fromMinute2) && hour == toHour1) ){
System.out.println("Included in DayPart2 ..."+minute+":"+toMinute2+":"+deltaMinute);
if(minute!=0){
deltaHour =deltaHour+(toHour2-hour-1);
deltaMinute =deltaMinute+ ((60-minute)+toMinute2);
}else if(minute ==0){
deltaHour =deltaHour+(toHour2-hour);
deltaMinute =deltaMinute+toMinute2;
}
}
if(deltaMinute>60){
int j = deltaMinute/60;
deltaHour = deltaHour+j;
deltaMinute = deltaMinute-(j*60);
}
break;
}
}else{
System.out.println("Holiday1 ------->");
}
}else if(flag && compareDates(startDate,endDate)== 0){ //For last SameDay case
System.out.println("SameDay case ------->");
if (!businessCalendar.isHoliday(startDate)) {
Day day = businessCalendar.findDay(startDate);
for (int i=0; ((i < day.dayParts.length)
&& (dayPart==null)); i++) {
DayPart dayPart1 = day.dayParts;
DayPart dayPart2 = day.dayParts[++i];
int fromHour1 = dayPart1.fromHour;
int fromMinute1 = dayPart1.fromMinute;
int toHour1 = dayPart1.toHour;
int toMinute1 = dayPart1.toMinute;
int fromHour2 = dayPart2.fromHour;
int fromMinute2 = dayPart2.fromMinute;
int toHour2 = dayPart2.toHour;
int toMinute2 = dayPart2.toMinute;
if(dayPart1.includes(startDate)){
System.out.println("Included in DayPart1 ...");
if(hour >= fromHour1){
deltaHour = deltaHour+((hour-fromHour1)-1);
deltaMinute = deltaMinute+((60-fromMinute1)+minute);
}else {//non business hour
deltaHour = deltaHour+((fromHour1-hour)-1);
deltaMinute = deltaMinute+((60-minute)+fromMinute1);
}
}
System.out.println("------"+minute+":"+toMinute1+":"+hour+":"+toHour1);
if(dayPart2.includes(startDate) ||((minute >= toMinute1 && minute <= fromMinute2) && hour == toHour1) ){
deltaHour =deltaHour+(hour-fromHour1-1);
deltaMinute =deltaMinute+ ((60-fromMinute2)+minute);
}
if(deltaMinute>60){
int j = deltaMinute/60;
deltaHour = deltaHour+j;
deltaMinute = deltaMinute-(j*60);
}
break;
}
}else{
System.out.println("Holiday ------->");
}
flag = false;
}else if(isFirstTime && compareDates(startDate,endDate)== 0){ // First time same day case ..
Day day = businessCalendar.findDay(startDate);
for (int i=0; ((i < day.dayParts.length)
&& (dayPart==null)); i++) {
DayPart dayPart1 = day.dayParts;
DayPart dayPart2 = day.dayParts[++i];
int fromHour1 = dayPart1.fromHour;
int fromMinute1 = dayPart1.fromMinute;
int toHour1 = dayPart1.toHour;
int toMinute1 = dayPart1.toMinute;
int fromHour2 = dayPart2.fromHour;
int fromMinute2 = dayPart2.fromMinute;
int toHour2 = dayPart2.toHour;
int toMinute2 = dayPart2.toMinute;
if(dayPart1.includes(endDate)){
System.out.println("endDate Included in DayPart1 ...");
if(hour >= fromHour1){
deltaHour = deltaHour+((hour-fromHour1)-1);
deltaMinute = deltaMinute+((60-fromMinute1)+minute);
}else {//non business hour
deltaHour = deltaHour+((fromHour1-hour)-1);
deltaMinute = deltaMinute+((60-minute)+fromMinute1);
}
}
if(dayPart2.includes(startDate) ||((minute >= toMinute1 && minute <= fromMinute2) && hour == toHour1) ){
deltaHour =deltaHour+(hour-fromHour1-1);
deltaMinute =deltaMinute+ ((60-fromMinute2)+minute);
}
if(deltaMinute>60){
int j = deltaMinute/60;
deltaHour = deltaHour+j;
deltaMinute = deltaMinute-(j*60);
}
break;
}
}
isFirstTime = false;
Date nextDay = businessCalendar.findStartOfNextDay(startDate);
int sameday = compareDates(nextDay,endDate);
if(flag && sameday !=0){
if(sameday == 2){ //After
System.out.println("After------->");
flag = false;
}else if(sameday == 1){//Subsequent before days ..
flag = true;
System.out.println("before------->");
if (!businessCalendar.isHoliday(nextDay)){
Day day = businessCalendar.findDay(nextDay);
for (int i=0; ((i < day.dayParts.length)
&& (dayPart==null)); i++) {
DayPart dayPart1 = day.dayParts;
DayPart dayPart2 = day.dayParts[++i];
int fromHour1 = dayPart1.fromHour;
int fromMinute1 = dayPart1.fromMinute;
int toHour1 = dayPart1.toHour;
int toMinute1 = dayPart1.toMinute;
int fromHour2 = dayPart2.fromHour;
int fromMinute2 = dayPart2.fromMinute;
int toHour2 = dayPart2.toHour;
int toMinute2 = dayPart2.toMinute;
if(toMinute1!=0 || fromMinute1 !=0 ||fromMinute2!=0 ||toMinute2 !=0){
deltaHour = deltaHour+(toHour1-fromHour1)+(toHour2-fromHour2)-1;
int dayminutes = fromMinute1+toMinute1+fromMinute2+toMinute2;
if(dayminutes > 60) dayminutes = dayminutes-60;
else dayminutes = 60 - dayminutes;
deltaMinute = deltaMinute+dayminutes;
if(deltaMinute>60){
int j = deltaMinute/60;
deltaHour = deltaHour+j;
deltaMinute = deltaMinute-(j*60);
}
}else{
deltaHour = deltaHour+(toHour1-fromHour1)+(toHour2-fromHour2);
}
}
}else{
System.out.println("Holiday ------->");
}
}
}
if(flag){
System.out.println("same day------->"+flag);
//flag = false;
isFirstTime = false;
getBusinessHours(businessCalendar,nextDay,endDate);
}
//}
System.out.println("deltaHour------->"+deltaHour);
System.out.println("deltaMinute------->"+deltaMinute);
return "";
}
public static int compareDates(Date d1, Date d2){
if(d1.before(d2)){
return 1;
}else if(d1.after(d2)){
return 2;
}else{
return 0;
}
}
//public static Date addHours(String pf, Date d,Date d1, String s){
public static void addHours(String pf){
String propetiesFile = pf+"/"+"calendar.properties";
BusinessCalendar businessCalendar = new BusinessCalendar(propetiesFile);
Date startDate = new Date();
Date endate = businessCalendar.add(startDate,new Duration("2 hours"));
String businessHours = getBusinessHours(businessCalendar,startDate,endate);
}
}
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4006930#4006930
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4006930
More information about the jboss-user
mailing list