Sonar Fixes, Formatting
[aaf/authz.git] / auth / auth-cass / src / main / java / org / onap / aaf / auth / dao / cass / FutureDAO.java
index 6b0ea2d..15c2b55 100644 (file)
@@ -4,12 +4,14 @@
  * ===========================================================================
  * 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.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -27,7 +29,6 @@ import java.util.List;
 import java.util.UUID;
 
 import org.onap.aaf.auth.dao.CassDAOImpl;
-import org.onap.aaf.auth.dao.DAOException;
 import org.onap.aaf.auth.dao.Loader;
 import org.onap.aaf.auth.env.AuthzTrans;
 import org.onap.aaf.auth.layer.Result;
@@ -37,18 +38,18 @@ import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Row;
 
 /**
- * FutureDAO stores Construction information to create 
+ * FutureDAO stores Construction information to create
  * elements at another time.
- * 
+ *
  * @author Jonathan
  * 8/20/2013
  */
 public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
     private static final String TABLE = "future";
     private final HistoryDAO historyDAO;
-//    private static String createString;
     private PSInfo psByStartAndTarget;
-    
+    public static final int KEYLIMIT = 1;
+
     public FutureDAO(AuthzTrans trans, Cluster cluster, String keyspace) {
         super(trans, FutureDAO.class.getSimpleName(),cluster, keyspace, Data.class,TABLE, readConsistency(trans,TABLE), writeConsistency(trans,TABLE));
         historyDAO = new HistoryDAO(trans, this);
@@ -61,14 +62,16 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
         init(trans);
     }
 
-    public static final int KEYLIMIT = 1;
+
     public static class Data {
         public UUID         id;
-        public String        target;
-        public String        memo;
-        public Date           start;
-        public Date           expires;
-        public ByteBuffer     construct;  //   this is a blob in cassandra
+        public String       target;
+        public String       memo;
+        public Date         start;
+        public Date         expires;
+        public String        target_key;
+        public Date            target_date;
+        public ByteBuffer   construct;  //   this is a blob in cassandra
     }
 
     private static class FLoader extends Loader<Data> {
@@ -82,12 +85,14 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
 
         @Override
     public Data load(Data data, Row row) {
-            data.id         = row.getUUID(0);
-            data.target        = row.getString(1);
-            data.memo       = row.getString(2);
-            data.start         = row.getTimestamp(3);
-            data.expires     = row.getTimestamp(4);
-            data.construct     = row.getBytes(5);
+            data.id           = row.getUUID(0);
+            data.target       = row.getString(1);
+            data.memo         = row.getString(2);
+            data.start        = row.getTimestamp(3);
+            data.expires      = row.getTimestamp(4);
+            data.target_key   = row.getString(5);
+            data.target_date  = row.getTimestamp(6);
+            data.construct    = row.getBytes(7);
             return data;
         }
 
@@ -104,6 +109,8 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
             obj[++idx] = data.memo;
             obj[++idx] = data.start;
             obj[++idx] = data.expires;
+            obj[++idx] = data.target_key;
+            obj[++idx] = data.target_date;
             obj[++idx] = data.construct;
         }
     }
@@ -112,13 +119,6 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
         // Set up sub-DAOs
         String[] helpers = setCRUD(trans, TABLE, Data.class, new FLoader(KEYLIMIT));
 
-        // Uh, oh.  Can't use "now()" in Prepared Statements (at least at this level)
-//        createString = "INSERT INTO " + TABLE + " ("+helpers[FIELD_COMMAS] +") VALUES (now(),";
-//
-//        // Need a specialty Creator to handle the "now()"
-//        replace(CRUD.Create, new PSInfo(trans, "INSERT INTO future (" +  helpers[FIELD_COMMAS] +
-//                    ") VALUES(now(),?,?,?,?,?)",new FLoader(0)));
-        
         // Other SELECT style statements... match with a local Method
         psByStartAndTarget = new PSInfo(trans, SELECT_SP + helpers[FIELD_COMMAS] +
                 " FROM future WHERE start <= ? and target = ? ALLOW FILTERING", new FLoader(2) {
@@ -130,31 +130,29 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
                 obj[++idx]=data.target;
             }
         },readConsistency);
-        
-
     }
 
-    public Result<List<Data>> readByStartAndTarget(AuthzTrans trans, Date start, String target) throws DAOException {
+    public Result<List<Data>> readByStartAndTarget(AuthzTrans trans, Date start, String target) {
         return psByStartAndTarget.read(trans, R_TEXT, new Object[]{start, target});
     }
 
     /**
      * Override create to add secondary ID to Subject in History, and create Data.ID, if it is null
      */
-    public Result<FutureDAO.Data> create(AuthzTrans trans,    FutureDAO.Data data, String id) {
+    public Result<FutureDAO.Data> create(AuthzTrans trans, FutureDAO.Data data, String id) {
         // If ID is not set (typical), create one.
-        if(data.id==null) {
+        if (data.id==null) {
             StringBuilder sb = new StringBuilder(trans.user());
             sb.append(data.target);
             sb.append(System.currentTimeMillis());
             data.id = UUID.nameUUIDFromBytes(sb.toString().getBytes());
         }
         Result<ResultSet> rs = createPS.exec(trans, C_TEXT, data);
-        if(rs.notOK()) {
+        if (rs.notOK()) {
             return Result.err(rs);
         }
         wasModified(trans, CRUD.create, data, null, id);
-        return Result.ok(data);    
+        return Result.ok(data);
     }
 
     /**
@@ -174,10 +172,10 @@ public class FutureDAO extends CassDAOImpl<AuthzTrans,FutureDAO.Data> {
         hd.target = TABLE;
         hd.subject = subject?override[1]:"";
         hd.memo = memo?String.format("%s by %s", override[0], hd.user):data.memo;
-    
-        if(historyDAO.create(trans, hd).status!=Status.OK) {
+
+        if (historyDAO.create(trans, hd).status!=Status.OK) {
             trans.error().log("Cannot log to History");
         }
     }
-    
+
 }