1 /*******************************************************************************
2 * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3 *******************************************************************************/
4 package com.att.authz.gui.pages;
6 import java.io.IOException;
7 import java.net.ConnectException;
8 import java.util.ArrayList;
9 import java.util.Collections;
10 import java.util.Comparator;
11 import java.util.List;
13 import com.att.authz.env.AuthzEnv;
14 import com.att.authz.env.AuthzTrans;
15 import com.att.authz.gui.AuthGUI;
16 import com.att.authz.gui.BreadCrumbs;
17 import com.att.authz.gui.Page;
18 import com.att.authz.gui.Table;
19 import com.att.authz.gui.Table.Cells;
20 import com.att.authz.gui.table.AbsCell;
21 import com.att.authz.gui.table.RefCell;
22 import com.att.cadi.CadiException;
23 import com.att.cadi.client.Future;
24 import com.att.cadi.client.Rcli;
25 import com.att.cadi.client.Retryable;
26 import com.att.inno.env.APIException;
27 import com.att.inno.env.Env;
28 import com.att.inno.env.Slot;
29 import com.att.inno.env.TimeTaken;
32 import aaf.v2_0.Nss.Ns;
34 public class NssShow extends Page {
35 public static final String HREF = "/gui/mynamespaces";
37 public NssShow(final AuthGUI gui, final Page ... breadcrumbs) throws APIException, IOException {
38 super(gui.env, "MyNamespaces",HREF, NO_FIELDS,
39 new BreadCrumbs(breadcrumbs),
40 new Table<AuthGUI,AuthzTrans>("Namespaces I administer",gui.env.newTransNoAvg(),new Model("admin",gui.env),
41 "class=std", "style=display: inline-block; width: 45%; margin: 10px;"),
42 new Table<AuthGUI,AuthzTrans>("Namespaces I own",gui.env.newTransNoAvg(),new Model("responsible",gui.env),
43 "class=std", "style=display: inline-block; width: 45%; margin: 10px;"));
46 private static class Model implements Table.Data<AuthGUI,AuthzTrans> {
47 private String[] headers;
48 private String privilege = null;
49 public final Slot sNssByUser;
50 private boolean isAdmin;
52 public Model(String privilege,AuthzEnv env) {
54 headers = new String[] {privilege};
55 this.privilege = privilege;
56 isAdmin = "admin".equals(privilege);
57 sNssByUser = env.slot("NSS_SHOW_MODEL_DATA");
61 public String[] headers() {
66 public Cells get(final AuthGUI gui, final AuthzTrans trans) {
67 ArrayList<AbsCell[]> rv = new ArrayList<AbsCell[]>();
68 List<Ns> nss = trans.get(sNssByUser, null);
70 TimeTaken tt = trans.start("AAF Nss by User for " + privilege,Env.REMOTE);
72 nss = gui.clientAsUser(trans.getUserPrincipal(), new Retryable<List<Ns>>() {
74 public List<Ns> code(Rcli<?> client) throws CadiException, ConnectException, APIException {
76 Future<Nss> fp = client.read("/authz/nss/either/" + trans.user(),gui.nssDF);
77 if(fp.get(AuthGUI.TIMEOUT)) {
78 TimeTaken tt = trans.start("Load Data for " + privilege, Env.SUB);
81 nss = fp.value.getNs();
82 Collections.sort(nss, new Comparator<Ns>() {
83 public int compare(Ns ns1, Ns ns2) {
84 return ns1.getName().compareToIgnoreCase(ns2.getName());
87 trans.put(sNssByUser,nss);
93 gui.writeError(trans, fp, null);
98 } catch (Exception e) {
107 if((isAdmin && !n.getAdmin().isEmpty())
108 || (!isAdmin && !n.getResponsible().isEmpty())) {
109 AbsCell[] sa = new AbsCell[] {
110 new RefCell(n.getName(),NsDetail.HREF
111 +"?name="+n.getName()),
118 return new Cells(rv,null);