Revision 44761 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/ToTimestampFunction.java

View differences:

ToTimestampFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.date;
2 2

  
3
import java.text.ParseException;
4 3
import java.text.SimpleDateFormat;
5 4
import java.util.Date;
5
import java.util.Locale;
6 6
import org.apache.commons.lang3.Range;
7 7
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_TO_TIMESTAMP;
8 8
import org.gvsig.expressionevaluator.Interpreter;
9 9
import org.gvsig.expressionevaluator.spi.AbstractFunction;
10
import org.gvsig.tools.ToolsLocator;
11
import org.gvsig.tools.dataTypes.DataTypes;
10 12

  
11 13
public class ToTimestampFunction extends AbstractFunction {
12 14

  
13 15
    public ToTimestampFunction() {
14
        super("Date", FUNCTION_TO_TIMESTAMP,Range.is(2),
16
        super("Date", FUNCTION_TO_TIMESTAMP,Range.between(2,3),
15 17
            "Returns a time stamp from the arguments",
16 18
            FUNCTION_TO_TIMESTAMP+"({{timestamp}}, format)",
17 19
            new String[]{
18 20
                "timestamp - a string with a date/time",
19 21
                "format - Format to use to parse the timestamp"
20 22
            },
21
            "Timestamp"
23
            "Timestamp",
24
            true
22 25
        );
23 26
    }
24 27

  
......
30 33
    @Override
31 34
    public Object call(Interpreter interpreter, Object[] args) {
32 35
        Object date_obj = getObject(args, 0);
33
        if( date_obj instanceof Date ) {
34
            return date_obj;
35
        }
36 36
        String date = getStr(args, 0);
37
        String format = null;
38
        if( args.length==2 ) {
39
            format = getStr(args, 1);
40
        }
41
        SimpleDateFormat df = new SimpleDateFormat();
42
        if( format != null ) {
43
            df.applyPattern(format);
44
        }
37
        String format = getStr(args, 1);
45 38
        try {
39
            if( date_obj instanceof Date ) {
40
                java.sql.Timestamp x = new java.sql.Timestamp(((Date) date_obj).getTime());
41
                return x;
42
            }
43
            Locale locale = Locale.getDefault();
44
            if( args.length==3 ) {
45
              locale = (Locale) ToolsLocator.getDataTypesManager().get(DataTypes.LOCALE).coerce(getStr(args,2));
46
            }
47
            SimpleDateFormat df = new SimpleDateFormat(format, locale);
46 48
            Date x = df.parse(date);
47
            return x;
48
        } catch (ParseException ex) {
49
            java.sql.Timestamp x2 = new java.sql.Timestamp(x.getTime());
50
            return x2;
51
        } catch (Exception ex) {
49 52
            throw new RuntimeException("Can't parse date value '"+date+"' with format '"+format==null?"":format+"'", ex);
50 53
        }
51 54
        

Also available in: Unified diff