1 /*******************************************************************************
2 * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3 *******************************************************************************/
6 import java.io.IOException;
7 import java.util.Iterator;
8 import java.util.Random;
11 import com.att.authz.env.AuthzTrans;
12 import com.att.inno.env.APIException;
13 import com.datastax.driver.core.ResultSet;
14 import com.datastax.driver.core.Row;
15 import com.datastax.driver.core.SimpleStatement;
16 import com.datastax.driver.core.Statement;
18 public class UserRoleDataGeneration extends Batch {
20 protected UserRoleDataGeneration(AuthzTrans trans) throws APIException, IOException {
22 session = cluster.connect();
27 protected void run(AuthzTrans trans) {
29 String query = "select * from authz.history" ;
31 env.info().log( "query: " + query );
33 Statement stmt = new SimpleStatement( query );
34 ResultSet results = session.execute(stmt);
37 Iterator<Row> iter = results.iterator();
39 Random rand = new Random();
44 while( iter.hasNext() ) {
45 Row row = iter.next();
46 if (row.getString("target").equals("user_role")) {
47 int randomNum = rand.nextInt((max - min) + 1) + min;
49 String newId = modifiedTimeuid(row.getUUID("id").toString(), randomNum);
50 String subject = row.getString("subject");
51 String newSubject = subject.split("\\|")[1];
53 String newInsert = insertStmt(row, newId, "role", newSubject);
54 Statement statement = new SimpleStatement(newInsert);
55 session.executeAsync(statement);
61 env.info().log(total+ " history elements inserted for user roles");
65 private String insertStmt(Row row, String newId, String newTarget, String newSubject) {
66 StringBuilder sb = new StringBuilder();
67 sb.append("INSERT INTO authz.history (id,action,memo,reconstruct,subject,target,user,yr_mon) VALUES (");
69 sb.append("'"+row.getString("action")+"',");
70 sb.append("'"+row.getString("memo")+"',");
72 sb.append("'"+newSubject+"',");
73 sb.append("'"+newTarget+"',");
74 sb.append("'"+row.getString("user")+"',");
75 sb.append(row.getInt("yr_mon"));
81 private String modifiedTimeuid(String origTimeuuid, int rand) {
82 UUID uuid = UUID.fromString(origTimeuuid);
84 long bottomBits = uuid.getLeastSignificantBits();
85 long newBottomBits = bottomBits + (1 << rand);
86 if (newBottomBits - bottomBits == 0)
87 env.info().log("Duplicate!\t"+uuid + " not duplicated for role history function.");
89 UUID newUuid = new UUID(uuid.getMostSignificantBits(),newBottomBits);
90 return newUuid.toString();
94 protected void _close(AuthzTrans trans) {
96 aspr.info( "End UserRoleDataGeneration processing" );