X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aaf%2Fauthz.git;a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Futil%2FCSV.java;h=2c9bb8c44ab6c842a188a7f3bf6bbcc43ffa50ac;hp=35d85b9ac95947b0ceffa9560b15a903ad32a06d;hb=07fb3ece74a9aa1fad8e2a9fab73b4de3e36853b;hpb=8748d6d6d0c654134712a26fa795520d895ca878 diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/util/CSV.java b/cadi/core/src/main/java/org/onap/aaf/cadi/util/CSV.java index 35d85b9a..2c9bb8c4 100644 --- a/cadi/core/src/main/java/org/onap/aaf/cadi/util/CSV.java +++ b/cadi/core/src/main/java/org/onap/aaf/cadi/util/CSV.java @@ -41,240 +41,250 @@ import org.onap.aaf.cadi.CadiException; * */ public class CSV { - private File csv; - private Access access; - private boolean processAll; - private char delimiter = ','; - - public CSV(Access access, File file) { - this.access = access; - csv = file; - processAll = false; - } - - public CSV(Access access, String csvFilename) { - this.access = access; - csv = new File(csvFilename); - processAll = false; - } - - public CSV setDelimiter(char delimiter) { - this.delimiter = delimiter; - return this; - } - - public String name() { - return csv.getName(); - } + private File csv; + private Access access; + private boolean processAll; + private char delimiter = ','; + private boolean go; + + public CSV(Access access, File file) { + this.access = access; + csv = file; + processAll = false; + go = true; + } + + public CSV(Access access, String csvFilename) { + this.access = access; + csv = new File(csvFilename); + processAll = false; + go = true; + } + + public CSV setDelimiter(char delimiter) { + this.delimiter = delimiter; + return this; + } + + public String name() { + return csv.getName(); + } - public CSV processAll() { - processAll = true; - return this; - } - /* - * Create your code to accept the List row. - * - * Your code may keep the List... CSV does not hold onto it. - * - * @author Instrumental(Jonathan) - * - */ - public interface Visitor { - void visit(List row) throws IOException, CadiException; - } - - public void visit(Visitor visitor) throws IOException, CadiException { - BufferedReader br = new BufferedReader(new FileReader(csv)); - try { - String line; - StringBuilder sb = new StringBuilder(); - while((line = br.readLine())!=null) { - line=line.trim(); - if(!line.startsWith("#") && line.length()>0) { -// System.out.println(line); uncomment to debug - List row = new ArrayList<>(); - boolean quotes=false; - boolean escape=false; - char c = 0; - for(int i=0;i0 || c==',') { - row.add(sb.toString()); - sb.setLength(0); - } - try { - visitor.visit(row); - } catch (CadiException e) { - if(processAll) { - access.log(Level.ERROR,e); - } else { - throw e; - } - } - } - } - } finally { - br.close(); - } - } - - public Writer writer() throws FileNotFoundException { - return new Writer(false); - } + public CSV processAll() { + processAll = true; + return this; + } + /* + * Create your code to accept the List row. + * + * Your code may keep the List... CSV does not hold onto it. + * + * @author Instrumental(Jonathan) + * + */ + public interface Visitor { + void visit(List row) throws IOException, CadiException; + } + + public void visit(Visitor visitor) throws IOException, CadiException { + BufferedReader br = new BufferedReader(new FileReader(csv)); + try { + String line; + StringBuilder sb = new StringBuilder(); + while(go && (line = br.readLine())!=null) { + line=line.trim(); + if(!line.startsWith("#") && line.length()>0) { +// System.out.println(line); uncomment to debug + List row = new ArrayList<>(); + boolean quotes=false; + boolean escape=false; + char c = 0; + for(int i=0;i0 || c==',') { + row.add(sb.toString()); + sb.setLength(0); + } + try { + visitor.visit(row); + } catch (CadiException e) { + if(processAll) { + access.log(Level.ERROR,e); + } else { + throw e; + } + } + } + } + } finally { + br.close(); + } + } + + public Writer writer() throws FileNotFoundException { + return new Writer(false); + } - public Writer writer(boolean append) throws FileNotFoundException { - return new Writer(append); - } + public Writer writer(boolean append) throws FileNotFoundException { + return new Writer(append); + } - public interface RowSetter { - public void row(Object ... objs); - } - - public static class Saver implements RowSetter { - List ls= new ArrayList<>(); - - @Override - public void row(Object ... objs) { - if(objs.length>0) { - for(Object o : objs) { - if(o != null) { - if(o instanceof String[]) { - for(String str : (String[])o) { - ls.add(str); - } - } else { - ls.add(o.toString()); - } - } - } - } - } - - public List asList() { - List rv = ls; - ls = new ArrayList<>(); - return rv; - } - } + public interface RowSetter { + public void row(Object ... objs); + } + + public static class Saver implements RowSetter { + List ls= new ArrayList<>(); + + @Override + public void row(Object ... objs) { + if(objs.length>0) { + for(Object o : objs) { + if(o != null) { + if(o instanceof String[]) { + for(String str : (String[])o) { + ls.add(str); + } + } else { + ls.add(o.toString()); + } + } + } + } + } + + public List asList() { + List rv = ls; + ls = new ArrayList<>(); + return rv; + } + } - public class Writer implements RowSetter { - private PrintStream ps; - private Writer(final boolean append) throws FileNotFoundException { - ps = new PrintStream(new FileOutputStream(csv,append)); - } - - @Override - public void row(Object ... objs) { - if(objs.length>0) { - boolean first = true; - for(Object o : objs) { - if(first) { - first = false; - } else { - ps.append(delimiter); - } - if(o == null) { - } else if(o instanceof String[]) { - for(String str : (String[])o) { - print(str); - } - } else { - print(o.toString()); - } - } - ps.println(); - } - } - - private void print(String s) { - boolean quote = s.matches(".*[,|\"].*"); - if(quote) { - ps.append('"'); - ps.print(s.replace("\"", "\"\"") - .replace("'", "''") - .replace("\\", "\\\\")); - ps.append('"'); - } else { - ps.append(s); - } + public class Writer implements RowSetter { + private PrintStream ps; + private Writer(final boolean append) throws FileNotFoundException { + ps = new PrintStream(new FileOutputStream(csv,append)); + } + + @Override + public void row(Object ... objs) { + if(objs.length>0) { + boolean first = true; + for(Object o : objs) { + if(first) { + first = false; + } else { + ps.append(delimiter); + } + if(o == null) { + } else if(o instanceof String[]) { + for(String str : (String[])o) { + print(str); + } + } else { + print(o.toString()); + } + } + ps.println(); + } + } + + private void print(String s) { + boolean quote = s.matches(".*[,|\"].*"); + if(quote) { + ps.append('"'); + ps.print(s.replace("\"", "\"\"") + .replace("'", "''") + .replace("\\", "\\\\")); + ps.append('"'); + } else { + ps.append(s); + } - - } - /** - * Note: CSV files do not actually support Comments as a standard, but it is useful - * @param comment - */ - public void comment(String comment, Object ... objs) { - ps.print("# "); - ps.printf(comment,objs); - ps.println(); - } - - public void flush() { - ps.flush(); - } - - public void close() { - flush(); - ps.close(); - } - - public String toString() { - return csv.getAbsolutePath(); - } - } + + } + /** + * Note: CSV files do not actually support Comments as a standard, but it is useful + * @param comment + */ + public void comment(String comment, Object ... objs) { + ps.print("# "); + ps.printf(comment,objs); + ps.println(); + } + + public void flush() { + ps.flush(); + } + + public void close() { + flush(); + ps.close(); + } + + public String toString() { + return csv.getAbsolutePath(); + } + } + + /** + * Provides a way to stop processing records from inside a Visit + */ + public void stop() { + go = false; + } - public void delete() { - csv.delete(); - } - - public String toString() { - return csv.getAbsolutePath(); - } + public void delete() { + csv.delete(); + } + + public String toString() { + return csv.getAbsolutePath(); + } }