/** * ============LICENSE_START==================================================== * org.onap.aaf * =========================================================================== * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. * =========================================================================== * 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. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END==================================================== * */ package org.onap.aaf.auth.batch.reports.bodies; import java.io.IOException; import java.util.Date; import java.util.List; import org.onap.aaf.auth.batch.helpers.LastNotified; import org.onap.aaf.auth.batch.reports.Notify; import org.onap.aaf.auth.env.AuthzTrans; import org.onap.aaf.auth.org.Organization.Identity; import org.onap.aaf.auth.org.OrganizationException; import org.onap.aaf.cadi.Access; import org.onap.aaf.misc.env.util.Chrono; public abstract class NotifyURBody extends NotifyBody { private final String explanation; public NotifyURBody(Access access, String name) throws IOException { super(access,"ur",name); // Default explanation = "The Roles for the IDs associated with you will expire on the dates shown. " + "If the role membership is allowed to expire, " + "the ID will no longer have the permissions associated with that role.

" + "It is the responsibility of the Designated Approvers to approve, but you can monitor " + "their progress by clicking the ID Link."; } @Override public boolean body(AuthzTrans trans, StringBuilder sb, int indent, Notify n, String id) { String fullname = "n/a"; String kind = "Name"; try { Identity identity = trans.org().getIdentity(trans, id); if(identity==null) { trans.warn().printf("Cannot find %s in Organization",id); } else { fullname = identity.fullName(); if(!identity.isPerson()) { if((identity = identity.responsibleTo())!=null) { kind = "AppID Sponsor"; fullname = identity.fullName(); } } } } catch (OrganizationException e) { trans.error().log(e); fullname = "n/a"; } println(sb,indent,explanation); println(sb,indent,"

"); println(sb,indent,""); indent+=2; println(sb,indent,""); indent+=2; println(sb,indent,""); println(sb,indent,""); println(sb,indent,""); println(sb,indent,""); indent-=2; println(sb,indent,""); String name = null; String fqi = null; for(List row : rows.get(id)) { println(sb,indent,""); indent+=2; name = printCell(sb,indent,fullname,name); String rid = row.get(1); String fqiCell = "" + rid + ""; fqi = printCell(sb,indent,fqiCell,fqi); printCell(sb,indent,row.get(2)); Date expires = new Date(Long.parseLong(row.get(6))); printCell(sb,indent,Chrono.niceUTCStamp(expires)); indent-=2; println(sb,indent,""); } indent-=2; println(sb,indent,"
"+kind+"Fully Qualified IDRoleExpires
"); return true; } @Override public void record(AuthzTrans trans, StringBuilder query, String id, List notified, LastNotified ln) { for(List row : rows.get(id)) { for(String n : notified) { // Need to match LastNotified Key ... ur.user() + '|'+ur.role(); ln.update(query, n, row.get(0), row.get(1)+'|'+row.get(2)); } } } @Override public String user(List row) { if( (row != null) && row.size()>1) { return row.get(1); } return null; } }