/* * Copyright (C) 2011 aki@akjava.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.akjava.gwt.lib.client.widget.cell.util; import com.google.gwt.core.client.GWT; /** * @author ak * License Apache 2.0 * / * * @author aki * */ public class TimeData { private int hour; private int second; private int minute; private int millisecond; public TimeData(long millisecond){ setTime(millisecond); } public void setTime(long millisecond){ long hour_millisecond=(60*60*1000); int minute_millisecond=60*1000; int second_millisecond=1000; int hour=(int)(millisecond/hour_millisecond); long remain=millisecond%hour_millisecond; int minute=(int)(remain/minute_millisecond); remain=remain%minute_millisecond; int second=(int)(remain/second_millisecond); remain=remain%second_millisecond; setHour(hour); setMinute(minute); setSecond(second); setMillisecond((int)remain); } public TimeData(String line){ int hour=Integer.parseInt(line.substring(0,2)); int minute=Integer.parseInt(line.substring(3,5)); int second=Integer.parseInt(line.substring(6,8)); int milli=Integer.parseInt(line.substring(9,12)); setHour(hour); setMinute(minute); setSecond(second); setMillisecond(milli); } /* * temporary horrible method */ public static String fixTimeString(String value){ String[] tmp=value.split(","); String hms=null; String ms=null; if(tmp.length==1){ hms=tmp[0]; ms="000"; }else{ hms=tmp[0]; ms=tmp[1]; while(ms.length()<3){ ms="0"+ms; } } String hourMinuteSecond[]=new String[3]; String tmp2[]=hms.split(":"); if(tmp2.length>3){ GWT.log("over hour:minute:date"); return null; } int index=2; for(int i=tmp2.length-1;i>=0;i--){ hourMinuteSecond[index]=tmp2[i]; index--; } String result=""; for(int i=0;i<hourMinuteSecond.length;i++){ if(hourMinuteSecond[i]==null){ hourMinuteSecond[i]="00"; }else{ if(hourMinuteSecond[i].length()<2){ hourMinuteSecond[i]="0"+hourMinuteSecond[i]; } } if(!result.isEmpty()){ result+=":"; } result+=hourMinuteSecond[i]; } return result+","+ms; } public long getTime(){ long result=millisecond; result+=second*1000; result+=minute*60*1000; result+=hour*60*60*1000; return result; } public String toString(){ return toLabel2(hour)+":"+toLabel2(minute)+":"+toLabel2(second)+","+toLabel3(millisecond); } public String toMinuteString(){ int hminute=minute+hour*60; return toLabel2(hminute)+":"+toLabel2(second)+","+toLabel3(millisecond); } public String toIgnoreZeroHourString(boolean needMillisecond){ String label=toString(); String ret=""; if(needMillisecond){ ret=label; }else{ String tm[]=label.split(","); ret=tm[0]; } if(ret.startsWith("00:")){ return ret.substring(3);//ignore empty hour } return ret; } public String toMinuteString(boolean needMillisecond){ String label=toMinuteString(); if(needMillisecond){ return label; }else{ String tm[]=label.split(","); return tm[0]; } } private static String toLabel2(int number){ String v=""+number; if(v.length()<2) v="0"+v; return v; } private String toLabel3(int number){ String v=""+number; if(v.length()<2) v="0"+v; if(v.length()<3) v="0"+v; if(v.length()>3) return "999"; return v; } /** * @return */ public int getHour() { return hour; } /** * @return */ public int getMillisecond() { return millisecond; } /** * @return */ public int getMinute() { return minute; } /** * @return */ public int getSecond() { return second; } /** * @param i */ public void setHour(int i) { hour = i; } /** * @param i */ public void setMillisecond(int i) { millisecond = i; } /** * @param i */ public void setMinute(int i) { minute = i; } /** * @param i */ public void setSecond(int i) { second = i; } /** * @param duration */ public synchronized void roll(long duration) { long current=getTime(); current+=duration; setTime(current); } }