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 compatible with both JSF1.1 and JSF1.2; however for JSF1.2 users there is an alternative build of Tomahawk available that takes advantage of JSF1.2 features to offer some additional benefits.

There is a newer version: 1.1.14
Show 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