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
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