Hello again,

Sorry I forgot we're in multitasking.

Here's a better version.

Regards,
Zied


2007/10/5, Zied Hamdi <[EMAIL PROTECTED]>:
>
> Hello,
>
> I've just wrote a util class that could help in this task.
>
> Regards,
> Zied
>
>
> 2007/9/21, Zied Hamdi <[EMAIL PROTECTED]>:
> >
> >
> > Sorry forgot to mention [tobago]
> > ---------- Forwarded message ----------
> > From: Zied Hamdi < [EMAIL PROTECTED] >
> > Date: 21 sept. 2007 15:36
> > Subject: separating the date and time components
> > To: MyFaces < [email protected]>
> >
> > Hi,
> >
> > I have attempted to assemble a tx:date with a tc:time follow the same
> > field (expecting each componenent will fill its data in the part it is
> > concerned with)
> >
> >       < tx:date
> >
> >             id ="workStartDate"
> >
> >             value ="#{intervention.workStart}"
> >
> >             label ="#{i18n.workStartDate}" >
> >
> >             < f:convertDateTime pattern = "dd.MM.yyyy" />
> >
> >       </ tx:date>
> >
> >
> >
> >       < tc:time
> >
> >             id ="workStart"
> >
> >             value = "#{intervention.workStart}" />
> >
> >
> >
> >
> >
> > The result is that tc:time seams to create a new instance with a date
> > set to 0 (01.01.1970) instead of using GregorianCalendar.set() on the
> > existing one.
> >
> > Do I have to cretae a minor issue on this behavior?
> >
> > --
> > Zied Hamdi
> > zatreex.sourceforge.net
> >
> >
> >
> > --
> > Zied Hamdi
> > zatreex.sourceforge.net
> >
> >
>
>
> --
> Zied Hamdi
> zatreex.sourceforge.net
>
>


-- 
Zied Hamdi
zatreex.sourceforge.net
package fr.into.common.util.data.calendar;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * Handle and compare dates and times in a multitasking env.
 * @author Zied Hamdi on 5 oct. 07
 *
 */
public class CalendarUtil {
        public static final int[]                                               
TIME                                            = {
                        Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND, 
Calendar.MILLISECOND
                                                                                
                                                                                
                                                        };
        public static final int[]                                               
DATE                                            = {
                        Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH
                                                                                
                                                                                
                                                        };

        public static Date setTime(Date source, Date target) {
                return set( source, target, TIME );
        }

        public static Date setDate(Date source, Date target) {
                return set( source, target, DATE );
        }

        public static Date set(Date source, Date target, int... toSet) {
                if( target == null ) {
                        target = new Date();
                }
                
                GregorianCalendar       targetCalendar  = new 
GregorianCalendar(), sourceCalendar = new GregorianCalendar();
                targetCalendar.setTime( target );
                sourceCalendar.setTime( source != null ? source : new Date( 0 ) 
);
                for( int calendarItem : toSet ) {
                        targetCalendar.set( calendarItem, sourceCalendar.get( 
calendarItem ) );
                }
                return targetCalendar.getTime();
        }

        public static boolean equals(Date date1, Date date2, int... toTest) {
                if( date1 == date2 )
                        return true;
                if( date1 == null || date2 == null )
                        return false;
                
                GregorianCalendar       targetCalendar  = new 
GregorianCalendar(), sourceCalendar = new GregorianCalendar();
                targetCalendar.setTime( date2 );
                sourceCalendar.setTime( date1 );
                for( int calendarItem : toTest ) {
                        if( targetCalendar.get( calendarItem ) != 
sourceCalendar.get( calendarItem ) )
                                return false;
                }

                return true;
        }

        public static boolean equalsTime(Date date, int hour, int minute, int 
second, int millisecond) {
                return equals( TIME, date, hour, minute, second, millisecond );
        }
        
        public static boolean equalsDate(Date date, int year, int month, int 
dayOfMonth) {
                return equals( DATE, date, year, month, dayOfMonth );
        }
        
        public static boolean equals(int[] toTest, Date date, int... values) {
                if( date == null )
                        return false;
                
                if( values.length != toTest.length )
                        throw new IllegalArgumentException("toTest and values 
must be the same length.");
                
                GregorianCalendar       testCalendar    = new 
GregorianCalendar();
                for( int i=0; i<toTest.length; i++) {
                        if( testCalendar.get( toTest[i] ) != values[i] )
                                return false;
                }
                return true;
        }
}

Reply via email to