X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2Fbeans%2FGroup.java;h=0b7e0655e0f02f6398baa1d47df4bef4a402f3bf;hb=68a9ca240970fceaf12bbe91b7bad8e1d98ecd93;hp=35363094d04be029d77e1f1e3328eb81bf264977;hpb=58f50f8f96d673513c40af8c6ff115a4424e66a2;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java index 35363094..0b7e0655 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java @@ -23,18 +23,20 @@ package org.onap.dmaap.datarouter.provisioning.beans; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import java.io.InvalidObjectException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; -import java.util.*; - -import org.apache.log4j.Logger; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Objects; import org.json.JSONObject; -import org.onap.dmaap.datarouter.provisioning.utils.DB; -import org.onap.dmaap.datarouter.provisioning.utils.URLUtilities; +import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils; /** * The representation of a Subscription. Subscriptions can be retrieved from the DB, or stored/updated in the DB. @@ -42,9 +44,12 @@ import org.onap.dmaap.datarouter.provisioning.utils.URLUtilities; * @author vikram * @version $Id: Group.java,v 1.0 2016/07/19 */ + public class Group extends Syncable { - private static Logger intlogger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal"); - private static int next_groupid = getMaxGroupID() + 1; + + private static final String GROUP_ID_CONST = "groupid"; + private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog"); + private static int nextGroupid = getMaxGroupID() + 1; private int groupid; private String authid; @@ -52,139 +57,18 @@ public class Group extends Syncable { private String description; private String classification; private String members; - private Date last_mod; - - - public static Group getGroupMatching(Group gup) { - String sql = String.format( - "select * from GROUPS where NAME='%s'", - gup.getName() - ); - List list = getGroupsForSQL(sql); - return list.size() > 0 ? list.get(0) : null; - } - - public static Group getGroupMatching(Group gup, int groupid) { - String sql = String.format( - "select * from GROUPS where NAME = '%s' and GROUPID != %d ", - gup.getName(), - gup.getGroupid() - ); - List list = getGroupsForSQL(sql); - return list.size() > 0 ? list.get(0) : null; - } - - public static Group getGroupById(int id) { - String sql = "select * from GROUPS where GROUPID = " + id; - List list = getGroupsForSQL(sql); - return list.size() > 0 ? list.get(0) : null; - } - - public static Group getGroupByAuthId(String id) { - String sql = "select * from GROUPS where AUTHID = '" + id + "'"; - List list = getGroupsForSQL(sql); - return list.size() > 0 ? list.get(0) : null; - } - - public static Collection getAllgroups() { - return getGroupsForSQL("select * from GROUPS"); - } - - private static List getGroupsForSQL(String sql) { - List list = new ArrayList(); - try { - DB db = new DB(); - @SuppressWarnings("resource") - Connection conn = db.getConnection(); - try(Statement stmt = conn.createStatement()) { - try(ResultSet rs = stmt.executeQuery(sql)) { - while (rs.next()) { - Group group = new Group(rs); - list.add(group); - } - } - } - db.release(conn); - } catch (SQLException e) { - intlogger.error("SQLException " + e.getMessage()); - } - return list; - } - - public static int getMaxGroupID() { - int max = 0; - try { - DB db = new DB(); - @SuppressWarnings("resource") - Connection conn = db.getConnection(); - try(Statement stmt = conn.createStatement()) { - try(ResultSet rs = stmt.executeQuery("select MAX(groupid) from GROUPS")) { - if (rs.next()) { - max = rs.getInt(1); - } - } - } - db.release(conn); - } catch (SQLException e) { - intlogger.info("getMaxSubID: " + e.getMessage()); - intlogger.error("SQLException " + e.getMessage()); - } - return max; - } - - public static Collection getGroupsByClassfication(String classfication) { - List list = new ArrayList<>(); - String sql = "select * from GROUPS where classification = ?"; - try { - DB db = new DB(); - @SuppressWarnings("resource") - Connection conn = db.getConnection(); - try(PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, classfication); - try(ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - int groupid = rs.getInt("groupid"); - - } - } - } - db.release(conn); - } catch (SQLException e) { - intlogger.error("SQLException " + e.getMessage()); - } - return list; - } - - /** - * Return a count of the number of active subscriptions in the DB. - * - * @return the count - */ - public static int countActiveSubscriptions() { - int count = 0; - try { - DB db = new DB(); - @SuppressWarnings("resource") - Connection conn = db.getConnection(); - try(Statement stmt = conn.createStatement()) { - try(ResultSet rs = stmt.executeQuery("select count(*) from SUBSCRIPTIONS")) { - if (rs.next()) { - count = rs.getInt(1); - } - } - } - db.release(conn); - } catch (SQLException e) { - intlogger.warn("PROV0008 countActiveSubscriptions: " + e.getMessage()); - intlogger.error("SQLException " + e.getMessage()); - } - return count; - } + private Date lastMod; public Group() { this("", "", ""); } + /** + * Group constructor. + * @param name group name + * @param desc group description + * @param members group members + */ public Group(String name, String desc, String members) { this.groupid = -1; this.authid = ""; @@ -192,10 +76,15 @@ public class Group extends Syncable { this.description = desc; this.members = members; this.classification = ""; - this.last_mod = new Date(); + this.lastMod = new Date(); } + /** + * Group constructor from ResultSet. + * @param rs ResultSet + * @throws SQLException in case of SQL statement error + */ public Group(ResultSet rs) throws SQLException { this.groupid = rs.getInt("GROUPID"); this.authid = rs.getString("AUTHID"); @@ -203,15 +92,19 @@ public class Group extends Syncable { this.description = rs.getString("DESCRIPTION"); this.classification = rs.getString("CLASSIFICATION"); this.members = rs.getString("MEMBERS"); - this.last_mod = rs.getDate("LAST_MOD"); + this.lastMod = rs.getDate("LAST_MOD"); } - + /** + * Group constructor for JSONObject. + * @param jo JSONObject + * @throws InvalidObjectException in case of JSON error + */ public Group(JSONObject jo) throws InvalidObjectException { this("", "", ""); try { - // The JSONObject is assumed to contain a vnd.att-dr.group representation - this.groupid = jo.optInt("groupid", -1); + // The JSONObject is assumed to contain a vnd.dmaap-dr.group representation + this.groupid = jo.optInt(GROUP_ID_CONST, -1); String gname = jo.getString("name"); String gdescription = jo.getString("description"); @@ -221,22 +114,107 @@ public class Group extends Syncable { this.classification = jo.getString("classification"); this.members = jo.getString("members"); - if (gname.length() > 50) + if (gname.length() > 50) { throw new InvalidObjectException("Group name is too long"); - if (gdescription.length() > 256) + } + if (gdescription.length() > 256) { throw new InvalidObjectException("Group Description is too long"); + } } catch (InvalidObjectException e) { throw e; } catch (Exception e) { - throw new InvalidObjectException("invalid JSON: " + e.getMessage()); + intlogger.error("Invalid JSON: " + e.getMessage(), e); + throw new InvalidObjectException("Invalid JSON: " + e.getMessage()); + } + } + + /** + * Get a group frpm DB. + * @param gup group object + * @return Group object + */ + public static Group getGroupMatching(Group gup) { + String sql = String.format( + "select * from GROUPS where NAME='%s'", + gup.getName() + ); + List list = getGroupsForSQL(sql); + return !list.isEmpty() ? list.get(0) : null; + } + + /** + * Get a group from DB using name and groupid. + * @param gup group object + * @param groupid id of group + * @return group object + */ + public static Group getGroupMatching(Group gup, int groupid) { + String sql = String.format( + "select * from GROUPS where NAME = '%s' and GROUPID != %d ", gup.getName(), groupid); + List list = getGroupsForSQL(sql); + return !list.isEmpty() ? list.get(0) : null; + } + + /** + * Get group from DB using groupid only. + * @param id id of group + * @return group object + */ + public static Group getGroupById(int id) { + String sql = "select * from GROUPS where GROUPID = " + id; + List list = getGroupsForSQL(sql); + return !list.isEmpty() ? list.get(0) : null; + } + + /** + * Get group from DB using AUTHID. + * @param id AUTHID + * @return group object + */ + static Group getGroupByAuthId(String id) { + String sql = "select * from GROUPS where AUTHID = '" + id + "'"; + List list = getGroupsForSQL(sql); + return !list.isEmpty() ? list.get(0) : null; + } + + public static Collection getAllgroups() { + return getGroupsForSQL("select * from GROUPS"); + } + + private static List getGroupsForSQL(String sql) { + List list = new ArrayList<>(); + try (Connection conn = ProvDbUtils.getInstance().getConnection(); + PreparedStatement ps = conn.prepareStatement(sql); + ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + Group group = new Group(rs); + list.add(group); + } + } catch (SQLException e) { + intlogger.error("PROV0009 getGroupsForSQL: " + e.getMessage(), e); + } + return list; + } + + private static int getMaxGroupID() { + int max = 0; + try (Connection conn = ProvDbUtils.getInstance().getConnection(); + PreparedStatement ps = conn.prepareStatement("select MAX(groupid) from GROUPS"); + ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + max = rs.getInt(1); + } + } catch (SQLException e) { + intlogger.error("PROV0001 getMaxSubID: " + e.getMessage(), e); } + return max; } public int getGroupid() { return groupid; } - public static Logger getIntlogger() { + public static EELFLogger getIntlogger() { return intlogger; } @@ -244,18 +222,10 @@ public class Group extends Syncable { this.groupid = groupid; } - public static void setIntlogger(Logger intlogger) { + public static void setIntlogger(EELFLogger intlogger) { Group.intlogger = intlogger; } - public static int getNext_groupid() { - return next_groupid; - } - - public static void setNext_groupid(int next_groupid) { - Group.next_groupid = next_groupid; - } - public String getAuthid() { return authid; } @@ -292,49 +262,34 @@ public class Group extends Syncable { return members; } - public void setMembers(String members) { - this.members = members; - } - - public Date getLast_mod() { - return last_mod; - } - - public void setLast_mod(Date last_mod) { - this.last_mod = last_mod; - } - - @Override public JSONObject asJSONObject() { JSONObject jo = new JSONObject(); - jo.put("groupid", groupid); + jo.put(GROUP_ID_CONST, groupid); jo.put("authid", authid); jo.put("name", name); jo.put("description", description); jo.put("classification", classification); jo.put("members", members); - jo.put("last_mod", last_mod.getTime()); + jo.put("last_mod", lastMod.getTime()); return jo; } @Override - public boolean doInsert(Connection c) { + public boolean doInsert(Connection conn) { boolean rv = true; - PreparedStatement ps = null; - try { + try (PreparedStatement ps = conn.prepareStatement( + "insert into GROUPS(GROUPID, AUTHID, NAME, DESCRIPTION, CLASSIFICATION, MEMBERS) " + + "values (?, ?, ?, ?, ?, ?)", new String[]{"GROUPID"})) { if (groupid == -1) { // No feed ID assigned yet, so assign the next available one - setGroupid(next_groupid++); + setGroupid(nextGroupid++); + } + // In case we insert a group from synchronization + if (groupid > nextGroupid) { + nextGroupid = groupid + 1; } - // In case we insert a gropup from synchronization - if (groupid > next_groupid) - next_groupid = groupid + 1; - - // Create the GROUPS row - String sql = "insert into GROUPS (GROUPID, AUTHID, NAME, DESCRIPTION, CLASSIFICATION, MEMBERS) values (?, ?, ?, ?, ?, ?)"; - ps = c.prepareStatement(sql, new String[]{"GROUPID"}); ps.setInt(1, groupid); ps.setString(2, authid); ps.setString(3, name); @@ -342,30 +297,18 @@ public class Group extends Syncable { ps.setString(5, classification); ps.setString(6, members); ps.execute(); - ps.close(); } catch (SQLException e) { rv = false; - intlogger.warn("PROV0005 doInsert: " + e.getMessage()); - intlogger.error("SQLException " + e.getMessage()); - } finally { - try { - if(ps!=null) { - ps.close(); - } - } catch (SQLException e) { - intlogger.error("SQLException " + e.getMessage()); - } + intlogger.error("PROV0005 doInsert: " + e.getMessage(), e); } return rv; } @Override - public boolean doUpdate(Connection c) { + public boolean doUpdate(Connection conn) { boolean rv = true; - PreparedStatement ps = null; - try { - String sql = "update GROUPS set AUTHID = ?, NAME = ?, DESCRIPTION = ?, CLASSIFICATION = ? , MEMBERS = ? where GROUPID = ?"; - ps = c.prepareStatement(sql); + try (PreparedStatement ps = conn.prepareStatement( + "update GROUPS set AUTHID = ?, NAME = ?, DESCRIPTION = ?, CLASSIFICATION = ? , MEMBERS = ? where GROUPID = ?")) { ps.setString(1, authid); ps.setString(2, name); ps.setString(3, description); @@ -375,41 +318,20 @@ public class Group extends Syncable { ps.executeUpdate(); } catch (SQLException e) { rv = false; - intlogger.warn("PROV0006 doUpdate: " + e.getMessage()); - intlogger.error("SQLException " + e.getMessage()); - } finally { - try { - if(ps!=null) { - ps.close(); - } - } catch (SQLException e) { - intlogger.error("SQLException " + e.getMessage()); - } + intlogger.error("PROV0006 doUpdate: " + e.getMessage(), e); } return rv; } @Override - public boolean doDelete(Connection c) { + public boolean doDelete(Connection conn) { boolean rv = true; - PreparedStatement ps = null; - try { - String sql = "delete from GROUPS where GROUPID = ?"; - ps = c.prepareStatement(sql); + try (PreparedStatement ps = conn.prepareStatement("delete from GROUPS where GROUPID = ?")) { ps.setInt(1, groupid); ps.execute(); } catch (SQLException e) { rv = false; - intlogger.warn("PROV0007 doDelete: " + e.getMessage()); - intlogger.error("SQLException " + e.getMessage()); - } finally { - try { - if(ps!=null) { - ps.close(); - } - } catch (SQLException e) { - intlogger.error("SQLException " + e.getMessage()); - } + intlogger.error("PROV0007 doDelete: " + e.getMessage(), e); } return rv; } @@ -421,23 +343,26 @@ public class Group extends Syncable { @Override public boolean equals(Object obj) { - if (!(obj instanceof Group)) + if (!(obj instanceof Group)) { return false; + } Group os = (Group) obj; - if (groupid != os.groupid) - return false; - if (authid != os.authid) + if (groupid != os.groupid) { return false; - if (!name.equals(os.name)) + } + if (!authid.equals(os.authid)) { return false; - if (description != os.description) + } + if (!name.equals(os.name)) { return false; - if (!classification.equals(os.classification)) + } + if (!description.equals(os.description)) { return false; - if (!members.equals(os.members)) + } + if (!classification.equals(os.classification)) { return false; - - return true; + } + return members.equals(os.members); } @Override @@ -447,6 +372,6 @@ public class Group extends Syncable { @Override public int hashCode() { - return Objects.hash(groupid, authid, name, description, classification, members, last_mod); + return Objects.hash(groupid, authid, name, description, classification, members, lastMod); } }