LastNotified.java - sonar fixes
[aaf/authz.git] / auth / auth-batch / src / main / java / org / onap / aaf / auth / batch / update / Upload.java
index 76472b5..a3d37a0 100644 (file)
@@ -3,6 +3,8 @@
  * org.onap.aaf
  * ===========================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * Modifications Copyright (C) 2018 IBM.
  * ===========================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,15 +30,66 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.onap.aaf.auth.batch.Batch;
+import org.onap.aaf.auth.batch.helpers.CQLBatch;
+import org.onap.aaf.auth.batch.helpers.CQLBatchLoop;
 import org.onap.aaf.auth.env.AuthzTrans;
 import org.onap.aaf.auth.org.OrganizationException;
 import org.onap.aaf.misc.env.APIException;
 import org.onap.aaf.misc.env.Env;
+import org.onap.aaf.misc.env.LogTarget;
 import org.onap.aaf.misc.env.TimeTaken;
 
-import com.datastax.driver.core.ResultSet;
-
 public class Upload extends Batch {
+
+       private CQLBatchLoop cqlBatch;
+
+       // APPROVALS
+       private static final String APPR_INS_FMT="  INSERT INTO authz.approval "
+                       + "(id,approver,last_notified,memo,operation,status,ticket,type,user) "
+                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] APPR_QUOTES = new Boolean[]{false,true,true,true,true,true,false,true,true};
+
+       // ARTIFACTS
+       private static final String ARTI_INS_FMT="  INSERT INTO authz.artifact "
+                       + "(mechid,machine,ca,dir,expires,notify,ns,os_user,renewdays,sans,sponsor,type) "
+                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] ARTI_QUOTES = new Boolean[]
+                       {true,true,true,true,true,true,true,true,false,false,true,false};
+
+       // CREDS
+       private static final String CRED_INS_FMT="  INSERT INTO authz.cred "
+                       + "(id,type,expires,cred,notes,ns,other,prev) "
+                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] CRED_QUOTES = new Boolean[]
+                       {true,false,true,false,true,true,false,false};
+
+       // NS
+       private static final String NS_INS_FMT="  INSERT INTO authz.ns "
+                       + "(name,description,parent,scope,type) "
+                       + "VALUES (%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] NS_QUOTES = new Boolean[]
+                       {true,true,true,false,false};
+
+       // x509
+       private static final String X509_INS_FMT="  INSERT INTO authz.x509 "
+                       + "(ca,serial,id,x500,x509) "
+                       + "VALUES (%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] X509_QUOTES = new Boolean[]
+                       {true,false,true,true,true};
+
+       // ROLE
+       private static final String ROLE_INS_FMT="  INSERT INTO authz.role "
+                       + "(ns,name,description,perms) "
+                       + "VALUES (%s,%s,%s,%s);\n";
+       private static final Boolean[] ROLE_QUOTES = new Boolean[]
+                       {true,true,true,false};
+       // ROLE
+       private static final String PERM_INS_FMT="  INSERT INTO authz.perm "
+                       + "(ns,type,instance,action,description,roles) "
+                       + "VALUES (%s,%s,%s,%s,%s,%s);\n";
+       private static final Boolean[] PERM_QUOTES = new Boolean[]
+                       {true,true,true,true,true,false};
+
        public Upload(AuthzTrans trans) throws APIException, IOException, OrganizationException {
                super(trans.env());
            trans.info().log("Starting Connection Process");
@@ -49,49 +102,47 @@ public class Upload extends Batch {
                        } finally {
                                tt.done();
                        }
-
+                       
+                       cqlBatch = new CQLBatchLoop(new CQLBatch(LogTarget.NULL,session),50,dryRun);
            } finally {
                tt0.done();
            }
        }
 
