/**
* Java Agent Message Router - JAMR ( http://liawww.epfl.ch/~cion/jamr )
* FIPA compliant Message Transport Implementation
*
* Copyright (C) 2000, 2001, Laboratoire d'Intelligence Artificielle,
* Echole Polytechnique Federale de Lausanne ( http://liawww.epfl.ch )
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software foundation
*
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library (file lesser.txt); if not, try downloading it
* from http://www.gnu.org/copyleft/lesser.txt or write to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*
*
* BasicFipaDateTime.java
*
*
* Created: Mon Aug 28 22:41:41 2000
*
* @author Ion Constantinescu ( ion.constantinescu@epfl.ch )
* @version 0.72
* @author Nicolas Lhuillier (Motorola Labs)
* Corrected bug with Java Calendar class
* @version 1.0
*/
package jade.mtp.http;
import java.util.*;
import java.text.*;
public class BasicFipaDateTime {
Calendar cal = Calendar.getInstance();
short year;
short month;
short day;
short hour;
short minutes;
short seconds;
short milliseconds;
char typeDesignator='Z';
public BasicFipaDateTime(Date date) {
cal.setTime(date);
}
public BasicFipaDateTime(String str) {
fromString(str);
}
/**
* Get the value of year.
* @return Value of year.
*/
public short getYear() {
return (short) cal.get(Calendar.YEAR);
}
/**
* Set the value of year.
* @param v Value to assign to year.
*/
public void setYear(short v) {
cal.set(Calendar.YEAR,v);
}
/**
* Get the value of month.
* @return Value of month.
*/
public short getMonth() {
return (short)(cal.get(Calendar.MONTH)+1);
}
/**
* Set the value of month.
* @param v Value to assign to month.
*/
public void setMonth(short v) {
cal.set(Calendar.MONTH,v-1);
}
/**
* Get the value of day.
* @return Value of day.
*/
public short getDay() {
return (short)cal.get(Calendar.DAY_OF_MONTH);
}
/**
* Set the value of day.
* @param v Value to assign to day.
*/
public void setDay(short v) {
cal.set(Calendar.DAY_OF_MONTH,v);
}
/**
* Get the value of hour.
* @return Value of hour.
*/
public short getHour() {
return (short)cal.get(Calendar.HOUR_OF_DAY);
}
/**
* Set the value of hour.
* @param v Value to assign to hour.
*/
public void setHour(short v) {
cal.set(Calendar.HOUR_OF_DAY,v);
}
/**
* Get the value of minutes.
* @return Value of minutes.
*/
public short getMinutes() {
return (short)cal.get(Calendar.MINUTE);
}
/**
* Set the value of minutes.
* @param v Value to assign to minutes.
*/
public void setMinutes(short v) {
cal.set(Calendar.MINUTE,v);
}
/**
* Get the value of seconds.
* @return Value of seconds.
*/
public short getSeconds() {
return (short)cal.get(Calendar.SECOND);
}
/**
* Set the value of seconds.
* @param v Value to assign to seconds.
*/
public void setSeconds(short v) {
cal.set(Calendar.SECOND,v);
}
/**
* Get the value of milliseconds.
* @return Value of milliseconds.
*/
public short getMilliseconds() {
return (short)cal.get(Calendar.MILLISECOND);
}
/**
* Set the value of milliseconds.
* @param v Value to assign to milliseconds.
*/
public void setMilliseconds(short v) {
cal.set(Calendar.MILLISECOND,v);
}
/**
* Get the value of typeDesignator.
* @return Value of typeDesignator.
*/
public char getTypeDesignator() {
return typeDesignator;
}
/**
* Set the value of typeDesignator.
* @param v Value to assign to typeDesignator.
*/
public void setTypeDesignator(char v) {
this.typeDesignator = v;
}
public void fromString(String str) {
if( str != null ) {
cal.set(Calendar.YEAR,Integer.parseInt(str.substring(0,4)));
cal.set(Calendar.MONTH,Integer.parseInt(str.substring(4,6))-1);
cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(str.substring(6,8)));
typeDesignator=str.charAt(8);
cal.set(Calendar.HOUR_OF_DAY,Integer.parseInt(str.substring(9,11)));
cal.set(Calendar.MINUTE,Integer.parseInt(str.substring(11,13)));
cal.set(Calendar.SECOND,Integer.parseInt(str.substring(13,15)));
cal.set(Calendar.MILLISECOND,Integer.parseInt(str.substring(15,18)));
}
}
private String paddedInt( int size, int val ) {
String res = String.valueOf(val);
while( res.length() < size ) {
res = 0 + res;
}
return res;
}
public String toString() {
String str_date = cal.get(Calendar.YEAR) +
paddedInt(2,cal.get(Calendar.MONTH)+1) +
paddedInt(2,cal.get(Calendar.DAY_OF_MONTH))+"Z";
if( cal.get(Calendar.AM_PM) == Calendar.PM ) {
str_date=str_date+paddedInt(2,12+cal.get(Calendar.HOUR));
}
else {
str_date=str_date+paddedInt(2,cal.get(Calendar.HOUR));
}
str_date=str_date+paddedInt(2,cal.get(Calendar.MINUTE))+
paddedInt(2,cal.get(Calendar.SECOND))+
paddedInt(3,cal.get(Calendar.MILLISECOND));
return str_date;
}
public Date getTime() {
return cal.getTime();
}
/*
// For testing purposes only
public static void main(String[] arg) {
System.out.println("Initial date: 20030812Z171910154");
BasicFipaDateTime bfdt = new BasicFipaDateTime("20030812Z171910154");
System.out.println(bfdt.toString());
System.out.println("Year: "+bfdt.getYear());
System.out.println("Month: "+bfdt.getMonth());
System.out.println("Day: "+bfdt.getDay());
System.out.println("Hour: "+bfdt.getHour());
System.out.println("Min: "+bfdt.getMinutes());
System.out.println("Sec: "+bfdt.getSeconds());
System.out.println("Milli: "+bfdt.getMilliseconds());
System.out.println(new BasicFipaDateTime(new BasicFipaDateTime("20030812Z171910154").getTime()));
System.out.println();
System.out.println("Current date: "+new BasicFipaDateTime(new Date()).toString());
}
*/
} // End of class BasicFipaDateTime