Revision 43283

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureType.java
197 197
            case DataTypes.STRING:
198 198
            case DataTypes.TIME:
199 199
            case DataTypes.TIMESTAMP:
200
            case DataTypes.URI:
201
            case DataTypes.URL:
202
            case DataTypes.FILE:
200 203
                break;
201 204

  
202 205
            default:
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVStoreProvider.java
23 23
package org.gvsig.fmap.dal.store.csv;
24 24

  
25 25
import java.io.File;
26
import java.io.FileInputStream;
27
import java.io.FileNotFoundException;
26 28
import java.io.FileReader;
27 29
import java.io.FileWriter;
28 30
import java.io.IOException;
31
import java.io.InputStreamReader;
29 32
import java.net.URL;
30
import java.text.SimpleDateFormat;
33
import java.nio.charset.Charset;
31 34
import java.util.ArrayList;
32 35
import java.util.HashMap;
33 36
import java.util.Iterator;
......
746 749
                logger.warn("Can't set geometry type for the calculated field in CSV file '" + getFullFileName() + "'.", e);
747 750
            }
748 751
        }
752
        
753
        String geometry_column = CSVStoreParameters.getGeometryColumn(this.getParameters());
754
        if( !StringUtils.isEmpty(geometry_column) ) {
755
            EditableFeatureAttributeDescriptor attr = (EditableFeatureAttributeDescriptor) fType.get(geometry_column);
756
            if( attr!=null && attr.getType()!=DataTypes.GEOMETRY ) {
757
                attr.setDataType(DataTypes.GEOMETRY);
758
                GeometryManager geommgr = GeometryLocator.getGeometryManager();
759
                GeometryType gt;
760
                try {
761
                    gt = geommgr.getGeometryType(Geometry.TYPES.GEOMETRY, Geometry.SUBTYPES.UNKNOWN);
762
                    attr.setGeometryType(gt);
763
                } catch (Exception e) {
764
                    logger.warn("Can't set geometry type for the calculated field in CSV file '" + getFullFileName() + "'.", e);
765
                }
766
                fType.setDefaultGeometryAttributeName(geometry_column);
767
            }
768
        }
749 769
        return fType;
750 770
    }
751 771

  
......
889 909

  
890 910
    }
891 911

  
892
    private SimpleReader getSimpleReader(FileReader in) {
912
    private SimpleReader getSimpleReader(InputStreamReader in) {
893 913
        SimpleReader reader;
894 914
        if (CSVStoreParameters.getRawFieldsDefinition(getCSVParameters()) != null) {
895 915
            reader = new FixedLenReader(in, getCSVParameters());
......
917 937
        return headers;
918 938
    }
919 939

  
940
    private InputStreamReader openFile(File f, String charsetName) throws FileNotFoundException {
941
        Charset charset = Charset.defaultCharset();
942
        FileInputStream fis = new FileInputStream(f);
943
        if( !StringUtils.isEmpty(charsetName) ) {
944
            if( Charset.isSupported(charsetName) )  {
945
                try {
946
                    charset = Charset.forName(charsetName);
947
                } catch(Throwable th) {
948
                    logger.warn("Can't use charset '"+charsetName+"' for read csv '"+this.getFullFileName()+"'.", th);
949
                }
950
            } else {
951
                logger.warn("charset '"+charsetName+"' not supported for read csv '"+this.getFullFileName()+"'.");                
952
            }
953
        }
954
        InputStreamReader isr = new InputStreamReader(fis, charset);
955
        return isr;
956
    }
957
    
920 958
    private void loadFeatures() {
921
        FileReader in = null;
959
        InputStreamReader in = null;
922 960
        SimpleReader reader = null;
923 961
        try {
924 962
            String headers[] = null;
......
926 964

  
927 965
            boolean ignore_errors = CSVStoreParameters.getIgnoreErrors(getCSVParameters());
928 966

  
929
            in = new FileReader(this.getCSVParameters().getFile());
967
            in = openFile(
968
                this.getCSVParameters().getFile(), 
969
                CSVStoreParameters.getCharset(this.getCSVParameters())
970
            );
930 971

  
931 972
            reader = getSimpleReader(in);
932 973

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVStoreParameters.java
74 74
    private static final String LOCALE = "locale";
75 75
    private static final String POINT_COLUMN_NAME = "pointColumnName";
76 76
    private static final String LIMIT = "limit";
77
    private static final String GEOEMTRY_COLUMN = "geometry_column";
77 78

  
78 79
    private DelegatedDynObject parameters;
79 80

  
......
171 172
        return StringEscapeUtils.unescapeJava(s);
172 173
    }
173 174

  
175
    public static String getGeometryColumn(DynObject dynobj) {
176
        String s = (String) dynobj.getDynValue(GEOEMTRY_COLUMN);
177
        return s;
178
    }
179

  
174 180
    static Locale getLocale(DynObject dynobj) {
175 181
        try {
176 182
            String s = (String) dynobj.getDynValue(LOCALE);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/simplereaders/CSVReader.java
1 1
package org.gvsig.fmap.dal.store.csv.simplereaders;
2 2

  
3
import java.io.FileReader;
4 3
import java.io.IOException;
4
import java.io.InputStreamReader;
5 5
import java.util.List;
6 6
import org.apache.commons.lang3.StringUtils;
7 7
import org.gvsig.fmap.dal.store.csv.CSVStoreParameters;
......
26 26
    private List<String>  nextLine;
27 27
    private int columns;
28 28

  
29
    public CSVReader(FileReader in, CSVStoreParameters parameters) {
29
    public CSVReader(InputStreamReader in, CSVStoreParameters parameters) {
30 30
        this(parameters);
31 31
        this.reader = new CsvListReader(in, getCSVPreferences());
32 32
    }    
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/simplereaders/FixedLenReader.java
2 2
package org.gvsig.fmap.dal.store.csv.simplereaders;
3 3

  
4 4
import java.io.BufferedReader;
5
import java.io.FileReader;
6 5
import java.io.IOException;
6
import java.io.InputStreamReader;
7 7
import java.util.ArrayList;
8 8
import java.util.List;
9 9
import org.apache.commons.lang3.StringUtils;
......
20 20
    private final String commentStartMarker;
21 21
    private int currentLine =1;
22 22

  
23
    public FixedLenReader(FileReader reader, CSVStoreParameters parameters) {
23
    public FixedLenReader(InputStreamReader reader, CSVStoreParameters parameters) {
24 24
//        this.parameters = parameters;
25 25
        this.reader = new BufferedReader(reader);
26 26
        this.fieldsDefinition = CSVStoreParameters.getFieldsDefinition(parameters);

Also available in: Unified diff