Upgrade to latest oparent
[aaf/authz.git] / authz-batch / src / main / java / com / att / authz / helpers / UserRole.java
1 /*******************************************************************************
2  * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3  *******************************************************************************/
4 package com.att.authz.helpers;
5
6 import java.util.ArrayList;
7 import java.util.Date;
8 import java.util.Iterator;
9 import java.util.List;
10 import java.util.TreeMap;
11
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;
22
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>>();
27
28         public final String user, role, ns, rname;
29         public final Date expires;
30
31         public UserRole(String user, String ns, String rname, Date expires) {
32                 this.user = user;
33                 this.role = ns + '.' + rname;
34                 this.ns = ns;
35                 this.rname = rname;
36                 this.expires = expires;
37         }
38
39         public UserRole(String user, String role, String ns, String rname, Date expires) {
40                 this.user = user;
41                 this.role = role;
42                 this.ns = ns;
43                 this.rname = rname;
44                 this.expires = expires;
45         }
46
47         public static void load(Trans trans, Session session, Creator<UserRole> creator ) {
48                 load(trans,session,creator,null);
49         }
50
51         public static void loadOneRole(Trans trans, Session session, Creator<UserRole> creator, String role) {
52                 load(trans,session,creator,"role='" + role +"' ALLOW FILTERING;");
53         }
54         
55         public static void loadOneUser(Trans trans, Session session, Creator<UserRole> creator, String user ) {
56                 load(trans,session,creator,"role='"+ user +"';");
57         }
58
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);
63        
64         ResultSet results;
65                 try {
66                 Statement stmt = new SimpleStatement( query );
67                 results = session.execute(stmt);
68         } finally {
69                 tt.done();
70         }
71                 int count = 0;
72         try {
73                 Iterator<Row> iter = results.iterator();
74                 Row row;
75                 tt = trans.start("Load UserRole", Env.SUB);
76                 try {
77                         while(iter.hasNext()) {
78                                 ++count;
79                                 row = iter.next();
80                                 UserRole ur = creator.create(row);
81                                 data.add(ur);
82                                 
83                                 List<UserRole> lur = byUser.get(ur.user);
84                                 if(lur==null) {
85                                         lur = new ArrayList<UserRole>();
86                                         byUser.put(ur.user, lur);
87                                 }
88                                 lur.add(ur);
89                                 
90                                 lur = byRole.get(ur.role);
91                                 if(lur==null) {
92                                         lur = new ArrayList<UserRole>();
93                                         byRole.put(ur.role, lur);
94                                 }
95                                 lur.add(ur);
96                         }
97                 } finally {
98                         tt.done();
99                 }
100         } finally {
101                 trans.info().log("Found",count,"UserRoles");
102         }
103
104
105         }
106
107         public static Creator<UserRole> v2_0_11 = new Creator<UserRole>() {
108                 @Override
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));
111                 }
112
113                 @Override
114                 public String select() {
115                         return "select user,role,ns,rname,expires from authz.user_role";
116                 }
117         };
118
119         public UserRoleDAO.Data to() {
120                 UserRoleDAO.Data urd = new UserRoleDAO.Data();
121                 urd.user = user;
122                 urd.role = role;
123                 urd.ns = ns;
124                 urd.rname = rname;
125                 urd.expires = expires;
126                 return urd;
127         }
128         
129         public String toString() {
130                 return "\"" + user + "\",\"" + role + "\",\""  + ns + "\",\"" + rname + "\",\""+ Chrono.dateOnlyStamp(expires);
131         }
132
133 }