formatDate function
authorzapata <zapata>
Tue, 24 Jun 2003 02:38:03 +0000 (02:38 +0000)
committerzapata <zapata>
Tue, 24 Jun 2003 02:38:03 +0000 (02:38 +0000)
source/mir/util/GeneratorDateTimeFunctions.java [new file with mode: 0755]
source/mir/util/GeneratorFormatAdapters.java
source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java

diff --git a/source/mir/util/GeneratorDateTimeFunctions.java b/source/mir/util/GeneratorDateTimeFunctions.java
new file mode 100755 (executable)
index 0000000..e535f1a
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+package mir.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import mir.generator.Generator;
+import mir.generator.GeneratorExc;
+import mir.generator.GeneratorFailure;
+
+public class GeneratorDateTimeFunctions {
+  private GeneratorDateTimeFunctions() {
+  }
+
+  public static class FormatDateFunction implements Generator.GeneratorFunction {
+    private String defaultTimezone;
+
+    public FormatDateFunction(String aDefaultTimeZone) {
+      defaultTimezone = aDefaultTimeZone;
+    }
+
+    public Object perform(List aParameters) throws GeneratorExc, GeneratorFailure {
+      try {
+        if (aParameters.size()<2 || aParameters.size()>3)
+          throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: 2 or 3 parameters expected");
+
+        if (!(aParameters.get(0) instanceof Date) ||
+            !(aParameters.get(1) instanceof String) ||
+            ( aParameters.size()>2 &&
+             !(aParameters.get(2) instanceof String)))
+          throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: type mismatch");
+
+
+        Date date = (Date) aParameters.get(0);
+        SimpleDateFormat dateFormat = new SimpleDateFormat( (String) (aParameters.get(1)));
+
+        String timezoneString = "";
+        if (aParameters.size()>2)
+          timezoneString = (String) aParameters.get(2);
+        else
+          timezoneString = defaultTimezone;
+
+        TimeZone timezone = null;
+        try  {
+          timezone = TimeZone.getTimeZone(defaultTimezone);
+        }
+        catch (Throwable t) {
+        }
+
+        if (timezone == null)
+          timezone = TimeZone.getDefault();
+
+        dateFormat.setTimeZone(timezone);
+
+        return dateFormat.format(date);
+      }
+      catch (GeneratorExc e) {
+        throw e;
+      }
+      catch (Throwable t) {
+        throw new GeneratorFailure("encodeURIGeneratorFunction: " + t.getMessage(), t);
+      }
+    };
+  }
+
+
+  public static class DateTimeFunctions  {
+    private String defaultTimezone;
+    private Generator.GeneratorFunction formatDate;
+
+    public DateTimeFunctions(String aDefaultTimezone) {
+      defaultTimezone = aDefaultTimezone;
+    }
+
+    public Generator.GeneratorFunction getFormatDate() {
+      if (formatDate == null) {
+        formatDate = new FormatDateFunction(defaultTimezone);
+      }
+
+      return formatDate;
+    }
+  }
+
+}
index 670ca67..6202ec9 100755 (executable)
@@ -1,3 +1,32 @@
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
 package mir.util;
 
 import java.text.DateFormat;
index b3ca557..2f16e08 100755 (executable)
@@ -39,13 +39,18 @@ import mir.entity.adapter.EntityAdapter;
 import mir.entity.adapter.EntityIteratorAdapter;
 import mir.log.LoggerWrapper;
 import mir.misc.StringUtil;
-import mir.util.*;
+import mir.util.GeneratorDateTimeFunctions;
 import mir.util.GeneratorExpressionFunctions;
+import mir.util.GeneratorFormatAdapters;
+import mir.util.GeneratorHTMLFunctions;
 import mir.util.GeneratorIntegerFunctions;
 import mir.util.GeneratorListFunctions;
+import mir.util.GeneratorRegularExpressionFunctions;
 import mir.util.GeneratorStringFunctions;
 import mircoders.global.MirGlobal;
-import mircoders.localizer.*;
+import mircoders.localizer.MirLocalizerExc;
+import mircoders.localizer.MirLocalizerFailure;
+import mircoders.localizer.MirProducerAssistantLocalizer;
 
 public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer {
   protected LoggerWrapper logger;
@@ -89,6 +94,8 @@ public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantL
       utilityMap.put("constructString", new GeneratorStringFunctions.constructStructuredStringFunction());
       utilityMap.put("escapeJDBCString", new GeneratorStringFunctions.jdbcStringEscapeFunction());
       utilityMap.put("regexpreplace", new GeneratorRegularExpressionFunctions.regularExpressionReplaceFunction());
+      utilityMap.put("datetime", new GeneratorDateTimeFunctions.DateTimeFunctions(
+          MirPropertiesConfiguration.instance().getString("Mir.DefaultTimezone")));
 
       aValueSet.put("config", configMap);
       aValueSet.put("utility", utilityMap);