david-PC\david
2018-06-12 cc7f57619fd09f68582b748a3580402717b84c50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package frame.data.convert;
 
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
import frame.data.Variant;
import frame.util.Util;
 
 
public class DoubleTranslator extends Convertor {
 
    public Object loadToObject(String value) throws Exception {
        if (Util.isEmptyStr(value)) {
            return null;
        }
        
        return Double.valueOf(value);
    }
    
    public Variant loadToVariant(String value) throws Exception {
        if (value == null) {
            return new Variant();
        }
        
        Double result = Double.valueOf(value);
        
        return new Variant(result);
    }
 
    public String toString(Object value) throws Exception {
        if (value == null) {
            return null;
        }
        
        return value.toString();
    }
 
    public String toSqlString(Object value) throws Exception {
        return String.valueOf(value);
    }
    
    public String toSqlString(String prefix, Object value, String suffix) throws Exception    {
        return toSqlString(value);
    }
 
    public String toJSONString(Object value) throws Exception {
        if (value == null) {
            return "null";
        }
        
        return value.toString();
    }
 
    @Override
    public Integer toInteger(Object object) throws Exception {
        if (object == null) {
            return 0;
        }
        
        Double value = (Double)object;
        return value.intValue();
    }
 
    @Override
    public Double toDouble(Object object) throws Exception {
        if (object == null) {
            return 0.0;
        }
        
        return (Double)object;
    }
 
    @Override
    public BigDecimal toBigDecimal(Object object) throws Exception {
        if (object == null) {
            return BigDecimal.valueOf(0);
        }
        
        return BigDecimal.valueOf((Double)object);
    }
    
    @Override
    public Boolean toBoolean(Object object) throws Exception {
        Double value = toDouble(object);
        return value != 0;
    }
 
    @Override
    public Date toDate(Object object) throws Exception {
        Integer value = toInteger(object);
        
        if (value >= 19500101 && value <= 21000101) {
            String String = String.valueOf(value.intValue());
            DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
            return dateFormat.parse(String);
        }
        else if (value > (1950 - 1900) * 365 && value < (2100 - 1900) * 365) {
            int dateValue = value.intValue();
            double secValue = value - dateValue;
            
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, 1900);
            calendar.set(Calendar.MONTH, 0);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.add(Calendar.DATE, value - 2);
            
            Date dayDate = calendar.getTime();
            long sec = Math.round(secValue * 24 * 3600 * 1000);
            
            Date result = new Date();
            result.setTime(dayDate.getTime() + sec);
            return result;
        }
        
        return null;
    }
 
    @Override
    public Object toSelfType(Object value) throws Exception {
        return toDouble(value);
    }
 
}