-       private static final int BATCH_LENGTH = 100;
-
-       int count,batchCnt;
-
        @Override
        protected void run(AuthzTrans trans) {
                String line;
                StringBuilder sb = new StringBuilder();
-               StringBuilder query = new StringBuilder();
                List<String> array = new ArrayList<String>();
                for(String feed : args()) {
-                       File file = new File(feed + ".dat");
+                       File file;
+                       if(feed.endsWith(".dat")) {
+                               file = new File(feed);
+                               feed = file.getName();
+                               feed = feed.substring(0,feed.length()-4);
+                       } else {
+                               file = new File(feed+".dat");
+                       }
                        TimeTaken tt = trans.start(file.getAbsolutePath(), Env.SUB);
-                       System.out.println("#### Running " + feed + ".dat Feed ####");
+                       String msg = String.format("#### Running %s.dat Feed ####",feed);
+                       trans.info().log(msg);
+                       System.out.println(msg);
+               BufferedReader br = null;
                    try {
-
                                if(file.exists()) {
-                                       count=batchCnt=0;
-                                       boolean justOne = false;
                                        try {
-                                               BufferedReader br = new BufferedReader(new FileReader(file));
+                                               br = new BufferedReader(new FileReader(file));
                                                try {
                                                        while((line=br.readLine())!=null) {
                                                                if(line.length()>5000) {
-                                                                       if(query.length()>0) {
-                                                                               applyBatch(query);
-                                                                               justOne=true;
-                                                                       }
-                                                               }
-                                                               if(query.length()==0) {
-                                                                       query.append("BEGIN BATCH\n");
+                                                                       cqlBatch.flush();
                                                                }
+                                                               cqlBatch.preLoop();
+
                                                                // Split into fields, first turning Escaped values into something we can convert back from
                                                                char c=0;
                                                                boolean inQuote = false;
                                                                int fldcnt = 0;
-                                                               
                                                                for(int i=0;i<line.length();++i) {
                                                                        switch(c=line.charAt(i)) {
                                                                                case '"':
@@ -109,117 +160,64 @@ public class Upload extends Batch {
                                                                        }
                                                                }
                                                                addField(feed,fldcnt,array,sb);
-                                                               query.append(build(feed, array));
-                                                               
-                                                               if((++count % BATCH_LENGTH)==0 || justOne) {
-                                                                       applyBatch(query);
-                                                                       justOne=false;
-                                                               }
-                                                       }
-                                                       if(query.length()>0) {
-                                                               applyBatch(query);
+                                                               cqlBatch.inc().append(build(feed, array));
                                                        }
-                                                       
+                                                       cqlBatch.flush();
+                                               } catch (Exception t) {
+                                                       trans.error().log(t);
                                                } finally {
                                                        br.close();
-                                                       sb.setLength(0);
-                                                       query.setLength(0);
                                                }
-                                               
                                        } catch (IOException e) {
                                                trans.error().log(e);
-                                               e.printStackTrace();
                                        }
-
                                } else {
                                        trans.error().log("No file found: ", file.getAbsolutePath());
                                }
                        } finally {
                                tt.done();
                                System.err.flush();
-                               System.out.printf("\n%d applied in %d batches\n",count,batchCnt);
+                               msg = String.format("\n%d applied in %d batches\n",cqlBatch.total(), cqlBatch.batches());
+                               trans.info().log(msg);
+                               System.out.println(msg);
                        }
-
                }
 
        }
 
-       // APPROVALS
-       private static final String APPR_INS_FMT="  INSERT INTO authz.approval "
-                       + "(id,approver,last_notified,memo,operation,status,ticket,type,user) "
-                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] APPR_QUOTES = new Boolean[]{false,true,true,true,true,true,false,true,true};
-
-       // ARTIFACTS
-       private static final String ARTI_INS_FMT="  INSERT INTO authz.artifact "
-                       + "(mechid,machine,ca,dir,expires,notify,ns,os_user,renewdays,sans,sponsor,type) "
-                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] ARTI_QUOTES = new Boolean[]
-                       {true,true,true,true,true,true,true,true,false,false,true,false};
-       
-       // CREDS
-       private static final String CRED_INS_FMT="  INSERT INTO authz.cred "
-                       + "(id,type,expires,cred,notes,ns,other,prev) "
-                       + "VALUES (%s,%s,%s,%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] CRED_QUOTES = new Boolean[]
-                       {true,false,true,false,true,true,false,false};
-       
-       // NS
-       private static final String NS_INS_FMT="  INSERT INTO authz.ns "
-                       + "(name,description,parent,scope,type) "
-                       + "VALUES (%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] NS_QUOTES = new Boolean[]
-                       {true,true,true,false,false};
-
-       // x509
-       private static final String X509_INS_FMT="  INSERT INTO authz.x509 "
-                       + "(ca,serial,id,x500,x509) "
-                       + "VALUES (%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] X509_QUOTES = new Boolean[]
-                       {true,false,true,true,true};
-
-       // ROLE
-       private static final String ROLE_INS_FMT="  INSERT INTO authz.role "
-                       + "(ns,name,description,perms) "
-                       + "VALUES (%s,%s,%s,%s);\n";
-       private static final Boolean[] ROLE_QUOTES = new Boolean[]
-                       {true,true,true,false};
-       // ROLE
-       private static final String PERM_INS_FMT="  INSERT INTO authz.perm "
-                       + "(ns,type,instance,action,description,roles) "
-                       + "VALUES (%s,%s,%s,%s,%s,%s);\n";
-       private static final Boolean[] PERM_QUOTES = new Boolean[]
-                       {true,true,true,true,true,false};
-
 
        private String build(String feed, List<String> array) {
                String rv;
-               switch(feed) {
-                       case "approval":
-                               rv = String.format(APPR_INS_FMT,array.toArray());
-                               break;
-                       case "artifact":
-                               rv = String.format(ARTI_INS_FMT,array.toArray());
-                               break;
-                       case "cred":
-                               rv = String.format(CRED_INS_FMT,array.toArray());
-                               break;
-                       case "ns":
-                               rv = String.format(NS_INS_FMT,array.toArray());
-                               break;
-                       case "role":
-                               rv = String.format(ROLE_INS_FMT,array.toArray());
-                               break;
-                       case "perm":
-                               rv = String.format(PERM_INS_FMT,array.toArray());
-                               break;
-                       case "x509":
-                               rv = String.format(X509_INS_FMT,array.toArray());
-                               break;
-                       default:
-                               rv = "";
+               if(array.size()>0) {
+                       switch(feed) {
+                               case "approval":
+                                       rv = String.format(APPR_INS_FMT,array.toArray());
+                                       break;
+                               case "artifact":
+                                       rv = String.format(ARTI_INS_FMT,array.toArray());
+                                       break;
+                               case "cred":
+                                       rv = String.format(CRED_INS_FMT,array.toArray());
+                                       break;
+                               case "ns":
+                                       rv = String.format(NS_INS_FMT,array.toArray());
+                                       break;
+                               case "role":
+                                       rv = String.format(ROLE_INS_FMT,array.toArray());
+                                       break;
+                               case "perm":
+                                       rv = String.format(PERM_INS_FMT,array.toArray());
+                                       break;
+                               case "x509":
+                                       rv = String.format(X509_INS_FMT,array.toArray());
+                                       break;
+                               default:
+                                       rv = "";
+                       }
+                       array.clear();
+               } else {
+                       rv = ""; 
                }
-               array.clear();
                return rv;
        }
        
@@ -286,23 +284,6 @@ public class Upload extends Batch {
                }
        }
 
-       private void applyBatch(StringBuilder query) {
-               try {
-                       query.append("APPLY BATCH;");
-                       ResultSet rv = session.execute(query.toString());
-                       if(rv.wasApplied()) {
-                               System.out.print('.');
-                               if((++batchCnt % 60)==0) {
-                                       System.out.println();
-                               }
-                       } else {
-                               System.out.print("Data NOT APPLIED");
-                       }
-               } finally {
-                       query.setLength(0);
-               }
-       }
-
 
        @Override
        protected void _close(AuthzTrans trans) {