1 /*******************************************************************************
2 * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3 *******************************************************************************/
4 package com.att.authz.helpers;
6 import java.util.Iterator;
8 import java.util.TreeMap;
10 import com.att.inno.env.Env;
11 import com.att.inno.env.TimeTaken;
12 import com.att.inno.env.Trans;
13 import com.datastax.driver.core.ResultSet;
14 import com.datastax.driver.core.Row;
15 import com.datastax.driver.core.Session;
16 import com.datastax.driver.core.SimpleStatement;
17 import com.datastax.driver.core.Statement;
19 public class NS implements Comparable<NS> {
20 public final static Map<String,NS> data = new TreeMap<String,NS>();
22 public final String name, description, parent;
23 public final int scope,type;
25 public NS(String name, String description, String parent, int type, int scope) {
27 this.description = description;
33 public static void load(Trans trans, Session session, Creator<NS> creator) {
35 "select name, description, parent, type, scope from authz.ns;"
39 public static void loadOne(Trans trans, Session session, Creator<NS> creator, String ns) {
41 ("select name, description, parent, type, scope from authz.ns WHERE name='"+ns+"';")
46 private static void load(Trans trans, Session session, String query, Creator<NS> creator) {
47 trans.info().log( "query: " + query );
51 tt = trans.start("Read Namespaces", Env.REMOTE);
53 Statement stmt = new SimpleStatement( query );
54 results = session.execute(stmt);
61 Iterator<Row> iter = results.iterator();
63 tt = trans.start("Load Namespaces", Env.SUB);
65 while(iter.hasNext()) {
67 NS ns = creator.create(row);
74 trans.info().log("Found",data.size(),"Namespaces");
79 public String toString() {
84 * @see java.lang.Object#hashCode()
87 public int hashCode() {
88 return name.hashCode();
92 * @see java.lang.Object#equals(java.lang.Object)
95 public boolean equals(Object obj) {
96 return name.equals(obj);
100 public int compareTo(NS o) {
101 return name.compareTo(o.name);
104 public static class NSSplit {
107 public NSSplit(String s, int dot) {
108 ns = s.substring(0,dot);
109 other = s.substring(dot+1);
112 public static NSSplit deriveParent(String dotted) {
113 if(dotted==null)return null;
114 for(int idx = dotted.lastIndexOf('.');idx>=0; idx=dotted.lastIndexOf('.',idx-1)) {
115 if(data.get(dotted.substring(0, idx))!=null) {
116 return new NSSplit(dotted,idx);
122 public static Creator<NS> v2_0_11 = new Creator<NS> () {
124 public NS create(Row row) {
125 return new NS(row.getString(0),row.getString(1), row.getString(2),row.getInt(3),row.getInt(4));
129 public String select() {
130 return "SELECT name, description, parent, type, scope FROM authz.ns ";