Upgrade to latest oparent
[aaf/authz.git] / authz-batch / src / main / java / com / att / authz / helpers / Role.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.HashSet;
7 import java.util.Iterator;
8 import java.util.Set;
9 import java.util.TreeMap;
10
11 import org.onap.aaf.inno.env.Env;
12 import org.onap.aaf.inno.env.TimeTaken;
13 import org.onap.aaf.inno.env.Trans;
14 import com.datastax.driver.core.ResultSet;
15 import com.datastax.driver.core.Row;
16 import com.datastax.driver.core.Session;
17 import com.datastax.driver.core.SimpleStatement;
18 import com.datastax.driver.core.Statement;
19
20 public class Role implements Comparable<Role> {
21     public static final TreeMap<Role,Set<String>> data = new TreeMap<Role,Set<String>>();
22     public static final TreeMap<String,Role> keys = new TreeMap<String,Role>();
23
24         public final String ns, name, description;
25         private String full, encode;
26         public final Set<String> perms;
27         
28         public Role(String full) {
29                 ns = name = description = "";
30                 this.full = full;
31                 perms = new HashSet<String>();
32         }
33         
34         public Role(String ns, String name, String description,Set<String> perms) {
35                 this.ns = ns;
36                 this.name = name;
37                 this.description = description;
38                 this.full = null;
39                 this.encode = null;
40                 this.perms = perms;
41         }
42         
43         public String encode() {
44                 if(encode==null) {
45                         encode = ns + '|' + name;
46                 } 
47                 return encode;
48         }
49
50         public String fullName() {
51                 if(full==null) {
52                         full = ns + '.' + name;
53                 } 
54                 return full;
55         }
56
57         public static void load(Trans trans, Session session ) {
58                 load(trans,session,"select ns, name, description, perms from authz.role;");
59         }
60
61         public static void loadOneNS(Trans trans, Session session, String ns ) {
62                 load(trans,session,"select ns, name, description, perms from authz.role WHERE ns='" + ns + "';");
63         }
64
65         private static void load(Trans trans, Session session, String query) {
66         trans.info().log( "query: " + query );
67         TimeTaken tt = trans.start("Read Roles", Env.REMOTE);
68        
69         ResultSet results;
70                 try {
71                 Statement stmt = new SimpleStatement( query );
72                 results = session.execute(stmt);
73         } finally {
74                 tt.done();
75         }
76
77         try {
78                 Iterator<Row> iter = results.iterator();
79                 Row row;
80                 tt = trans.start("Load Roles", Env.SUB);
81                 try {
82                         while(iter.hasNext()) {
83                                 row = iter.next();
84                                 Role rk =new Role(row.getString(0),row.getString(1), row.getString(2),row.getSet(3,String.class));
85                                 keys.put(rk.encode(), rk);
86                                 data.put(rk,rk.perms);
87                         }
88                 } finally {
89                         tt.done();
90                 }
91         } finally {
92                 trans.info().log("Found",data.size(),"roles");
93         }
94
95
96         }
97         public String toString() {
98                 return encode();
99         }
100
101         /* (non-Javadoc)
102          * @see java.lang.Object#hashCode()
103          */
104         @Override
105         public int hashCode() {
106                 return encode().hashCode();
107         }
108
109         /* (non-Javadoc)
110          * @see java.lang.Object#equals(java.lang.Object)
111          */
112         @Override
113         public boolean equals(Object obj) {
114                 return encode().equals(obj);
115         }
116
117         @Override
118         public int compareTo(Role o) {
119                 return encode().compareTo(o.encode());
120         }
121
122         public static String fullName(String role) {
123                 return role.replace('|', '.');
124         }
125 }