/*******************************************************************************
* Copyright 2011 The Regents of the University of California
*
* 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 org.ohmage.triggers.utils;
import java.util.Calendar;
import java.util.Formatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SimpleTime {
private int mHour;
private int mMinute;
public SimpleTime() {
Calendar now = Calendar.getInstance();
mHour = now.get(Calendar.HOUR_OF_DAY);
mMinute = now.get(Calendar.MINUTE);
}
public SimpleTime(SimpleTime time) {
this(time.getHour(), time.getMinute());
}
public SimpleTime(int hour, int minute) {
mHour = hour;
mMinute = minute;
}
public void copy(SimpleTime time) {
mHour = time.getHour();
mMinute = time.getMinute();
}
public int getHour() {
return mHour;
}
public int getMinute() {
return mMinute;
}
public void setHour(int hour) {
mHour = hour;
}
public void setMinute(int minute) {
mMinute = minute;
}
public String toString(boolean isAmPm) {
if(isAmPm) {
String amPm = "am";
if(mHour >= 12) {
amPm = "pm";
}
int hour = mHour;
if(hour > 12) {
hour -= 12;
}
else if(hour == 0) {
hour = 12;
}
return new Formatter().format("%d:%02d " + amPm, hour, mMinute).toString();
}
else {
return new Formatter().format("%d:%02d", mHour, mMinute).toString();
}
}
public int differenceInMinutes(SimpleTime time) {
return Math.abs((time.getHour() * 60 + time.getMinute())
- (mHour * 60 + mMinute));
}
public boolean isAfter(SimpleTime time) {
int thisTime = mHour * 60 + mMinute;
int givenTime = time.getHour() * 60 + time.getMinute();
if(thisTime > givenTime) {
return true;
}
return false;
}
public boolean isBefore(SimpleTime time) {
int thisTime = mHour * 60 + mMinute;
int givenTime = time.getHour() * 60 + time.getMinute();
if(thisTime < givenTime) {
return true;
}
return false;
}
public boolean equals(Object time) {
if(time instanceof SimpleTime) {
SimpleTime t = (SimpleTime) time;
if(t.getHour() == mHour && t.getMinute() == mMinute) {
return true;
}
}
return false;
}
public boolean loadString(String time) {
Pattern pattern = Pattern.compile("([01]?[0-9]|2[0-3]):[0-5][0-9]");
Matcher matcher = pattern.matcher(time);
if(!matcher.matches()) {
return false;
}
String[] timeTokens = time.split(":");
mHour = Integer.parseInt(timeTokens[0]);
mMinute = Integer.parseInt(timeTokens[1]);
return true;
}
public String toString() {
return this.toString(true);
}
}