Remove checkstyle warnings in policy/engine
[policy/engine.git] / LogParser / src / main / java / org / onap / xacml / parser / CleanUpSystemLogDb.java
diff --git a/LogParser/src/main/java/org/onap/xacml/parser/CleanUpSystemLogDb.java b/LogParser/src/main/java/org/onap/xacml/parser/CleanUpSystemLogDb.java
new file mode 100644 (file)
index 0000000..21ff8bf
--- /dev/null
@@ -0,0 +1,99 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * LogParser
+ * ================================================================================
+ * Copyright (C) 2017-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.xacml.parser;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.text.Format;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimerTask;
+
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+
+public class CleanUpSystemLogDb extends TimerTask {
+
+    private static org.onap.policy.common.logging.flexlogger.Logger logger =
+            FlexLogger.getLogger(CleanUpSystemLogDb.class.getName());
+    Connection localConnect = null;
+    int timeFrame = 5; // default
+
+    /**
+     * Set time frame for database cleanup.
+     *
+     * @param dbConnect the database connection object
+     * @param argTimeFrame the time frame
+     */
+    public CleanUpSystemLogDb(final Connection dbConnect, final int argTimeFrame) {
+        localConnect = dbConnect;
+        if (argTimeFrame > 0) {
+            timeFrame = argTimeFrame;
+        }
+    }
+
+    String className = this.getClass().getSimpleName();
+
+    @Override
+    public void run() {
+
+        final Date date = new Date();
+        final Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        logger.debug("cleanLogDBTableEntries:Cleanup systemlogdb starts on date:" + formatter.format(date));
+        try {
+            cleanLogDbTableEntries(localConnect, timeFrame);
+        } catch (final SQLException e) {
+            logger.error(e);
+        }
+
+        logger.debug(className + " Cleanup systemlogdb done");
+    }
+
+    /**
+     * Clean system log database table entries based on input time frame.
+     *
+     * @param dbConnect the database connection object
+     * @param timeFrame the time frame
+     * @throws SQLException if an error occurs
+     */
+    public static void cleanLogDbTableEntries(final Connection dbConnect, final int timeFrame) throws SQLException {
+
+        Connection connect = dbConnect;
+        if (dbConnect == null || dbConnect.isClosed()) {
+            connect = ParseLog.getDbConnection();
+        }
+        try (java.sql.PreparedStatement statement =
+                connect.prepareStatement("DELETE FROM SYSTEMLOGDB WHERE date < DATE_SUB(CURDATE(), INTERVAL ? DAY)");) {
+
+            statement.setInt(1, timeFrame);
+
+            final int records = statement.executeUpdate();
+
+            logger.debug("cleanLogDBTableEntries:deleting Log files ended with " + records + " deleted.");
+            statement.close();
+
+        } catch (final Exception e) {
+            logger.error("Failed to create SQLContainer for System Log Database", e);
+        } finally {
+            connect.close();
+        }
+    }
+}