+ intlogger.warn("Invalid JSON: " + e.getMessage(), e);\r
+ throw new InvalidObjectException("Invalid JSON: " + e.getMessage());\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Get specific subscription.\r
+ * @param sub subscription object\r
+ * @return subscription\r
+ */\r
+ public static Subscription getSubscriptionMatching(Subscription sub) {\r
+ SubDelivery deli = sub.getDelivery();\r
+ String sql = String.format(\r
+ "select * from SUBSCRIPTIONS where FEEDID = %d and DELIVERY_URL = \"%s\" and DELIVERY_USER = \"%s\" "\r
+ + "and DELIVERY_PASSWORD = \"%s\" and DELIVERY_USE100 = %d and METADATA_ONLY = %d "\r
+ + "and FOLLOW_REDIRECTS = %d",\r
+ sub.getFeedid(),\r
+ deli.getUrl(),\r
+ deli.getUser(),\r
+ deli.getPassword(),\r
+ deli.isUse100() ? 1 : 0,\r
+ sub.isMetadataOnly() ? 1 : 0,\r
+ sub.isFollowRedirect() ? 1 : 0\r
+ );\r
+ List<Subscription> list = getSubscriptionsForSQL(sql);\r
+ return !list.isEmpty() ? list.get(0) : null;\r
+ }\r
+\r
+ /**\r
+ * Get subscription by id.\r
+ * @param id subscription id string\r
+ * @return subscription\r
+ */\r
+ public static Subscription getSubscriptionById(int id) {\r
+ String sql = "select * from SUBSCRIPTIONS where SUBID = " + id;\r
+ List<Subscription> list = getSubscriptionsForSQL(sql);\r
+ return !list.isEmpty() ? list.get(0) : null;\r
+ }\r
+\r
+ public static Collection<Subscription> getAllSubscriptions() {\r
+ return getSubscriptionsForSQL("select * from SUBSCRIPTIONS");\r
+ }\r
+\r
+ /**\r
+ * Get subscriptions from SQL.\r
+ * @param sql SQL statement\r
+ * @return List of subscriptions\r
+ */\r
+ private static List<Subscription> getSubscriptionsForSQL(String sql) {\r
+ List<Subscription> list = new ArrayList<>();\r
+ try (Connection conn = ProvDbUtils.getInstance().getConnection();\r
+ PreparedStatement ps = conn.prepareStatement(sql);\r
+ ResultSet rs = ps.executeQuery()) {\r
+ while (rs.next()) {\r
+ Subscription sub = new Subscription(rs);\r
+ list.add(sub);\r
+ }\r
+ } catch (SQLException e) {\r
+ intlogger.error("PROV0001 getSubscriptionsForSQL: " + e.toString(), e);\r
+ }\r
+ return list;\r
+ }\r
+\r
+ /**\r
+ * Get max subid.\r
+ * @return subid int\r
+ */\r
+ public static int getMaxSubID() {\r
+ int max = 0;\r
+ try (Connection conn = ProvDbUtils.getInstance().getConnection();\r
+ PreparedStatement ps = conn.prepareStatement("select MAX(subid) from SUBSCRIPTIONS");\r
+ ResultSet rs = ps.executeQuery()) {\r
+ if (rs.next()) {\r
+ max = rs.getInt(1);\r
+ }\r
+ } catch (SQLException e) {\r
+ intlogger.info("getMaxSubID: " + e.getMessage(), e);\r
+ }\r
+ return max;\r
+ }\r
+\r
+ /**\r
+ * Get subscription URL list.\r
+ * @param feedid feedid int\r
+ * @return collection of subscription URL\r
+ */\r
+ public static Collection<String> getSubscriptionUrlList(int feedid) {\r
+ List<String> list = new ArrayList<>();\r
+ try (Connection conn = ProvDbUtils.getInstance().getConnection();\r
+ PreparedStatement stmt = conn.prepareStatement("select SUBID from SUBSCRIPTIONS where FEEDID = ?")) {\r
+ stmt.setString(1, String.valueOf(feedid));\r
+ try (ResultSet rs = stmt.executeQuery()) {\r
+ while (rs.next()) {\r
+ int subid = rs.getInt(SUBID_COL);\r
+ list.add(URLUtilities.generateSubscriptionURL(subid));\r
+ }\r
+ }\r
+ } catch (SQLException e) {\r
+ intlogger.error(SQLEXCEPTION + e.getMessage(), e);\r