X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-batch%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fbatch%2Freports%2Fbodies%2FNotifyBody.java;h=ae7daa09c431ba9d893e2bd12f0a0c99d00e06a5;hb=d86e3224e6a5af2bd2b713f93bea5e6677d3ebc2;hp=453c2f2f6291312139d82ed4fca22a2d54786a50;hpb=b24f7e097f17761a5c1b02c4dbfe6ee7d78836dd;p=aaf%2Fauthz.git diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java index 453c2f2f..ae7daa09 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java @@ -29,13 +29,17 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +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.cadi.Access; @@ -46,17 +50,24 @@ public abstract class NotifyBody { private static final Map bodyMap = new HashMap<>(); protected Map>> rows; + protected final String env; + protected final String gui_url; + private final String name; private final String type; private String date; private int escalation; + private int count; - public NotifyBody(final String type, final String name) { + public NotifyBody(Access access, final String type, final String name) { rows = new TreeMap<>(); this.name = name; this.type = type; date=""; escalation = 1; + count = 0; + env = access.getProperty("CASS_ENV","DEVL"); + gui_url = access.getProperty("GUI_URL", ""); } public void store(List row) { @@ -87,6 +98,10 @@ public abstract class NotifyBody { return name; } + public String type() { + return type; + } + public String date() { return date; } @@ -116,6 +131,22 @@ public abstract class NotifyBody { */ protected abstract String user(List row); + /** + * Provide a context-sensitive Subject, which includes ENV as well as details + * + * @return + */ + public abstract String subject(); + + /** + * Record the fact that a particular Notification was marked as "sent" by Emailer. + * + * @param trans + * @param approver + * @param ln + */ + public abstract void record(AuthzTrans trans, StringBuilder query, String id, List notified, LastNotified ln); + /** * Get Notify Body based on key of * type|name @@ -147,60 +178,85 @@ public abstract class NotifyBody { Package pkg = NotifyBody.class.getPackage(); String path = pkg.getName().replace('.', '/'); URL url = cl.getResource(path); - if(url == null) { - throw new APIException("Cannot load resources from " + path); - } - File dir; - try { - dir = new File(url.toURI()); - } catch (URISyntaxException e) { - throw new APIException(e); + List classNames = new ArrayList<>(); + String urlString = url.toString(); + if(urlString.startsWith("jar:file:")) { + int exclam = urlString.lastIndexOf('!'); + JarFile jf = new JarFile(urlString.substring(9,exclam)); + try { + Enumeration jfe = jf.entries(); + while(jfe.hasMoreElements()) { + String name = jfe.nextElement().getName(); + if(name.startsWith(path) && name.endsWith(".class")) { + classNames.add(name.substring(0,name.length()-6).replace('/', '.')); + } + } + } finally { + jf.close(); + } + } else { + File dir = new File(url.getFile()); + for( String f : dir.list()) { + if(f.endsWith(".class")) { + classNames.add(pkg.getName()+'.'+f.substring(0,f.length()-6)); + } + } } - if(dir.exists()) { - String[] files = dir.list(); - if(files!=null) { - for(String sf : files) { - int dot = sf.indexOf('.'); - if(dot>=0) { - String cls = pkg.getName()+'.'+sf.substring(0,dot); - try { - Class c = cl.loadClass(cls); - if(c!=null) { - if(!Modifier.isAbstract(c.getModifiers())) { - Constructor cst = c.getConstructor(Access.class); - NotifyBody nb = (NotifyBody)cst.newInstance(access); - if(nb!=null) { - bodyMap.put("info|"+nb.name, nb); - bodyMap.put(nb.type+'|'+nb.name, nb); - } - } - } - } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); + for(String cls : classNames) { + try { + Class c = cl.loadClass(cls); + if(c!=null) { + if(!Modifier.isAbstract(c.getModifiers())) { + Constructor cst = c.getConstructor(Access.class); + NotifyBody nb = (NotifyBody)cst.newInstance(access); + if(nb!=null) { + bodyMap.put("info|"+nb.name, nb); + bodyMap.put(nb.type+'|'+nb.name, nb); } } } + } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); } } } - - protected void println(StringBuilder sb, int indent, Object ... objs) { + protected void print(StringBuilder sb, int indent, Object ... objs) { for(int i=0;i",current,""); + printCell(sb,indent,current); } + return current; // use to set prev... + } + + protected void printCell(StringBuilder sb, int indent, String current) { + println(sb,indent,"",current,""); + } + + public synchronized void inc() { + ++count; + } + + public int count() { + return count; } - }