X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-cass%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fdao%2Fcass%2FFutureDAO.java;h=15c2b557183216a42e43866c1b587944d83ae406;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=6b0ea2df0998640ea7065385b7827de47b96915f;hpb=4b5a7d721d994a49057e9bfb403c7bff1b376660;p=aaf%2Fauthz.git diff --git a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/FutureDAO.java b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/FutureDAO.java index 6b0ea2df..15c2b557 100644 --- a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/FutureDAO.java +++ b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/FutureDAO.java @@ -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 { 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 { 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 { @@ -82,12 +85,14 @@ public class FutureDAO extends CassDAOImpl { @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 { 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 { // 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 { obj[++idx]=data.target; } },readConsistency); - - } - public Result> readByStartAndTarget(AuthzTrans trans, Date start, String target) throws DAOException { + public Result> 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 create(AuthzTrans trans, FutureDAO.Data data, String id) { + public Result 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 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 { 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"); } } - + }