[Schmitzm-commits] r1081 - in branches/2.2.x/src/schmitzm: lang lang/tree swing/resource/locales
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Oct 7 23:31:09 CEST 2010
Author: mojays
Date: 2010-10-07 23:31:08 +0200 (Thu, 07 Oct 2010)
New Revision: 1081
Modified:
branches/2.2.x/src/schmitzm/lang/LangUtil.java
branches/2.2.x/src/schmitzm/lang/tree/OperationTree.java
branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java
branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties
branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
Log:
Erweiterung OperationTree und OperationTreeParser
Modified: branches/2.2.x/src/schmitzm/lang/LangUtil.java
===================================================================
--- branches/2.2.x/src/schmitzm/lang/LangUtil.java 2010-10-07 21:30:45 UTC (rev 1080)
+++ branches/2.2.x/src/schmitzm/lang/LangUtil.java 2010-10-07 21:31:08 UTC (rev 1081)
@@ -56,7 +56,17 @@
* @version 1.0
*/
public class LangUtil {
-
+ /** Eine Sekunde in Millisekunden. */
+ public static final long SEC_MILLIS = 1000;
+ /** Eine Minute in Millisekunden. */
+ public static final long MIN_MILLIS = 60 * SEC_MILLIS;
+ /** Eine Stunde in Millisekunden. */
+ public static final long HOUR_MILLIS = 60 * MIN_MILLIS;
+ /** Ein Tag in Millisekunden. */
+ public static final long DAY_MILLIS = 24 * HOUR_MILLIS;
+ /** Eine Woche in Millisekunden. */
+ public static final long WEEK_MILLIS = 7 * DAY_MILLIS;
+
/**
* {@link ResourceProvider}, der die Lokalisation fuer Komponenten des
* Package {@code schmitzm.lang} zur Verfuegung stellt. Diese sind in
Modified: branches/2.2.x/src/schmitzm/lang/tree/OperationTree.java
===================================================================
--- branches/2.2.x/src/schmitzm/lang/tree/OperationTree.java 2010-10-07 21:30:45 UTC (rev 1080)
+++ branches/2.2.x/src/schmitzm/lang/tree/OperationTree.java 2010-10-07 21:31:08 UTC (rev 1081)
@@ -30,6 +30,7 @@
package schmitzm.lang.tree;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.regex.Pattern;
@@ -64,8 +65,10 @@
* <li>Test auf regulaeren Ausdruck: {@code "regex(expression,regular expr)"}</li>
* <li>n-tes Ergebnis eines {@linkplain String#split(String) String-Splits} ueber regulaeren Ausdruck: {@code "split(expression,regular expr,n)"}</li>
* <li>String-Ersetzung: {@code "replAll(expression,pattern expr,repl expr)"}</li>
- * <li>Umwandung eines Datums-String in Milli-Sekunden: {@code millis(string expr, format string expr)}
- * <li>Umwandung von Milli-Sekunden in einen Datums-String: {@code dateStr(num expr, format string expr)}
+ * <li>Umwandung eines Datums-String in Milli-Sekunden: {@code str2millis(string expr, format string expr)}
+ * <li>Umwandung eines Datums in Milli-Sekunden: {@code date2millis(year, month, day)}
+ * <li>Umwandung von Milli-Sekunden in einen Datums-String: {@code millis2Str(millis, format string expr)}
+ * <li>Umwandung eines Datums in einen Datums-String: {@code date2Str(year, month, day, format string expr)}
* </ul></li>
* <li>{@link UnaryOperatorNode}: Innere Knoten, die fuer einen 1-stelligen
* Operator auf dem <i>linken</i> Sohn stehen:
@@ -96,6 +99,8 @@
* <li>Zufallszahl zwischen 0 und 1: {@code "rand"} oder {@code "random"}</li>
* <li>"Not a number" (NaN): {@code "NaN"}</li>
* <li>Aktuelle Zeit in ms ({@link System#currentTimeMillis()}): {@code "CURR_MILLIS"}</li>
+ * <li>Ein Tag in ms ({@link LangUtil#DAY_MILLIS}): {@code "DAY_MILLIS"}</li>
+ * <li>Eine Woche in ms ({@link LangUtil#WEEK_MILLIS}): {@code "WEEK_MILLIS"}</li>
* </ul></li>
* <li>{@link ITENode}: ITE-Operator:<br>
* Der 3-stellige ITE-Operator {@code ITE(.,.,.)} drueckt die Bedingung
@@ -275,6 +280,81 @@
return result[idx];
}
+ if ( operator.equals("STR2MILLIS") ) {
+ // 2 Parameters (or more): STR2MILLIS(string expr, format string expr) -> long
+ if ( operand.length < 2 )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.LessParams1",2,operator) );
+ if ( !(operand[0] instanceof String) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",1,operator,"String") );
+ if ( !(operand[1] instanceof String) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",2,operator,"String") );
+ SimpleDateFormat formatter = new SimpleDateFormat(operand[1].toString());
+ try {
+ Date date = formatter.parse(operand[0].toString());
+ return date.getTime();
+ } catch (Exception err) {
+ throw new UnsupportedOperationException(err);
+ }
+ }
+
+ if ( operator.equals("DATE2MILLIS") ) {
+ // 3 Parameters (or more): DATE2MILLIS(year, month, day) -> long
+ if ( operand.length < 3 )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.LessParams1",3,operator) );
+ if ( !(operand[0] instanceof Number) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",1,operator,"Number") );
+ if ( !(operand[1] instanceof Number) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",2,operator,"Number") );
+ if ( !(operand[2] instanceof Number) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",3,operator,"Number") );
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(
+ ((Number)operand[0]).intValue(),
+ ((Number)operand[1]).intValue(),
+ ((Number)operand[2]).intValue()
+ );
+ return calendar.getTimeInMillis();
+ } catch (Exception err) {
+ throw new UnsupportedOperationException(err);
+ }
+ }
+
+ if ( operator.equals("MILLIS2STR") ) {
+ // 2 Parameters: MILLIS2STR(num expr, format string expr) -> string
+ if ( operand.length < 2 )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.LessParams1",2,operator) );
+ if ( !(operand[0] instanceof Number) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",1,operator,"Number") );
+ if ( !(operand[1] instanceof String) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",2,operator,"String") );
+ SimpleDateFormat formatter = new SimpleDateFormat(operand[1].toString());
+ long millis = ((Number)operand[0]).longValue();
+ Date date = new Date(millis);
+ return formatter.format(date);
+ }
+
+ if ( operator.equals("DATE2STR") ) {
+ // 4 Parameters (or more): DATE2STR(year, month, day, format string expr) -> string
+ if ( operand.length < 4 )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.LessParams1",4,operator) );
+ for (int i=0; i<3; i++)
+ if ( !(operand[i] instanceof Number) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",i+1,operator,"Number") );
+ if ( !(operand[3] instanceof String) )
+ throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.IllegalParam",4,operator,"String") );
+ SimpleDateFormat formatter = new SimpleDateFormat(operand[3].toString());
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(
+ ((Number)operand[0]).intValue(),
+ ((Number)operand[1]).intValue(),
+ ((Number)operand[2]).intValue()
+ );
+ Date date = calendar.getTime();
+ return formatter.format(date);
+ }
+
+
if ( operator.equals("REPLALL") ) {
if ( operand.length != 3 )
throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.LessParams2",3,operator) );
@@ -414,27 +494,8 @@
// boolean ret = Pattern.matches(operand2.toString(), operand1.toString());
return Pattern.matches(operand2.toString(), operand1.toString()) ? 1 : 0;
}
- if ( operator.equals("MILLIS") ) {
- SimpleDateFormat formatter = new SimpleDateFormat(operand2.toString());
- try {
- Date date = formatter.parse(operand1.toString());
- return date.getTime();
- } catch (Exception err) {
- throw new UnsupportedOperationException(err);
- }
- }
}
- // Long/String-Operationen
- if ( operand1 instanceof Number && operand2 instanceof String ) {
- if ( operator.equals("DATESTR") ) {
- SimpleDateFormat formatter = new SimpleDateFormat(operand2.toString());
- long millis = ((Number)operand1).longValue();
- Date date = new Date(millis);
- return formatter.format(date);
- }
- }
-
String op1Class = (operand1 != null) ? operand1.getClass().getSimpleName() : null;
String op2Class = (operand2 != null) ? operand2.getClass().getSimpleName() : null;
throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.UnknownOperator",operator+" ("+op1Class+", "+op2Class+")") );
@@ -544,7 +605,11 @@
* Wertet einen 0-stelligen Operator (Alias oder Variable) aus.
* Als Operator unterstuetzt diese Methode
* <ul>
- * <li>Zufallszahl zwischen 0 und 1: {@code "rand"} oder {@code "random"}</li>
+ * <li>Zufallszahl zwischen 0 und 1: {@code "RAND"} oder {@code "RANDOM"}</li>
+ * <li>Not-a-Number: {@code "NAN"}</li>
+ * <li>Aktuelle Zeit in ms ({@link System#currentTimeMillis()}): {@code "CURR_MILLIS"}</li>
+ * <li>Ein Tag in ms ({@link LangUtil#DAY_MILLIS}): {@code "DAY_MILLIS"}</li>
+ * <li>Eine Woche in ms ({@link LangUtil#WEEK_MILLIS}): {@code "WEEK_MILLIS"}</li>
* </ul>
* @param operator 0-stelliger Operator
*/
@@ -557,6 +622,10 @@
return Double.NaN;
if ( operator.equals("CURR_MILLIS") )
return System.currentTimeMillis();
+ if ( operator.equals("DAY_MILLIS") )
+ return LangUtil.DAY_MILLIS;
+ if ( operator.equals("WEEK_MILLIS") )
+ return LangUtil.WEEK_MILLIS;
throw new UnsupportedOperationException( LangUtil.RESOURCE.getString("OperationTree.err.UnknownAliasOperator",operator) );
}
Modified: branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java
===================================================================
--- branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java 2010-10-07 21:30:45 UTC (rev 1080)
+++ branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java 2010-10-07 21:31:08 UTC (rev 1081)
@@ -61,6 +61,8 @@
* <li>boolesches WAHR (1): {@code "TRUE"}</li>
* <li>boolesches FALSCH (0): {@code "FALSE"}</li>
* <li>Aktuelle Zeit in ms ({@link System#currentTimeMillis()}): {@code "CURR_MILLIS"}</li>
+ * <li>Ein Tag in ms ({@link LangUtil#DAY_MILLIS}): {@code "DAY_MILLIS"}</li>
+ * <li>Eine Woche in ms ({@link LangUtil#WEEK_MILLIS}): {@code "WEEK_MILLIS"}</li>
* </ul></li>
* <li>konstante String Werte: {@link ConstantNode}</li>
* <ul>
@@ -91,13 +93,15 @@
* <li>String-Konkatenation: {@code "+"}</li>
* <li>Test auf regulaeren Ausdruck: {@code "regex(expression,regular expr)"}</li>
* <li>n-tes Ergebnis eines {@linkplain String#split(String) String-Splits} ueber regulaeren Ausdruck: {@code "split(expression,regular expr,n)"}</li>
- * <li>Umwandung eines Datums-String in Milli-Sekunden: {@code millis(string expr, format string expr)}
- * <li>Umwandung von Milli-Sekunden in einen Datums-String: {@code dateStr(num expr, format string expr)}
* </ul></li>
* <li>den mehr-stelligen Zeichenketten-Operatoren: {@link MultiParamOperatorNode}
* <ul>
* <li>Teil-String: {@code "substr(expression,startPos_inkl,endPos_exkl)"}</li>
* <li>String-Ersetzung: {@code "replAll(expression,pattern,replacement)"}</li>
+ * <li>Umwandung eines Datums-String in Milli-Sekunden: {@code str2millis(string expr, format string expr)}
+ * <li>Umwandung eines Datums in Milli-Sekunden: {@code date2millis(year, month, day)}
+ * <li>Umwandung von Milli-Sekunden in einen Datums-String: {@code millis2Str(millis, format string expr)}
+ * <li>Umwandung eines Datums in einen Datums-String: {@code date2Str(year, month, day, format string expr)}
* </ul></li>
* <li>die 1-stelligen Operatoren: {@link UnaryOperatorNode}
* <ul>
@@ -955,7 +959,8 @@
}
// Zufallszahl oder NaN-Konstante
if ( token.equals("rand") || token.equals("random") ||
- token.equals("nan") || token.equals("curr_millis")) {
+ token.equals("nan") || token.equals("curr_millis") ||
+ token.equals("day_millis") || token.equals("week_millis") ) {
return new OperationTree.ConstantAliasNode(token);
}
// ITE(a,b,c) = IF a THEN b ELSE c
@@ -982,27 +987,42 @@
return new OperationTree.MultiParamOperatorNode(token,null,splitParam);
}
- // MILLIS(string,formatexpr) = Umwandung von Datums-String (in angebenen Format) in Millisekunden
- if ( token.equals("millis") ) {
+ // STR2MILLIS(string,formatexpr) = Umwandung von Datums-String (in angebenen Format) in Millisekunden
+ if ( token.equals("str2millis") ) {
// Parameter fuer MILLIS parsen
- BinaryTreeNode[] millisParam = parseFunctionParameters("MILLIS",2);
+ BinaryTreeNode[] millisParam = parseFunctionParameters("STR2MILLIS",2);
// Baum fuer MILLIS
- return new OperationTree.OperatorNode(token,millisParam[0],millisParam[1]);
+ return new OperationTree.MultiParamOperatorNode(token,null,millisParam);
}
+ // DATE2MILLIS(year,month,day) = Umwandung von Datum in Millisekunden
+ if ( token.equals("date2millis") ) {
+ // Parameter fuer MILLIS parsen
+ BinaryTreeNode[] millisParam = parseFunctionParameters("DATE2MILLIS",3);
+ // Baum fuer MILLIS
+ return new OperationTree.MultiParamOperatorNode(token,null,millisParam);
+ }
- // DATE(num,formatexpr) = Umwandung von Millisekunden in Datums-String (in angebenen Format)
- if ( token.equals("datestr") ) {
- // Parameter fuer MILLIS parsen
- BinaryTreeNode[] millisParam = parseFunctionParameters("DATESTR",2);
+ // MILLIS2STR(num,formatexpr) = Umwandung von Millisekunden in Datums-String (in angebenen Format)
+ if ( token.equals("millis2str") ) {
+ // Parameter fuer DATESTR parsen
+ BinaryTreeNode[] datestrParam = parseFunctionParameters("MILLIS2STR",2);
// Baum fuer DATESTR
- return new OperationTree.OperatorNode(token,millisParam[0],millisParam[1]);
+ return new OperationTree.MultiParamOperatorNode(token,null,datestrParam);
}
+ // DATE2STR(year,month,day,formatexpr) = Umwandung von Datum in Datums-String (in angebenen Format)
+ if ( token.equals("date2str") ) {
+ // Parameter fuer DATESTR parsen
+ BinaryTreeNode[] datestrParam = parseFunctionParameters("DATE2STR",4);
+ // Baum fuer DATESTR
+ return new OperationTree.MultiParamOperatorNode(token,null,datestrParam);
+ }
+
// SUBSTR(string,startPos_inkl,endPos_exkl) = Teil-String
if ( token.equals("substr") ) {
// Parameter fuer SUBSTR parsen
BinaryTreeNode[] substrParam = parseFunctionParameters("SUBSTR",3);
- // Baum fuer SPLIT
+ // Baum fuer SUBSTR
return new OperationTree.MultiParamOperatorNode(token,null,substrParam);
}
@@ -1216,11 +1236,18 @@
avOperators.add("len");
avOperators.add("toupper");
avOperators.add("tolower");
- avOperators.add("ITE");
- avOperators.add("REGEX");
- avOperators.add("SUBSTR");
+ avOperators.add("ite");
+ avOperators.add("regex");
+ avOperators.add("substr");
+ avOperators.add("split");
+ avOperators.add("str2millis");
+ avOperators.add("date2millis");
+ avOperators.add("millis2str");
+ avOperators.add("date2str");
+ avOperators.add("day_millis");
+ avOperators.add("week_millis");
// Die "einfachen Operatoren" and Ende setzen, da diese eigentlich
- // menuell eingegeben werden und nicht so oft gebraucht werden
+ // manuell eingegeben werden und nicht so oft gebraucht werden
avOperators.add("+");
avOperators.add("-");
avOperators.add("*");
@@ -1317,6 +1344,7 @@
op.equalsIgnoreCase("ln") || op.equalsIgnoreCase("log") ||
op.equalsIgnoreCase("val") || op.equalsIgnoreCase("str") ||
op.equalsIgnoreCase("toupper") || op.equalsIgnoreCase("tolower") ||
+ op.equalsIgnoreCase("STR2MILLIS") || op.equalsIgnoreCase("MILLIS2STR") ||
op.equalsIgnoreCase("!") )
return 1;
@@ -1325,9 +1353,14 @@
return 2;
// Funktionen mit drei geklammerten Parameter
- if (op.equalsIgnoreCase("ITE") || op.equalsIgnoreCase("SUBSTR") )
+ if (op.equalsIgnoreCase("ITE") || op.equalsIgnoreCase("SUBSTR") ||
+ op.equalsIgnoreCase("SPLIT") || op.equalsIgnoreCase("DATE2MILLIS") )
return 3;
+ // Funktionen mit vier geklammerten Parameter
+ if (op.equalsIgnoreCase("DATE2STR"))
+ return 4;
+
// sonst: Konstante/Alias angenommen
return 0;
}
Modified: branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties
===================================================================
--- branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties 2010-10-07 21:30:45 UTC (rev 1080)
+++ branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties 2010-10-07 21:31:08 UTC (rev 1081)
@@ -117,9 +117,16 @@
OperationTreePanel.OpDesc.len=len($TEXT)
OperationTreePanel.OpDesc.toupper=toupper($TEXT)
OperationTreePanel.OpDesc.tolower=tolower($TEXT)
-OperationTreePanel.OpDesc.ITE=IF .. THEN .. ELSE
-OperationTreePanel.OpDesc.REGEX=REGEX( $TEXT , REGEX)
-OperationTreePanel.OpDesc.SUBSTR=SUBSTRING( $TEXT , $NUMBER , $NUMBER)
+OperationTreePanel.OpDesc.ite=IF .. THEN .. ELSE
+OperationTreePanel.OpDesc.regex=REGEX( $TEXT , $REGEX)
+OperationTreePanel.OpDesc.substr=SUBSTRING( $TEXT , $NUMBER , $NUMBER)
+OperationTreePanel.OpDesc.split=SPLIT( $TEXT , $REGEX , $NUMBER)
+OperationTreePanel.OpDesc.str2millis=str2millis( $TEXT , $TEXT)
+OperationTreePanel.OpDesc.date2millis=date2millis( $YEAR, $MONTH, $DAY)
+OperationTreePanel.OpDesc.millis2str=millis2str( $NUMBER , $FORMAT)
+OperationTreePanel.OpDesc.date2str=date2millis( $YEAR, $MONTH, $DAY, $FORMAT)
+OperationTreePanel.OpDesc.day_millis=DAY_MILLIS
+OperationTreePanel.OpDesc.week_millis=WEEK_MILLIS
OperationTreePanel.OpDesc.plus=+
OperationTreePanel.OpDesc.minus=-
OperationTreePanel.OpDesc.multiply=*
@@ -163,6 +170,13 @@
OperationTreePanel.OpTooltip.ite=Specifies a logical test to be performed.
OperationTreePanel.OpTooltip.regex=Performs regular-expressions operation on a text.
OperationTreePanel.OpTooltip.substr=Returns only a part of a text.
+OperationTreePanel.OpTooltip.split=Returns the n-th result of a text split over a regular expression.
+OperationTreePanel.OpTooltip.str2millis=Converts a date from string to milliseconds
+OperationTreePanel.OpTooltip.date2millis=Converts a date to milliseconds
+OperationTreePanel.OpTooltip.millis2str=Converts milliseconds to a date string
+OperationTreePanel.OpTooltip.date2str=Converts a date to a date string
+OperationTreePanel.OpTooltip.day_millis=The value of a day in milliseconds
+OperationTreePanel.OpTooltip.week_millis=The value of a week in milliseconds
OperationTreePanel.OpTooltip.plus=Addition
OperationTreePanel.OpTooltip.minus=-Subtraction
OperationTreePanel.OpTooltip.multiply=Multiplication
Modified: branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
===================================================================
--- branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2010-10-07 21:30:45 UTC (rev 1080)
+++ branches/2.2.x/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2010-10-07 21:31:08 UTC (rev 1081)
@@ -62,7 +62,7 @@
Apply=\u00DCbernehmen
Ready=Fertig
Open=\u00D6ffnen
-OpenFolder=Ordner \u00ef\u00bf\u0153ffnen
+OpenFolder=Ordner \u00EF\u00BF\u0153ffnen
Close=Schliessen
Save=Speichern
WaitMess=Bitte warten...
@@ -145,9 +145,16 @@
OperationTreePanel.OpTooltip.len=Berechnet die L\u00E4nge eines Texts.
OperationTreePanel.OpTooltip.toupper=Konvertiert Text in Gro\u00DFbuchstaben.
OperationTreePanel.OpTooltip.tolower=Konvertiert Text in Kleinbuchstaben.
-OperationTreePanel.OpTooltip.ITE=Spezifiziert einen logischen Test.
-OperationTreePanel.OpTooltip.REGEX=Wertet einen regul\u00E4ren Ausdruck auf einem Text aus.
-OperationTreePanel.OpTooltip.SUBSTR=Liefert einen Teil-String.
+OperationTreePanel.OpTooltip.ite=Spezifiziert einen logischen Test.
+OperationTreePanel.OpTooltip.regex=Wertet einen regul\u00E4ren Ausdruck auf einem Text aus.
+OperationTreePanel.OpTooltip.substr=Liefert einen Teil-String.
+OperationTreePanel.OpTooltip.split=Liefert das n-te Ergebnis eines Text-Split über einem regul\u00E4ren Ausdruck
+OperationTreePanel.OpTooltip.str2millis=Konvertiert einen Datum-Text in Millisekunden
+OperationTreePanel.OpTooltip.date2millis=Konvertiert ein Datum in Millisekunden
+OperationTreePanel.OpTooltip.millis2str=Konvertiert Millisekunden in einen Datum-Text
+OperationTreePanel.OpTooltip.date2str=Konvertiert ein Datum in einen Datum-Text
+OperationTreePanel.OpTooltip.day_millis=Ein Tag in Millisekunden
+OperationTreePanel.OpTooltip.week_millis=Eine Woche in Millisekunden
OperationTreePanel.OpTooltip.plus=Addition
OperationTreePanel.OpTooltip.minus=Subtraktion
OperationTreePanel.OpTooltip.multiply=Multiplikation
More information about the Schmitzm-commits
mailing list