1 /*******************************************************************************
2 * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3 *******************************************************************************/
4 package com.att.authz.helpers;
6 import java.util.ArrayList;
8 import java.util.Iterator;
10 import java.util.TreeMap;
12 import com.att.dao.aaf.cass.UserRoleDAO;
13 import org.onap.aaf.inno.env.Env;
14 import org.onap.aaf.inno.env.TimeTaken;
15 import org.onap.aaf.inno.env.Trans;
16 import org.onap.aaf.inno.env.util.Chrono;
17 import com.datastax.driver.core.ResultSet;
18 import com.datastax.driver.core.Row;
19 import com.datastax.driver.core.Session;
20 import com.datastax.driver.core.SimpleStatement;
21 import com.datastax.driver.core.Statement;
23 public class UserRole implements Cloneable {
24 public static final List<UserRole> data = new ArrayList<UserRole>();
25 public static final TreeMap<String,List<UserRole>> byUser = new TreeMap<String,List<UserRole>>();
26 public static final TreeMap<String,List<UserRole>> byRole = new TreeMap<String,List<UserRole>>();
28 public final String user, role, ns, rname;
29 public final Date expires;
31 public UserRole(String user, String ns, String rname, Date expires) {
33 this.role = ns + '.' + rname;
36 this.expires = expires;
39 public UserRole(String user, String role, String ns, String rname, Date expires) {
44 this.expires = expires;
47 public static void load(Trans trans, Session session, Creator<UserRole> creator ) {
48 load(trans,session,creator,null);
51 public static void loadOneRole(Trans trans, Session session, Creator<UserRole> creator, String role) {
52 load(trans,session,creator,"role='" + role +"' ALLOW FILTERING;");
55 public static void loadOneUser(Trans trans, Session session, Creator<UserRole> creator, String user ) {
56 load(trans,session,creator,"role='"+ user +"';");
59 private static void load(Trans trans, Session session, Creator<UserRole> creator, String where) {
60 String query = creator.query(where);
61 trans.info().log( "query: " + query );
62 TimeTaken tt = trans.start("Read UserRoles", Env.REMOTE);
66 Statement stmt = new SimpleStatement( query );
67 results = session.execute(stmt);
73 Iterator<Row> iter = results.iterator();
75 tt = trans.start("Load UserRole", Env.SUB);
77 while(iter.hasNext()) {
80 UserRole ur = creator.create(row);
83 List<UserRole> lur = byUser.get(ur.user);
85 lur = new ArrayList<UserRole>();
86 byUser.put(ur.user, lur);
90 lur = byRole.get(ur.role);
92 lur = new ArrayList<UserRole>();
93 byRole.put(ur.role, lur);
101 trans.info().log("Found",count,"UserRoles");
107 public static Creator<UserRole> v2_0_11 = new Creator<UserRole>() {
109 public UserRole create(Row row) {
110 return new UserRole(row.getString(0), row.getString(1), row.getString(2),row.getString(3),row.getDate(4));
114 public String select() {
115 return "select user,role,ns,rname,expires from authz.user_role";
119 public UserRoleDAO.Data to() {
120 UserRoleDAO.Data urd = new UserRoleDAO.Data();
125 urd.expires = expires;
129 public String toString() {
130 return "\"" + user + "\",\"" + role + "\",\"" + ns + "\",\"" + rname + "\",\""+ Chrono.dateOnlyStamp(expires);