Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.swing / org.gvsig.expressionevaluator.swing.impl / src / main / java / org / gvsig / expressionevaluator / swing / impl / Utils.java @ 44259

History | View | Annotate | Download (4.81 KB)

1
package org.gvsig.expressionevaluator.swing.impl;
2

    
3
import java.util.Comparator;
4
import java.util.Date;
5
import java.util.Objects;
6
import org.apache.commons.lang.StringEscapeUtils;
7
import org.gvsig.expressionevaluator.ExpressionBuilder;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
9
import org.gvsig.fmap.geom.Geometry;
10
import org.gvsig.fmap.geom.primitive.Envelope;
11
import org.gvsig.timesupport.Time;
12

    
13
/*
14
 * To change this license header, choose License Headers in Project Properties.
15
 * To change this template file, choose Tools | Templates
16
 * and open the template in the editor.
17
 */
18
/**
19
 *
20
 * @author jjdelcerro
21
 */
22
public class Utils {
23

    
24
    public static Comparator naturalComparator() {
25
        return new Comparator() {
26
            @Override
27
            public int compare(Object o1, Object o2) {
28
                if (o1 instanceof Integer && o2 instanceof Number ) {
29
                    return Long.compare((Integer) o1, ((Number)o2).intValue());
30
                    
31
                } else if (o1 instanceof Long && o2 instanceof Number ) {
32
                    return Long.compare((Long) o1, ((Number)o2).longValue());
33
                    
34
                } else if (o1 instanceof Double && o2 instanceof Number ) {
35
                    return Double.compare((Double) o1, ((Number)o2).doubleValue());
36
                    
37
                } else if (o1 instanceof Float && o2 instanceof Number) {
38
                    return Double.compare((Float) o1, ((Number)o2).floatValue());
39
                    
40
                } else if (o1 instanceof Number && o2 instanceof Number) {
41
                    return Double.compare( getDouble((Number) o1), getDouble((Number) o2));
42
                    
43
                } else if (o1 instanceof String && o2 instanceof String) {
44
                    return ((String) o1).compareToIgnoreCase((String)o2);
45
                    
46
                } else {
47
                    try {
48
                        return ((Comparable) o1).compareTo((Comparable)o2);
49
                    } catch(Exception ex) {
50
                        return Objects.toString(o1, "").compareTo(Objects.toString(o2, ""));
51
                    }
52
                }
53
            }
54
        };
55
    }
56
    
57
    private static double getDouble(Number n) {
58
        if( n==null ) {
59
            return 0;
60
        }
61
        return n.doubleValue();
62
    }
63

    
64
    public static String repr(Object value)  {
65
        if (value == null) {
66
            return "NULL";
67
        } else if (value instanceof Date) {
68
            return "'" + StringEscapeUtils.escapeSql(((Date) value).toString()) + "'";
69
//            return "DATE('" + value + "')";
70
        } else if (value instanceof Boolean) {
71
            return value.toString();
72
        } else if (value instanceof String) {
73
            return "'" + StringEscapeUtils.escapeSql((String) value) + "'";
74
        } else if (value instanceof Geometry) {
75
            ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
76
            return builder.geometry((Geometry)value).toString();
77
        } else if (value instanceof Envelope) {
78
            ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
79
            return builder.envelope((Envelope)value).toString();
80
        } else if (value instanceof Time) {
81
            return "'" + StringEscapeUtils.escapeSql(((Date) value).toString()) + "'";
82
        } else if (value instanceof Number) {
83
            return ((Number)value).toString();
84
        } else {
85
            return StringEscapeUtils.escapeSql(value.toString());
86
        }
87
        
88
    }
89
    
90
    public static String toString(Object value)  {
91
        if (value == null) {
92
            return "NULL";
93
        } else if (value instanceof Date) {
94
            return "'" + StringEscapeUtils.escapeSql(((Date) value).toString()) + "'";
95
//            return "DATE('" + value + "')";
96
        } else if (value instanceof Boolean) {
97
            return value.toString();
98
        } else if (value instanceof String) {
99
            return "'" + StringEscapeUtils.escapeSql((String) value) + "'";
100
        } else if (value instanceof Geometry) {
101
            try {
102
                return ((Geometry)value).convertToWKT();
103
            } catch (Exception ex) {
104
                return "[ERROR] "+ex.getMessage();
105
            }
106
        } else if (value instanceof Envelope) {
107
            try {
108
                return ((Envelope)value).getGeometry().convertToWKT();
109
            } catch (Exception ex) {
110
                return "[ERROR] "+ex.getMessage();
111
            }
112
        } else if (value instanceof Time) {
113
            return "'" + StringEscapeUtils.escapeSql(((Date) value).toString()) + "'";
114
        } else if (value instanceof Number) {
115
            return ((Number)value).toString();
116
        } else {
117
            return StringEscapeUtils.escapeSql(value.toString());
118
        }
119
        
120
    }
121
    
122
}