/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AbstractAddressSource.java
ViewVC logotype

Diff of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AbstractAddressSource.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AbstractAddressSource.java revision 2868 by torben, Thu Jan 28 16:12:28 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AbstractAddressSource.java revision 2949 by torben, Tue Feb 16 09:38:13 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold;  package dk.daoas.adressevedligehold.fileupload;
2    
3  import java.io.BufferedReader;  import java.io.BufferedReader;
4    import java.io.IOException;
5  import java.io.InputStream;  import java.io.InputStream;
6  import java.io.InputStreamReader;  import java.io.InputStreamReader;
7    import java.nio.charset.Charset;
8    import java.util.List;
9    
10  import org.apache.commons.fileupload.FileItem;  import org.apache.commons.fileupload.FileItem;
11    
12    import com.google.common.base.Splitter;
13    
14    import dk.daoas.adressevedligehold.tasks.TaskLogger;
15  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
16    
17  public abstract class AbstractAddressSource implements AddressSource {  public abstract class AbstractAddressSource implements AddressSource {
18                    
19            private TaskLogger logger = TaskLogger.getInstance();
20            
21          protected DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();          protected DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();
22                    
23          protected FileItem file;          protected FileItem file;
# Line 26  public abstract class AbstractAddressSou Line 34  public abstract class AbstractAddressSou
34                    
35          @Override          @Override
36          public String getFilename() {          public String getFilename() {
                 // TODO Auto-generated method stub  
37                  return file.getName();                  return file.getName();
38          }          }
39                    
40          @Override //AutoCloseable          @Override //AutoCloseable
41          public void close() throws Exception {          public void close() throws Exception {
42                  System.out.println("Closing BK after lines " + lineCount);                  logger.info("Closing BK after lines " + lineCount);
43                  try {                  try {
44                          if (br != null)                          if (br != null)
45                                  br.close();                                  br.close();
# Line 44  public abstract class AbstractAddressSou Line 51  public abstract class AbstractAddressSou
51                          file.delete();                          file.delete();
52                                                    
53                  } catch (Exception e) {                  } catch (Exception e) {
54                          System.out.println("Error on closing " + e.getMessage() );                          logger.warning("Error on closing ", e );
55                  }                        }      
56          }          }
57            /**
58             * Reads the first line, validates that there are the expected number of fields, and then
59             * re-initilze the inputstream - this is for file formats that does not use a header line.
60             *
61             * @param exptectedFieldCount
62             * @param seperator
63             * @throws IOException
64             */
65            protected void validatNoHeaderLine(int exptectedFieldCount, char seperator) throws IOException {
66                    try (          
67                                    InputStream is1 = file.getInputStream();
68                                    InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );
69                                    BufferedReader br1 = new BufferedReader(isr1)
70                            ) {
71                            String line = br1.readLine();
72                            
73                            if (line == null) {
74                                    throw new IOException("Can't read 1st line - is file empty?");
75                            }      
76                            
77                            List<String> parts = Splitter.on(seperator).splitToList(line);
78                            if (parts.size() != exptectedFieldCount) {
79                                    throw new IOException("Not enough fields in CSV file. Found " + parts.size() + ", expected " + exptectedFieldCount);
80                            }
81                    }
82    
83                    
84                    is = file.getInputStream();
85                    isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
86                    br = new BufferedReader(isr);          
87            }
88            
89            
90            protected void validateWithHeader(int expectedFieldCount, char seperator) throws IOException {
91                    try {
92                            is = file.getInputStream();
93                            isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
94                            br = new BufferedReader(isr);
95                            
96                            String line = br.readLine();
97                            if (line == null) {
98                                    throw new IOException("Can't read 1st line - is file empty?");
99                            }                      
100                            
101                            List<String> parts = Splitter.on(seperator).splitToList(line);
102                            if (parts.size() != expectedFieldCount) {
103                                    throw new IOException("Not enough fields in CSV file. Found " + parts.size() + ", expected " + expectedFieldCount);
104                            }
105    
106    
107                            
108                    } catch (Exception e) {
109                            try {
110                                    br.close();
111                                    isr.close();
112                                    is.close();
113                            } catch (Exception e2) {
114                                    logger.warning("Error cleaning up resources", e2);
115                            }
116                            
117                            throw e; // Re-throw    
118                    }              
119            }
120  }  }

Legend:
Removed from v.2868  
changed lines
  Added in v.2949

  ViewVC Help
Powered by ViewVC 1.1.20