Upgrade to latest oparent
[aaf/authz.git] / authz-batch / src / main / java / com / att / authz / UserRoleDataGeneration.java
1 /*******************************************************************************
2  * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3  *******************************************************************************/
4 package com.att.authz;
5
6 import java.io.IOException;
7 import java.util.Iterator;
8 import java.util.Random;
9 import java.util.UUID;
10
11 import com.att.authz.env.AuthzTrans;
12 import org.onap.aaf.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;
17
18 public class UserRoleDataGeneration extends Batch {
19
20         protected UserRoleDataGeneration(AuthzTrans trans) throws APIException, IOException {
21                 super(trans.env());
22                 session = cluster.connect();
23
24         }
25
26         @Override
27         protected void run(AuthzTrans trans) {
28                 
29                 String query = "select * from authz.history" ;
30         
31         env.info().log( "query: " + query );
32
33         Statement stmt = new SimpleStatement( query );
34         ResultSet results = session.execute(stmt);
35         int total=0;
36
37         Iterator<Row> iter = results.iterator();
38
39                 Random rand = new Random();
40                 
41                 int min = 1;
42                 int max = 32;
43         
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;
48                         
49                         String newId = modifiedTimeuid(row.getUUID("id").toString(), randomNum);
50                         String subject = row.getString("subject");
51                         String newSubject = subject.split("\\|")[1];
52  
53                         String newInsert = insertStmt(row, newId, "role", newSubject);
54                         Statement statement = new SimpleStatement(newInsert);
55                         session.executeAsync(statement);
56
57                         total++;                        
58                 }
59         }
60         
61         env.info().log(total+ " history elements inserted for user roles");
62     
63         }
64
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 (");
68                 sb.append(newId+",");
69                 sb.append("'"+row.getString("action")+"',");
70                 sb.append("'"+row.getString("memo")+"',");
71                 sb.append("null,");
72                 sb.append("'"+newSubject+"',");
73                 sb.append("'"+newTarget+"',");
74                 sb.append("'"+row.getString("user")+"',");
75                 sb.append(row.getInt("yr_mon"));
76                 sb.append(")");
77                 
78                 return sb.toString();
79         }
80
81         private String modifiedTimeuid(String origTimeuuid, int rand) {
82                 UUID uuid = UUID.fromString(origTimeuuid);
83                 
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.");
88                 
89                 UUID newUuid = new UUID(uuid.getMostSignificantBits(),newBottomBits);
90                 return newUuid.toString();
91         }
92
93         @Override
94         protected void _close(AuthzTrans trans) {
95         session.close();
96         aspr.info( "End UserRoleDataGeneration processing" );
97
98         }
99
100 }