Revision 47506 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/CSVReaderSuperCSV.java

View differences:

CSVReaderSuperCSV.java
1 1
package org.gvsig.fmap.dal.store.csv.simplereaders;
2 2

  
3
import java.io.BufferedReader;
3 4
import java.io.File;
4 5
import java.io.IOException;
5 6
import java.io.Reader;
6 7
import java.util.List;
8
import java.util.function.Function;
7 9
import org.apache.commons.io.FilenameUtils;
10
import org.apache.commons.io.input.CloseShieldReader;
11
import org.apache.commons.lang3.StringUtils;
8 12
import org.apache.commons.text.StringEscapeUtils;
9
import org.apache.commons.lang3.StringUtils;
10 13
import org.gvsig.fmap.dal.store.csv.CSVStoreParameters;
11 14
import org.gvsig.fmap.dal.store.csv.virtualrows.RandomAccessFileIndex;
12 15
import org.gvsig.fmap.dal.store.csv.virtualrows.RandomAccessFileReader;
......
79 82
            if( data_file.length()< 10*1024*1024 ) {
80 83
                return null;
81 84
            }
85
            
86
            Function<BufferedReader, Integer> numberOfLinesInRecord = new Function<BufferedReader, Integer>() {
87
                @Override
88
                public Integer apply(BufferedReader breader) {
89
                    CloseShieldReader theReader = CloseShieldReader.wrap(breader);
90
                    CsvListReader parser = new CsvListReader(theReader, getCSVPreferences());
91
                    try {
92
                        List<String> values = parser.read();
93
                    } catch (IOException ex) {
94
                        return 1;
95
                    }
96
                    return parser.getLineNumber();
97
                }
98
            };
82 99

  
83 100
            String charset = CSVStoreParameters.getCharset(params);
84 101
            File index_file = getIndexFile(data_file);
85 102
            
86 103
            theReader = new RandomAccessFileReader(data_file, charset);
87
            theIndex = theReader.createOrOpenIndexOfLines(index_file, false, FILTER_NONE, status);
104
            theIndex = theReader.createOrOpenIndexOfLines(index_file, false, FILTER_NONE, status, numberOfLinesInRecord);
88 105
            
89 106
            SuperCSVList list = new SuperCSVList(
90 107
                    theReader, 

Also available in: Unified diff