|
From: <fg...@us...> - 2007-01-04 17:32:56
|
Revision: 148
http://svn.sourceforge.net/openutils/?rev=148&view=rev
Author: fgiust
Date: 2007-01-04 09:32:56 -0800 (Thu, 04 Jan 2007)
Log Message:
-----------
adding elx, su and DAO tlds
Modified Paths:
--------------
trunk/openutils-tags-spring/pom.xml
Added Paths:
-----------
trunk/openutils-tags-spring/src/main/java/it/
trunk/openutils-tags-spring/src/main/java/it/openutils/
trunk/openutils-tags-spring/src/main/java/it/openutils/web/
trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/
trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/DaoFunctions.java
trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/ElxFunctions.java
trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-dao.tld
trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-elx.tld
trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-su.tld
Modified: trunk/openutils-tags-spring/pom.xml
===================================================================
--- trunk/openutils-tags-spring/pom.xml 2007-01-04 16:52:28 UTC (rev 147)
+++ trunk/openutils-tags-spring/pom.xml 2007-01-04 17:32:56 UTC (rev 148)
@@ -13,6 +13,64 @@
<description />
<dependencies>
<dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>jstl</groupId>
+ <artifactId>jstl</artifactId>
+ <version>1.1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.7.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>2.0.1</version>
+ <optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>taglibs</groupId>
+ <artifactId>standard</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>logkit</groupId>
+ <artifactId>logkit</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>avalon-framework</groupId>
+ <artifactId>avalon-framework</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.13</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
Added: trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/DaoFunctions.java
===================================================================
--- trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/DaoFunctions.java (rev 0)
+++ trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/DaoFunctions.java 2007-01-04 17:32:56 UTC (rev 148)
@@ -0,0 +1,71 @@
+package it.openutils.web.jstl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+
+import javax.servlet.jsp.PageContext;
+
+import org.apache.log4j.Logger;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+
+/**
+ * EL functions fo simple data access operations.
+ * @author fgiust
+ * @version $Revision$ ($Author$)
+ */
+public class DaoFunctions
+{
+
+ /**
+ * Logger.
+ */
+ private static Logger log = Logger.getLogger(DaoFunctions.class);
+
+ /**
+ * Call findAll on a given DAO and retuns the result. The findAll method is caled using reflection, so the DAO
+ * doesn't need to implement any specific interface.
+ * @param pageContext jsp page context
+ * @param daoName dao name, without the "DAO" postfix, automatically added (e.g. "user" for "userDAO"). The full
+ * name of the dao should be the name of a bean available in spring application context.
+ * @return List returned by DAO.findAll().
+ */
+ public static List findAll(PageContext pageContext, String daoName) throws Throwable
+ {
+
+ String fullDaoName = daoName + "DAO";
+ if (log.isDebugEnabled())
+ {
+ log.debug("calling dao:findall for [" + daoName + "]");
+ }
+
+ WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(pageContext
+ .getServletContext());
+
+ Object dao = context.getBean(fullDaoName);
+
+ Method m = dao.getClass().getMethod("findAll", null);
+
+ List results = null;
+
+ try
+ {
+ results = (List) m.invoke(dao, null);
+ }
+ catch (InvocationTargetException ex)
+ {
+ throw ex.getTargetException();
+ }
+
+ if (log.isDebugEnabled())
+ {
+ log.debug("Returning " + results);
+ }
+
+ return results;
+
+ }
+
+}
Property changes on: trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/DaoFunctions.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/ElxFunctions.java
===================================================================
--- trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/ElxFunctions.java (rev 0)
+++ trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/ElxFunctions.java 2007-01-04 17:32:56 UTC (rev 148)
@@ -0,0 +1,299 @@
+package it.openutils.web.jstl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.jstl.core.Config;
+import javax.servlet.jsp.jstl.fmt.LocalizationContext;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author fgiust
+ * @version $Revision$ ($Author$)
+ */
+public class ElxFunctions
+{
+
+ /**
+ * Logger.
+ */
+ private static Logger log = LoggerFactory.getLogger(ElxFunctions.class);
+
+ /**
+ * check is a collection is empty.
+ * @param collection
+ * @return boolean
+ */
+ public static boolean isCollectionEmpty(Object collection)
+ {
+
+ if (collection == null)
+ {
+ return true;
+ }
+
+ try
+ {
+ if (collection instanceof Collection)
+ {
+ return ((Collection) collection).isEmpty();
+ }
+ else if (collection instanceof Map)
+ {
+ return ((Map) collection).isEmpty();
+ }
+ }
+ catch (Throwable e)
+ {
+ // catch hibernate lazy initialization errors
+ log.error("An error occurred while evaluating the elx:isempty function: " + e.getMessage(), e);
+ return true;
+ }
+
+ // the "new Throwable()" is used to add a stacktrace
+ log
+ .error(
+ "elx:isempty can be used only with an object of type java.util.Collection or java.util.Map, you are trying to use it with an instance of "
+ + collection.getClass(),
+ new Throwable());
+
+ return true;
+
+ }
+
+ /**
+ * return the size of the collection.
+ * @param collection
+ * @return int
+ */
+ public static int getCollectionSize(Object collection)
+ {
+
+ if (collection == null)
+ {
+ return 0;
+ }
+
+ try
+ {
+ if (collection instanceof Collection)
+ {
+ return ((Collection) collection).size();
+ }
+ else if (collection instanceof Map)
+ {
+ return ((Map) collection).size();
+ }
+ }
+ catch (Throwable e)
+ {
+ // catch hibernate lazy initialization errors
+ log.error("An error occurred while evaluating the elx:size function: " + e.getMessage(), e);
+ return 0;
+ }
+
+ // the "new Throwable()" is used to add a stacktrace
+ log
+ .error(
+ "elx:size can be used only with an object of type java.util.Collection or java.util.Map, you are trying to use it with an instance of "
+ + collection.getClass(),
+ new Throwable());
+ return 0;
+ }
+
+ public static String formatMessage(PageContext pageContext, String key)
+ {
+ String title = null;
+ ResourceBundle bundle = null;
+
+ // standard jstl localizationContest
+ // check for the localizationContext in applicationScope, set in web.xml
+ LocalizationContext localization = getLocalizationContext(pageContext);
+
+ if (localization != null)
+ {
+ bundle = localization.getResourceBundle();
+ }
+
+ if (bundle != null)
+ {
+ try
+ {
+ title = bundle.getString(key);
+ }
+ catch (MissingResourceException e)
+ {
+ // ignore
+ }
+ }
+
+ return title;
+ }
+
+ /**
+ * Check if a given array of Strings contains <em>the String representation</em> of an object.
+ * @param array String array
+ * @param value object to search for
+ * @return <code>true</code> if a array contains a value equals to the String representation of object
+ */
+ public static boolean containsString(String[] array, Object value)
+ {
+ if (log.isDebugEnabled())
+ {
+ // log.debug("containsString [" + value + "] in [" + ArrayUtils.toString(array) + "]");
+ }
+
+ if (array == null || value == null)
+ {
+ return false;
+ }
+
+ String valueString = value.toString();
+
+ for (String element : array)
+ {
+ if (valueString.equals(element))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Compares the String representation of two objects.
+ * @param one first object to be compared
+ * @param two second object to be compared
+ * @return <code>true</code> only if both objects are not null and their String representaion is equals()
+ */
+ public static boolean equalsString(Object one, Object two)
+ {
+ if (one == null || two == null)
+ {
+ return false;
+ }
+
+ if (log.isDebugEnabled())
+ {
+ log.debug("Comparing [" + one + "] and [" + two + "]");
+ }
+
+ return one.toString().equals(two.toString());
+ }
+
+ /**
+ * Returns a bean property (optionally nested= handling nulls both in bean and property name)
+ * @param bean bean
+ * @param property property name, optionally nested
+ * @return property value, null if bean is null, bean if property is null
+ * @throws IllegalAccessException
+ * @throws InvocationTargetException
+ * @throws NoSuchMethodException
+ */
+ public static Object getProperty(Object bean, String property)
+ {
+ if (bean == null)
+ {
+ return null;
+ }
+ if (StringUtils.isEmpty(property))
+ {
+ return bean;
+ }
+
+ try
+ {
+ if (property.startsWith("(string)"))
+ {
+ return StringUtils.substringAfter(property, "(string)");
+ }
+ else
+ {
+ return PropertyUtils.getProperty(bean, property);
+ }
+
+ }
+ catch (Exception e)
+ {
+ log.error("Error while evaluating property \"" + property + "\" in bean " + bean.getClass().getName(), e);
+ }
+
+ return StringUtils.EMPTY;
+ }
+
+ /**
+ * Check if ricambio is into the inverval of tavola verifying dates
+ * @param tavolaDa start date for tavola
+ * @param tavolaA end date for tavola
+ * @param ricambioDa start date for ricambio
+ * @param ricambioA end date for ricambio
+ * @return
+ */
+ public static boolean dateRange(java.util.Date tavolaDa, java.util.Date tavolaA, java.util.Date ricambioDa,
+ java.util.Date ricambioA)
+ {
+ long tavDa = (tavolaDa == null) ? 0 : tavolaDa.getTime();
+ long tavA = (tavolaA == null) ? Long.MAX_VALUE : tavolaA.getTime();
+
+ long ricDa = (ricambioDa == null) ? 0 : ricambioDa.getTime();
+ long ricA = (ricambioA == null) ? Long.MAX_VALUE : ricambioA.getTime();
+
+ return (ricDa <= tavA && ricA >= tavDa);
+ }
+
+ public static String space()
+ {
+ return " ";
+ }
+
+ /**
+ * Gets the default I18N localization context.
+ * @param pc Page in which to look up the default I18N localization context
+ */
+ private static LocalizationContext getLocalizationContext(PageContext pc)
+ {
+ LocalizationContext locCtxt = null;
+
+ Object obj = Config.find(pc, Config.FMT_LOCALIZATION_CONTEXT);
+ if (obj == null)
+ {
+ return null;
+ }
+
+ if (obj instanceof LocalizationContext)
+ {
+ locCtxt = (LocalizationContext) obj;
+ }
+ else
+ {
+ // localization context is a bundle basename
+ locCtxt = getLocalizationContext(pc, (String) obj);
+ }
+
+ return locCtxt;
+ }
+
+ private static LocalizationContext getLocalizationContext(PageContext pc, String basename)
+ {
+ LocalizationContext locCtxt = null;
+ ResourceBundle bundle = null;
+
+ if ((basename == null) || basename.equals(""))
+ {
+ return new LocalizationContext();
+ }
+
+ return locCtxt;
+ }
+
+}
Property changes on: trunk/openutils-tags-spring/src/main/java/it/openutils/web/jstl/ElxFunctions.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-dao.tld
===================================================================
--- trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-dao.tld (rev 0)
+++ trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-dao.tld 2007-01-04 17:32:56 UTC (rev 148)
@@ -0,0 +1,13 @@
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
+ <description>DAO Tag Library</description>
+ <display-name>DAO extension</display-name>
+ <tlib-version>1.1</tlib-version>
+ <short-name>dao</short-name>
+ <uri>dao</uri>
+ <function>
+ <name>findAll</name>
+ <function-class>it.openutils.web.jstl.DaoFunctions</function-class>
+ <function-signature>java.util.List findAll(javax.servlet.jsp.PageContext, java.lang.String)</function-signature>
+ </function>
+</taglib>
\ No newline at end of file
Property changes on: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-dao.tld
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-elx.tld
===================================================================
--- trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-elx.tld (rev 0)
+++ trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-elx.tld 2007-01-04 17:32:56 UTC (rev 148)
@@ -0,0 +1,87 @@
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ version="2.0">
+ <description>EL extension Tag Library</description>
+ <display-name>EL extension</display-name>
+ <tlib-version>1.1</tlib-version>
+ <short-name>elx</short-name>
+ <uri>elx</uri>
+ <tag>
+ <description>Converts text in the body of the tag to options tags.</description>
+ <name>stringToOptions</name>
+ <tag-class>it.openutils.web.jstl.StringToOptionsTag</tag-class>
+ <body-content>JSP</body-content>
+ <attribute>
+ <description>Separator, defaults to |.</description>
+ <name>separator</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ </tag>
+ <tag>
+ <name>summary</name>
+ <tag-class>it.openutils.web.tag.SummaryTag</tag-class>
+ <body-content>JSP</body-content>
+ <attribute>
+ <name>lines</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>charsPerLine</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>ellipses</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+ <function>
+ <name>lang</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>Object chooseLanguage(java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>isempty</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>boolean isCollectionEmpty(java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>size</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>int getCollectionSize(java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>fmt</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>
+ java.lang.String formatMessage(javax.servlet.jsp.PageContext, java.lang.String)
+ </function-signature>
+ </function>
+ <function>
+ <name>containsString</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>boolean containsString(java.lang.String[], java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>equalsString</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>boolean equalsString(java.lang.Object, java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>getProperty</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>java.lang.Object getProperty(java.lang.Object, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>space</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>java.lang.String space()</function-signature>
+ </function>
+ <function>
+ <name>dateRange</name>
+ <function-class>it.openutils.web.jstl.ElxFunctions</function-class>
+ <function-signature>
+ boolean dateRange(java.util.Date, java.util.Date, java.util.Date, java.util.Date)
+ </function-signature>
+ </function>
+</taglib>
\ No newline at end of file
Property changes on: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-elx.tld
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-su.tld
===================================================================
--- trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-su.tld (rev 0)
+++ trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-su.tld 2007-01-04 17:32:56 UTC (rev 148)
@@ -0,0 +1,53 @@
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
+ <description>jakarta commons-lang EL functions</description>
+ <display-name>Commons lang EL library</display-name>
+ <tlib-version>1.2</tlib-version>
+ <short-name>cl</short-name>
+ <uri>stringutils</uri>
+ <function>
+ <name>substringAfter</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>java.lang.String substringAfter(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>substringBefore</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>java.lang.String substringBefore(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>substringAfterLast</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>java.lang.String substringAfterLast(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>substringBeforeLast</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>java.lang.String substringBeforeLast(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>indexOf</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>int indexOf(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>split</name>
+ <function-class>org.apache.commons.lang.StringUtils</function-class>
+ <function-signature>java.lang.String[] split(java.lang.String, java.lang.String)</function-signature>
+ </function>
+ <function>
+ <name>contains</name>
+ <function-class>org.apache.commons.lang.ArrayUtils</function-class>
+ <function-signature>boolean contains(java.lang.Object[], java.lang.Object)</function-signature>
+ </function>
+ <function>
+ <name>getFullStackTrace</name>
+ <function-class>org.apache.commons.lang.exception.ExceptionUtils</function-class>
+ <function-signature>java.lang.String getFullStackTrace(java.lang.Throwable)</function-signature>
+ </function>
+ <function>
+ <name>escapeXml</name>
+ <function-class>org.apache.commons.lang.StringEscapeUtils</function-class>
+ <function-signature>java.lang.String escapeXml(java.lang.String)</function-signature>
+ </function>
+</taglib>
\ No newline at end of file
Property changes on: trunk/openutils-tags-spring/src/main/resources/META-INF/openutils-tags-su.tld
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|