Sonar Fixes, Formatting
[aaf/authz.git] / auth / auth-cmd / src / main / java / org / onap / aaf / auth / cmd / role / ListByUser.java
index 7165de6..9657721 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,6 +21,9 @@
 
 package org.onap.aaf.auth.cmd.role;
 
+import java.util.Map;
+import java.util.TreeMap;
+
 import org.onap.aaf.auth.cmd.AAFcli;
 import org.onap.aaf.auth.cmd.Cmd;
 import org.onap.aaf.auth.cmd.Param;
@@ -30,10 +33,14 @@ import org.onap.aaf.cadi.LocatorException;
 import org.onap.aaf.cadi.client.Future;
 import org.onap.aaf.cadi.client.Rcli;
 import org.onap.aaf.cadi.client.Retryable;
+import org.onap.aaf.cadi.util.Split;
 import org.onap.aaf.misc.env.APIException;
 
+import aaf.v2_0.Perm;
 import aaf.v2_0.Perms;
+import aaf.v2_0.Role;
 import aaf.v2_0.Roles;
+import aaf.v2_0.UserRole;
 import aaf.v2_0.UserRoles;
 
 /**
@@ -42,58 +49,88 @@ import aaf.v2_0.UserRoles;
  *
  */
 public class ListByUser extends Cmd {
-       private static final String HEADER = "List Roles for User ";
-       
-       public ListByUser(List parent) {
-               super(parent,"user", 
-                               new Param("id",true),
-                               new Param("detail", false)); 
-       }
+    private static final String HEADER = "List Roles for User ";
+
+    public ListByUser(List parent) {
+        super(parent,"user",
+                new Param("id",true),
+                new Param("detail", false));
+    }
+
+    @Override
+    public int _exec( int idx, final String ... args) throws CadiException, APIException, LocatorException {
+        final String user=fullID(args[idx]);
+
+
+        return same(new Retryable<Integer>() {
+            @Override
+            public Integer code(Rcli<?> client) throws CadiException, APIException {
+                Perms perms=null;
+                UserRoles urs=null;
+                Roles roles = null;
+                int code;
+                Future<UserRoles> fur = client.read(
+                        "/authz/userRoles/user/"+user,
+                        getDF(UserRoles.class)
+                    );
+                if (fur.get(AAFcli.timeout())) {
+                    urs = fur.value;
+                    code = fur.code();
+                } else {
+                    error(fur);
+                    return fur.code();
+                }
+
+                if (aafcli.isDetailed()) {
+                    roles = new Roles();
+                    Future<Perms> fp = client.read(
+                            "/authz/perms/user/"+user+"?ns&force",
+                            getDF(Perms.class)
+                        );
+                    if (fp.get(AAFcli.timeout())) {
+                        Map<String, Role> rs = new TreeMap<>();
+                        perms = fp.value;
+                        for( Perm p : perms.getPerm()) {
+                            for(String sr : p.getRoles()) {
+                                Role r = rs.get(sr);
+                                if(r==null) {
+                                    r = new Role();
+                                    String[] split = Split.split('|', sr);
+                                    if(split.length>1) {
+                                        r.setNs(split[0]);
+                                        r.setName(split[1]);
+                                    } else {
+                                        r.setName(sr);
+                                    }
+                                    rs.put(sr, r);
+                                    roles.getRole().add(r);
+                                }
+                                r.getPerms().add(p);
+                            }
+                        }
+                    }
+                    code = fp.code();
+                } else {
+                    roles = new Roles();
+                    java.util.List<Role> lr = roles.getRole();
+                    Role r;
+                    for(UserRole ur : urs.getUserRole()) {
+                        r = new Role();
+                        r.setName(ur.getRole());
+                        lr.add(r);
+                    }
+                }
+
 
-       @Override
-       public int _exec( int idx, final String ... args) throws CadiException, APIException, LocatorException {
-               final String user=fullID(args[idx]);
-               
+                ((List)parent).report(roles,perms,urs,HEADER,user);
+                return code;
+            }
+        });
+    }
 
-               return same(new Retryable<Integer>() {
-                       @Override
-                       public Integer code(Rcli<?> client) throws CadiException, APIException {
-                               Perms perms=null;
-                               UserRoles urs=null;
-                               Future<Roles> fr = client.read(
-                                               "/authz/roles/user/"+user+(aafcli.isDetailed()?"?ns":""), 
-                                               getDF(Roles.class)
-                                               );
-                               Future<UserRoles> fur = client.read(
-                                               "/authz/userRoles/user/"+user,
-                                               getDF(UserRoles.class)
-                                       );
-                               if(fr.get(AAFcli.timeout())) {
-                                       if (aafcli.isDetailed()) {
-                                               Future<Perms> fp = client.read(
-                                                               "/authz/perms/user/"+user+(aafcli.isDetailed()?"?ns":""), 
-                                                               getDF(Perms.class)
-                                                       );
-                                               if(fp.get(AAFcli.timeout())) {
-                                                       perms = fp.value;
-                                               }
-                                       }
-                                       if (fur.get(AAFcli.timeout())) {
-                                               urs = fur.value;
-                                       }
-                                       
-                                       ((List)parent).report(fr.value,perms,urs,HEADER,user);
-                               } else {
-                                       error(fr);
-                               }
-                               return fr.code();
-                       }
-               });
-       }
-       
-       @Override
-       public void detailedHelp(int indent, StringBuilder sb) {
-               detailLine(sb,indent,HEADER);
-               api(sb,indent,HttpMethods.GET,"authz/roles/user/<user>",Roles.class,true);
-       }
+    @Override
+    public void detailedHelp(int indent, StringBuilder sb) {
+        detailLine(sb,indent,HEADER);
+        api(sb,indent,HttpMethods.GET,"authz/roles/user/<user>",Roles.class,true);
+    }
 }