All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.myfaces.custom.schedule.util.ScheduleUtil Maven / Gradle / Ivy

Go to download

JSF components and utilities that can be used with any JSF implementation. This library is based on the JSF1.1 version of Tomahawk, but with minor source code and build changes to take advantage of JSF1.2 features. A JSF1.2 implementation is required to use this version of the Tomahawk library.

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.apache.myfaces.custom.schedule.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.TimeZone;
import java.util.TreeSet;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;

import org.apache.myfaces.custom.schedule.model.Interval;


/**
 * 

* Some utility methods *

* * @author Jurgen Lust (latest modification by $Author: jlust $) * @author Kito Mann (some methods taken from the source code of his book 'JavaServer Faces in Action', which is also released under the Apache License * @author Bruno Aranda (adaptation of Jurgen's code to myfaces) * @version $Revision: 387334 $ */ public class ScheduleUtil { //~ Class Variables -------------------------------------------------------- private final static String DATE_ID_PATTERN = "yyyyMMdd"; //~ Constructors ----------------------------------------------------------- /** * This class should not be instantiated, it only contains static methods */ private ScheduleUtil() { super(); } //~ Methods ---------------------------------------------------------------- /** *

* Check if the value of a UIComponent is a value or method binding * expression. *

* * @param value the value to check * * @return whether the value is a binding expression */ public static boolean isBindingExpression(Object value) { boolean returnboolean = ((value != null) && value instanceof String && ((String) value).startsWith("#{") && ((String) value).endsWith("}")); return returnboolean; } /** *

* Get the boolean value of a UIComponent, even if it is a value * binding expression. *

* * @param component the component * @param property the property * @param key the key of the value binding * @param defaultValue the default value * * @return the boolean value */ public static boolean getBooleanProperty( UIComponent component, Boolean property, String key, boolean defaultValue ) { if (property != null) { return property.booleanValue(); } else { ValueBinding binding = (ValueBinding) component.getValueBinding(key); if (binding != null) { Boolean value = (Boolean) binding.getValue( FacesContext.getCurrentInstance() ); if (value != null) { return value.booleanValue(); } } } return defaultValue; } /** *

* Get the boolean value of an attribute *

* * @param attributeValue the attribute value * @param valueIfNull the default value * * @return the boolean value */ public static boolean getBooleanValue( Object attributeValue, boolean valueIfNull ) { if (attributeValue == null) { return valueIfNull; } if (attributeValue instanceof String) { return ((String) attributeValue).equalsIgnoreCase("true"); } else { return ((Boolean) attributeValue).booleanValue(); } } /** *

* Get the float value of a UIComponent, even if it is a value * binding expression. *

* * @param component the component * @param property the property * @param key the key of the value binding * @param defaultValue the default value * * @return the float value */ public static float getFloatProperty( UIComponent component, Float property, String key, float defaultValue ) { if (property != null) { return property.floatValue(); } else { ValueBinding binding = (ValueBinding) component.getValueBinding(key); if (binding != null) { Float value = (Float) binding.getValue(FacesContext.getCurrentInstance()); if (value != null) { return value.floatValue(); } } } return defaultValue; } /** *

* Get the hashcode for the truncated date *

* * @param date the date * * @return the hashCode of the truncated date */ public static int getHashCodeForDay(Date date,TimeZone tz) { Calendar calendar = getCalendarInstance(date, tz); return new Integer(calendar.get(Calendar.ERA)).hashCode() ^ new Integer(calendar.get(Calendar.YEAR)).hashCode() ^ new Integer(calendar.get(Calendar.DAY_OF_YEAR)).hashCode(); } /** *

* Get the int value of a UIComponent, even if it is a value * binding expression. *

* * @param component the component * @param property the property * @param key the key of the value binding * @param defaultValue the default value * * @return the int value */ public static int getIntegerProperty( UIComponent component, Integer property, String key, int defaultValue ) { if (property != null) { return property.intValue(); } else { ValueBinding binding = (ValueBinding) component.getValueBinding(key); if (binding != null) { Integer value = (Integer) binding.getValue( FacesContext.getCurrentInstance() ); if (value != null) { return value.intValue(); } } } return defaultValue; } /** *

* Get the object value of a UIComponent, even if it is a value * binding expression. *

* * @param component the component * @param property the property * @param key the key of the value binding * @param defaultValue the default value * * @return the object value */ public static Object getObjectProperty( UIComponent component, Object property, String key, Object defaultValue ) { if (property != null) { return property; } else { ValueBinding binding = (ValueBinding) component.getValueBinding(key); if (binding != null) { return binding.getValue(FacesContext.getCurrentInstance()); } } return defaultValue; } /** *

* Check if the 2 dates are in the same day. *

* * @param date1 the first date * @param date2 the second date * * @return whether the dates are in the same day */ public static boolean isSameDay( Date date1, Date date2, TimeZone tz ) { if ((date1 == null) || (date2 == null)) { return false; } Calendar calendar1 = getCalendarInstance(date1, tz); Calendar calendar2 = getCalendarInstance(date2, tz); return (calendar1.get(Calendar.ERA) == calendar2.get(Calendar.ERA) && calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR) && calendar1.get(Calendar.DAY_OF_YEAR) == calendar2.get(Calendar.DAY_OF_YEAR)); } /** *

* Check if the 2 dates are at the same time of day. *

* * @param date1 the first date * @param date2 the second date * * @return whether the dates are at the same time of day */ public static boolean isSameTime(Date date1, Date date2) { if ((date1 == null) || (date2 == null)) { return false; } Calendar calendar1 = getCalendarInstance(date1, null); Calendar calendar2 = getCalendarInstance(date2, null); return (calendar1.get(Calendar.HOUR_OF_DAY) == calendar2.get(Calendar.HOUR_OF_DAY) && calendar1.get(Calendar.MINUTE) == calendar2.get(Calendar.MINUTE) && calendar1.get(Calendar.SECOND) == calendar2.get(Calendar.SECOND)); } /** *

* Check if two sets of intervals are equivalent. * Intervals are equivalent if their label is the same and they begin and end * at the same time of day. *

* * @param intervals1 the first set of intervals * @param intervals2 the second set of intervals * * @return whether the dates are at the same time of day */ public static boolean areEquivalentIntervals(TreeSet intervals1, TreeSet intervals2) { if (intervals1 == null || intervals2 == null) { return !(intervals1 != null || intervals2 != null); } if (intervals1.size() == intervals2.size()) { Iterator it1 = intervals1.iterator(); Iterator it2 = intervals2.iterator(); while (it1.hasNext()) { if (!((Interval) it1.next()).isEquivalent(((Interval) it2.next()))) { return false; } } return true; } else { return false; } } /** *

* Get the String value of a UIComponent, even if it is a value * binding expression. *

* * @param component the component * @param property the property * @param key the key of the value binding * @param defaultValue the default value * * @return the String value */ public static String getStringProperty( UIComponent component, String property, String key, String defaultValue ) { if (property != null) { return property; } else { ValueBinding binding = (ValueBinding) component.getValueBinding(key); if (binding != null) { return (String) binding.getValue( FacesContext.getCurrentInstance() ); } } return defaultValue; } /** *

* Check if the value of the given component can be modified *

* * @param component the component * * @return whether the value can be modified */ public static boolean canModifyValue(UIComponent component) { boolean returnboolean = (component.isRendered() && !getBooleanValue(component.getAttributes().get("readonly"), false) && !getBooleanValue(component.getAttributes().get("disabled"), false)); return returnboolean; } /** *

* Compare 2 dates after truncating them. *

* * @param date1 the first date * @param date2 the second date * * @return the comparison */ public static int compareDays( Date date1, Date date2, TimeZone tz ) { if (date1 == null) { return -1; } if (date2 == null) { return 1; } return truncate(date1,tz).compareTo(truncate(date2,tz)); } /** * truncate the given Date to 00:00:00 that same day * * @param date the date that should be truncated * @return the truncated date */ public static Date truncate(Date date, TimeZone tz) { if (date == null) return null; Calendar cal = getCalendarInstance(date, tz); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); } /** * get a String identifying this date * * @param date the date * @return the identifier for this date */ public static String getDateId(Date date, TimeZone timeZone) { if (date == null) return "NULL"; return getDateIdFormater(timeZone).format(date); } /** * get a date from the given date ID * * @param id the date ID * @return the date */ public static Date getDateFromId(String id, TimeZone timeZone) { if (id == null || id.length() == 0 || "null".equals(id)) return null; try { return getDateIdFormater(timeZone).parse(id); } catch (ParseException e) { return null; } } public static Calendar getCalendarInstance(Date date, TimeZone timeZone) { Calendar cal = GregorianCalendar.getInstance( timeZone != null ? timeZone : TimeZone.getDefault()); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(date); return cal; } private static SimpleDateFormat getDateIdFormater(TimeZone timeZone) { SimpleDateFormat format = new SimpleDateFormat(DATE_ID_PATTERN); format.setTimeZone(timeZone); return format; } } //The End




© 2015 - 2024 Weber Informatics LLC | Privacy Policy