X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-gui%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fgui%2Fpages%2FPendingRequestsShow.java;h=694fefdc19f6a42c0493b69d2086dbe09c4376b8;hb=fcc000fc501e9ce1415b5b074ae4587dea7998c0;hp=e55d803ce24423b393187f6726d65247c53b7c19;hpb=71037c39a37d3549dcfe31926832a657744fbe05;p=aaf%2Fauthz.git diff --git a/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/pages/PendingRequestsShow.java b/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/pages/PendingRequestsShow.java index e55d803c..694fefdc 100644 --- a/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/pages/PendingRequestsShow.java +++ b/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/pages/PendingRequestsShow.java @@ -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. @@ -23,7 +23,6 @@ package org.onap.aaf.auth.gui.pages; import java.io.IOException; import java.net.ConnectException; -import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; @@ -31,6 +30,7 @@ import java.util.Comparator; import java.util.List; import java.util.UUID; +import org.onap.aaf.auth.env.AuthzEnv; import org.onap.aaf.auth.env.AuthzTrans; import org.onap.aaf.auth.gui.AAF_GUI; import org.onap.aaf.auth.gui.BreadCrumbs; @@ -48,6 +48,7 @@ import org.onap.aaf.cadi.client.Rcli; import org.onap.aaf.cadi.client.Retryable; import org.onap.aaf.misc.env.APIException; import org.onap.aaf.misc.env.Env; +import org.onap.aaf.misc.env.Slot; import org.onap.aaf.misc.env.TimeTaken; import org.onap.aaf.misc.xgen.Cache; import org.onap.aaf.misc.xgen.DynamicCode; @@ -57,137 +58,153 @@ import aaf.v2_0.Approval; import aaf.v2_0.Approvals; public class PendingRequestsShow extends Page { - public static final String HREF = "/gui/myrequests"; - public static final String NAME = "MyRequests"; - static final String WEBPHONE = "http://webphone.att.com/cgi-bin/webphones.pl?id="; - private static DateFormat createdDF = new SimpleDateFormat("yyyy-MM-dd"); - - public PendingRequestsShow(final AAF_GUI gui, final Page ... breadcrumbs) throws APIException, IOException { - super(gui.env, NAME,HREF, NO_FIELDS, - new BreadCrumbs(breadcrumbs), - new NamedCode(true,"expedite") { - @Override - public void code(final Cache cache, final HTMLGen hgen) throws APIException, IOException { - cache.dynamic(hgen, new DynamicCode() { - @Override - public void code(final AAF_GUI gui, final AuthzTrans trans, final Cache cache, final HTMLGen hgen) throws APIException, IOException { - hgen - .leaf("p", "class=expedite_request").text("These are your submitted Requests that are awaiting Approval. ") - .br() - .text("To Expedite a Request: ") - .leaf("a","href=#expedite_directions","onclick=divVisibility('expedite_directions');") - .text("Click Here").end() - .divID("expedite_directions", "style=display:none"); - hgen - .incr(HTMLGen.OL) - .incr(HTMLGen.LI) - .leaf("a","href="+ApprovalForm.HREF+"?user="+trans.user(), "id=userApprove") - .text("Copy This Link") - .end() - .end() - .incr(HTMLGen.LI) - .text("Send it to the Approver Listed") - .end() - .end() - .text("NOTE: Using this link, the Approver will only see your requests. You only need to send this link once!") - .end() - .end(); - } - }); - } - }, - new Table("Pending Requests",gui.env.newTransNoAvg(),new Model(), "class=std") - ); - - - } - - /** - * Implement the Table Content for Requests by User - * - * @author Jeremiah - * - */ - private static class Model extends TableData { - private static final String CSP_ATT_COM = "@csp.att.com"; - final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L; - private static final String[] headers = new String[] {"Request Date","Status","Memo","Approver"}; - - @Override - public String[] headers() { - return headers; - } - - @Override - public Cells get(final AuthzTrans trans, final AAF_GUI gui) { - final ArrayList rv = new ArrayList(); - try { - gui.clientAsUser(trans.getUserPrincipal(), new Retryable() { - @Override - public Void code(Rcli client)throws CadiException, ConnectException, APIException { - TimeTaken tt = trans.start("AAF Get Approvals by User",Env.REMOTE); - try { - Future fa = client.read("/authz/approval/user/"+trans.user(),gui.getDF(Approvals.class)); - if(fa.get(5000)) { - tt.done(); - tt = trans.start("Load Data", Env.SUB); - if(fa.value!=null) { - List approvals = fa.value.getApprovals(); - Collections.sort(approvals, new Comparator() { - @Override - public int compare(Approval a1, Approval a2) { - UUID id1 = UUID.fromString(a1.getId()); - UUID id2 = UUID.fromString(a2.getId()); - return id1.timestamp()<=id2.timestamp()?1:-1; - } - }); - - String prevTicket = null; - for(Approval a : approvals) { - String approver = a.getApprover(); - String approverShort = approver.substring(0,approver.indexOf('@')); - - AbsCell tsCell = null; - String ticket = a.getTicket(); - if (ticket==null || ticket.equals(prevTicket)) { - tsCell = AbsCell.Null; - } else { - UUID id = UUID.fromString(a.getId()); - tsCell = new RefCell(createdDF.format((id.timestamp() - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH)/10000), - RequestDetail.HREF + "?ticket=" + ticket,false); - prevTicket = ticket; - } - - AbsCell approverCell = null; - if (approver.endsWith(CSP_ATT_COM)) { - approverCell = new RefCell(approver, WEBPHONE + approverShort,true); - } else { - approverCell = new TextCell(approver); - } - AbsCell[] sa = new AbsCell[] { - tsCell, - new TextCell(a.getStatus()), - new TextCell(a.getMemo()), - approverCell - }; - rv.add(sa); - } - } - } else { - gui.writeError(trans, fa, null, 0); - } - } finally { - tt.done(); - } - - - return null; - } - }); - } catch (Exception e) { - trans.error().log(e); - } - return new Cells(rv,null); - } - } + public static final String HREF = "/gui/myrequests"; + public static final String NAME = "MyRequests"; + private static final String[] FIELDS = new String[] {"as_user"}; // as_user Checked in Display + private static final String AS_USER=NAME+".as_user"; + + public PendingRequestsShow(final AAF_GUI gui, final Page ... breadcrumbs) throws APIException, IOException { + super(gui.env, NAME,HREF, FIELDS, + new BreadCrumbs(breadcrumbs), + new TopOfPage(gui.env,true, "expedite"), + new Table("Pending Requests",gui.env.newTransNoAvg(),new Model(gui.env), "class=std") + ); + } + + private static final class TopOfPage extends NamedCode { + private Slot sAsUser; + + private TopOfPage(AuthzEnv env, boolean no_cache, String name) { + super(no_cache, name); + sAsUser = env.slot(AS_USER); + } + + @Override + public void code(final Cache cache, final HTMLGen hgen) throws APIException, IOException { + cache.dynamic(hgen, new DynamicCode() { + @Override + public void code(final AAF_GUI gui, final AuthzTrans trans, final Cache cache, final HTMLGen hgen) throws APIException, IOException { + String user = trans.get(sAsUser,null); + if(user==null) { + user=trans.user(); + } else { + hgen.incr(HTMLGen.H3,"class=center").text("Displaying for " + user).end(); + } + + hgen + .leaf(HTMLGen.P, "class=expedite_request").text("These are your submitted Requests that are awaiting Approval. ") + .br() + .text("To Expedite a Request: ") + .leaf("a","href=#expedite_directions","onclick=divVisibility('expedite_directions');") + .text("Click Here").end() + .divID("expedite_directions", "style=display:none"); + + hgen + .incr(HTMLGen.OL) + .incr(HTMLGen.LI) + .leaf("a","href="+ApprovalForm.HREF+"?user="+user, "id=userApprove") + .text("Copy This Link") + .end() + .end() + .incr(HTMLGen.LI) + .text("Send it to the Approver Listed") + .end() + .end() + .text("NOTE: Using this link, the Approver will only see your requests. You only need to send this link once!") + .end() + .end(); + } + }); + } + } + + /** + * Implement the Table Content for Requests by User + * + * @author Jeremiah + * + */ + private static class Model extends TableData { + final static long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L; + private final Slot sAsUser; + private static final String[] headers = new String[] {"Request Date","Status","Memo","Approver"}; + + public Model(AuthzEnv env) { + sAsUser = env.slot(AS_USER); + } + + @Override + public String[] headers() { + return headers; + } + + @Override + public Cells get(final AuthzTrans trans, final AAF_GUI gui) { + final ArrayList rv = new ArrayList<>(); + try { + gui.clientAsUser(trans.getUserPrincipal(), new Retryable() { + @Override + public Void code(Rcli client)throws CadiException, ConnectException, APIException { + final String user = trans.get(sAsUser,trans.user()); + + TimeTaken tt = trans.start("AAF Get Approvals by User",Env.REMOTE); + try { + Future fa = client.read("/authz/approval/user/"+user,gui.getDF(Approvals.class)); + if (fa.get(5000)) { + tt.done(); + tt = trans.start("Load Data", Env.SUB); + if (fa.value!=null) { + List approvals = fa.value.getApprovals(); + Collections.sort(approvals, new Comparator() { + @Override + public int compare(Approval a1, Approval a2) { + UUID id1 = UUID.fromString(a1.getId()); + UUID id2 = UUID.fromString(a2.getId()); + return id1.timestamp()<=id2.timestamp()?1:-1; + } + }); + + String prevTicket = null; + for (Approval a : approvals) { + String approver = a.getApprover(); + + AbsCell tsCell = null; + String ticket = a.getTicket(); + if (ticket==null || ticket.equals(prevTicket)) { + tsCell = AbsCell.Null; + } else { + UUID id = UUID.fromString(a.getId()); + // Sonar says SimpleDate should not be static + tsCell = new RefCell(new SimpleDateFormat("yyyy-MM-dd").format((id.timestamp() - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH)/10000), + RequestDetail.HREF + "?ticket=" + ticket,false); + prevTicket = ticket; + } + + AbsCell approverCell = new TextCell(approver); + AbsCell[] sa = new AbsCell[] { + tsCell, + new TextCell(a.getStatus()), + new TextCell(a.getMemo()), + approverCell + }; + rv.add(sa); + } + } + } else { + gui.writeError(trans, fa, null, 0); + } + } finally { + tt.done(); + } + + + return null; + } + }); + } catch (Exception e) { + trans.error().log(e); + } + return new Cells(rv,null); + } + } }