X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Futil%2FCSV.java;h=1d60ae587ac84c0bc0e05cd9636b5fd5941c3a43;hb=a174f8ddbc5eb78a648fb68b33ef18cb64d81fda;hp=c7fada74437fa9d54304940be20a951c58f97b41;hpb=b90e58e54dae6412eec1acf618e5d38fa3b8127b;p=aaf%2Fauthz.git 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 c7fada74..1d60ae58 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 @@ -30,6 +30,8 @@ import java.io.PrintStream; import java.util.ArrayList; import java.util.List; +import org.onap.aaf.cadi.Access; +import org.onap.aaf.cadi.Access.Level; import org.onap.aaf.cadi.CadiException; /** @@ -40,17 +42,30 @@ import org.onap.aaf.cadi.CadiException; */ public class CSV { private File csv; + private Access access; + private boolean processAll; - public CSV(File file) { + public CSV(Access access, File file) { + this.access = access; csv = file; + processAll = false; } - public CSV(String csvFilename) { + public CSV(Access access, String csvFilename) { + this.access = access; csv = new File(csvFilename); + processAll = false; } + 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. @@ -74,7 +89,7 @@ public class CSV { List row = new ArrayList<>(); boolean quotes=false; boolean escape=false; - char c; + char c = 0; for(int i=0;i0) { + if(sb.length()>0 || c==',') { row.add(sb.toString()); sb.setLength(0); } - visitor.visit(row); + try { + visitor.visit(row); + } catch (CadiException e) { + if(processAll) { + access.log(Level.ERROR,e); + } else { + throw e; + } + } } } } finally { @@ -133,45 +156,88 @@ public class CSV { return new Writer(append); } - public class Writer { + 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)); } - public void row(Object ... strings) { - if(strings.length>0) { + + @Override + public void row(Object ... objs) { + if(objs.length>0) { boolean first = true; - boolean quote; - String s; - for(Object o : strings) { + for(Object o : objs) { if(first) { first = false; } else { ps.append(','); } - s = o.toString(); - quote = s.matches(".*[,|\"].*"); - if(quote) { - ps.append('"'); - ps.print(s.replace("\"", "\"\"") - .replace("'", "''") - .replace("\\", "\\\\")); - ps.append('"'); + if(o == null) { + } else if(o instanceof String[]) { + for(String str : (String[])o) { + print(str); + } } else { - ps.append(s); + 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) { + public void comment(String comment, Object ... objs) { ps.print("# "); - ps.println(comment); + ps.printf(comment,objs); + ps.println(); } public void flush() {