aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web-db/src/main/java/at/gv/egiz/pdfas')
-rw-r--r--pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTest.java45
-rw-r--r--pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTestFactory.java18
-rw-r--r--pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/store/DBRequestStore.java23
3 files changed, 86 insertions, 0 deletions
diff --git a/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTest.java b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTest.java
new file mode 100644
index 00000000..e1cc1a8d
--- /dev/null
+++ b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTest.java
@@ -0,0 +1,45 @@
+package at.gv.egiz.pdfas.web.db.status;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import at.gv.egiz.pdfas.web.store.DBRequestStore;
+import at.gv.egiz.status.Test;
+import at.gv.egiz.status.TestResult;
+import at.gv.egiz.status.TestStatus;
+import at.gv.egiz.status.impl.BaseTestResult;
+
+public class DBTest implements Test {
+
+ private DBRequestStore requestStore;
+
+ public DBTest() {
+ requestStore = new DBRequestStore();
+ }
+
+ @Override
+ public String getName() {
+ return "DB";
+ }
+
+ @Override
+ public long getCacheDelay() {
+ return 300000;
+ }
+
+ @Override
+ public TestResult runTest() {
+ BaseTestResult result = new BaseTestResult();
+ try {
+ this.requestStore.cleanOldRequestException();
+ result.setStatus(TestStatus.OK);
+ } catch(Throwable e) {
+ result.setStatus(TestStatus.FAILED);
+ List<String> details = new ArrayList<String>();
+ details.add(e.getMessage());
+ result.setDetails(details);
+ }
+ return result;
+ }
+
+}
diff --git a/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTestFactory.java b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTestFactory.java
new file mode 100644
index 00000000..bc0112a2
--- /dev/null
+++ b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/db/status/DBTestFactory.java
@@ -0,0 +1,18 @@
+package at.gv.egiz.pdfas.web.db.status;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import at.gv.egiz.status.Test;
+import at.gv.egiz.status.TestFactory;
+
+public class DBTestFactory implements TestFactory {
+
+ @Override
+ public List<Test> createTests() {
+ List<Test> testList = new ArrayList<Test>();
+ testList.add(new DBTest());
+ return testList;
+ }
+
+}
diff --git a/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/store/DBRequestStore.java b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/store/DBRequestStore.java
index a1b88270..df006f02 100644
--- a/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/store/DBRequestStore.java
+++ b/pdf-as-web-db/src/main/java/at/gv/egiz/pdfas/web/store/DBRequestStore.java
@@ -64,6 +64,29 @@ public class DBRequestStore implements IRequestStore {
}
}
+ public void cleanOldRequestException() {
+ int seconds = WebConfiguration.getDBTimeout();
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.SECOND, (-1)* seconds);
+ Date date = calendar.getTime();
+ SimpleDateFormat dt = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
+ logger.info("Clearing Entries before: " + dt.format(date));
+ Session session = null;
+ Transaction tx = null;
+ try {
+ session = sessions.openSession();
+ tx = session.beginTransaction();
+ Query query = session.createQuery("delete from Request as req" +
+ " where req.created < :date");
+ query.setCalendar("date", calendar);
+ query.executeUpdate();
+ } finally {
+ if(session != null) {
+ session.close();
+ }
+ }
+ }
+
public String createNewStoreEntry(PDFASSignRequest request) {
// Clean Old Requests
this.cleanOldRequests();