001 package jp.osdl.jbento2.report; 002 003 import java.io.BufferedReader; 004 import java.io.File; 005 import java.io.FileReader; 006 import java.util.ArrayList; 007 import java.util.HashMap; 008 import java.util.List; 009 import java.util.Map; 010 011 public class CsvReader { 012 013 public static Map readData(File csvFile) throws Exception { 014 Map data = new HashMap(); 015 BufferedReader reader = new BufferedReader(new FileReader(csvFile)); 016 017 String line = reader.readLine(); 018 if (line == null) { 019 return data; 020 } 021 022 data.put("header", splitLine(line, ",")); 023 024 List body = new ArrayList(); 025 boolean appearedSepalator = false; 026 while ((line = reader.readLine()) != null) { 027 if (line.startsWith("---")) { 028 if (appearedSepalator) { 029 break; 030 } else { 031 appearedSepalator = true; 032 continue; 033 } 034 } 035 body.add(splitLine(line, ",")); 036 } 037 data.put("body", body); 038 039 line = reader.readLine(); 040 if (line == null) { 041 return data; 042 } 043 044 data.put("footer", splitLine(line, ",")); 045 return data; 046 } 047 048 private static String[] splitLine(String line, String delimiter) { 049 String[] result = line.split(delimiter); 050 for (int i = 0; i < result.length; i++) { 051 result[i] = result[i].trim(); 052 } 053 return result; 054 } 055 056 }