Revision 44863

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/test/java/org/gvsig/fmap/dal/store/dbf/TestExpressionField.java
1
package org.gvsig.fmap.dal.store.dbf;
2

  
3
import java.io.File;
4
import java.sql.Timestamp;
5
import java.time.LocalDate;
6
import java.time.LocalDateTime;
7
import java.time.LocalTime;
8
import java.time.ZoneId;
9
import java.util.Date;
10
import java.util.List;
11
import junit.framework.TestCase;
12
import org.apache.commons.lang3.StringUtils;
13
import org.gvsig.expressionevaluator.ExpressionUtils;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.DataManager;
16
import org.gvsig.fmap.dal.DataServerExplorer;
17
import org.gvsig.fmap.dal.DataStore;
18
import org.gvsig.fmap.dal.DataTypeUtils;
19
import org.gvsig.fmap.dal.DataTypes;
20
import org.gvsig.fmap.dal.expressionevaluator.FeatureAttributeEmulatorExpression;
21
import org.gvsig.fmap.dal.feature.EditableFeature;
22
import org.gvsig.fmap.dal.feature.EditableFeatureType;
23
import org.gvsig.fmap.dal.feature.Feature;
24
import org.gvsig.fmap.dal.feature.FeatureStore;
25
import org.gvsig.fmap.dal.feature.FeatureType;
26
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
27
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
28
import org.gvsig.fmap.dal.store.dbf.utils.FieldFormatter;
29
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
30

  
31
public class TestExpressionField extends TestCase {
32
    
33
    public TestExpressionField(String testName) {
34
        super(testName);
35
    }
36
    
37
    @Override
38
    protected void setUp() throws Exception {
39
        super.setUp();
40
        new DefaultLibrariesInitializer().fullInitialize();
41
    }
42
    
43
    @Override
44
    protected void tearDown() throws Exception {
45
        super.tearDown();
46
    }
47

  
48
    // TODO add test methods here. The name must begin with 'test'. For example:
49
    // public void testHello() {}
50

  
51
    protected String getProviderName() {
52
        return DataStore.DBASE_PROVIDER_NAME;
53
    }
54
    
55
    protected String getTargetFilename() {
56
        return "testExpressionField1.dbf";
57
    }
58

  
59
    protected FeatureStore openTargetStore1() throws Exception {
60
        DataManager dataManager = DALLocator.getDataManager();
61
        File f = TestUtils.getResource(getTargetFilename());
62
        FeatureStore store = (FeatureStore) dataManager.openStore(
63
                getProviderName(), 
64
                "DbfFile",f
65
        );
66
        return store;
67
    }
68

  
69
    protected void createFrom(FeatureStore sourceStore) throws Exception {
70
        DataManager dataManager = DALLocator.getDataManager();
71
        DataServerExplorer explorer = dataManager.openServerExplorer(
72
                DataServerExplorer.FILESYSTEM_SERVER_EXPLORER_NAME, 
73
                "root", TestUtils.getTargetFolder()
74
        );
75
        
76
        NewFeatureStoreParameters params = (NewFeatureStoreParameters) explorer.getAddParameters(
77
                getProviderName()
78
        );
79
        ((FilesystemStoreParameters)params).setFile(TestUtils.getResource(getTargetFilename()));
80
        EditableFeatureType ft = params.getDefaultFeatureType();
81
        ft.addAll(sourceStore.getDefaultFeatureType());
82
        explorer.add(getProviderName(), params, true);
83
    }
84
    
85
    protected void copyFrom(FeatureStore sourceStore, int mode) throws Exception {
86
        FeatureStore targetStore = openTargetStore1();
87
        targetStore.edit(mode);
88
        try {
89
            for (Feature sourceFeature : sourceStore.getFeatureSet()) {
90
                EditableFeature targetFeature = targetStore.createNewFeature(sourceFeature);
91
                targetStore.insert(targetFeature);
92
            }
93
        } finally {
94
            targetStore.finishEditing();
95
        }
96
    }
97
    
98
    public void testTimestamp() throws Exception {
99
      DataManager dataManager = DALLocator.getDataManager();
100
      FeatureStore sourceStore = TestUtils.openSourceStore1();
101

  
102
      createFrom(sourceStore);        
103
      copyFrom(sourceStore, FeatureStore.MODE_APPEND);
104

  
105
      FeatureStore targetStore = openTargetStore1();
106
      EditableFeatureType featureType = targetStore.getDefaultFeatureType().getEditable();
107

  
108
      FeatureAttributeEmulatorExpression emulator = dataManager.createFeatureAttributeEmulatorExpression(
109
              featureType, 
110
              ExpressionUtils.createExpression("TO_TIMESTAMP(TOINTEGER(RANDOM()*(20-10)+10)||'/1/2020','dd/MM/yyyy')")
111
      );
112
      targetStore.edit();
113
      featureType.add("cct", DataTypes.TIMESTAMP, emulator);
114
      targetStore.update(featureType);
115
      targetStore.finishEditing();
116
      targetStore.dispose();
117
      
118
      targetStore = openTargetStore1();
119
      for (Feature feature : targetStore.getFeatureSet()) {
120
        Date cct = feature.getTimestamp("cct");
121

  
122
        assertEquals(true, cct.getDate()>=10 && cct.getDate()<=20);
123
        assertEquals(0, cct.getMonth());
124
        
125
        // The java Date does not go well with 2020 and does not return 
126
        // a good year, so we use a LocalDateTime to get the year.
127
        assertEquals(2020, LocalDateTime.ofInstant(cct.toInstant(), ZoneId.systemDefault()).getYear() );
128
      }
129
    }
130
    
131
}

Also available in: Unified diff