From 5beef4e86aa5355342e4e128752f40c51a493765 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 14 Nov 2014 20:08:22 +0000
Subject: [PATCH] #2021 fix - Problem with MySQL y NOT NULL creation_timestamp column

---
 securis/src/main/resources/META-INF/persistence.xml                         |    4 +
 securis/src/main/resources/db/create_db.sql                                 |    7 +++
 securis/src/main/resources/log4j2.xml                                       |   77 +++++++++++++++++++++-----------------
 securis/src/main/java/net/curisit/securis/db/Application.java               |    6 +++
 securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java       |    6 +++
 securis/src/main/resources/db/schema.sql                                    |    2 
 securis/src/main/java/net/curisit/securis/services/ApplicationResource.java |    3 +
 7 files changed, 67 insertions(+), 38 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/db/Application.java b/securis/src/main/java/net/curisit/securis/db/Application.java
index 17885c8..49dd65c 100644
--- a/securis/src/main/java/net/curisit/securis/db/Application.java
+++ b/securis/src/main/java/net/curisit/securis/db/Application.java
@@ -15,6 +15,9 @@
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -33,6 +36,8 @@
     @NamedQuery(name = "list-applications", query = "SELECT a FROM Application a")
 })
 public class Application implements Serializable {
+
+    private static final Logger LOG = LogManager.getLogger(Application.class);
 
     private static final long serialVersionUID = 1L;
 
@@ -85,6 +90,7 @@
     }
 
     public Date getCreationTimestamp() {
+        LOG.info("APP {} TS: {}", this.id, this.creationTimestamp);
         return creationTimestamp;
     }
 
diff --git a/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java b/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
index f21baae..80cc688 100644
--- a/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
+++ b/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
@@ -12,6 +12,9 @@
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -30,6 +33,8 @@
     @NamedQuery(name = "list-application-metadata", query = "SELECT a FROM ApplicationMetadata a where a.application.id = :applicationId")
 })
 public class ApplicationMetadata implements Serializable {
+
+    private static final Logger LOG = LogManager.getLogger(ApplicationMetadata.class);
 
     private static final long serialVersionUID = 1L;
 
@@ -68,6 +73,7 @@
     }
 
     public Date getCreationTimestamp() {
+        LOG.info("APP_MD (app: {}) {} TS: {}", this.application.getId(), this.key, this.creationTimestamp);
         return creationTimestamp;
     }
 
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index 64b4f94..c399160 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -123,8 +123,9 @@
         if (app.getApplicationMetadata() != null) {
             for (ApplicationMetadata md : app.getApplicationMetadata()) {
                 md.setApplication(app);
-                md.setCreationTimestamp(app.getCreationTimestamp());
+                md.setCreationTimestamp(new Date());
                 em.persist(md);
+                LOG.info("Creating METADATA: '{}' -> {}", md.getKey(), md.getCreationTimestamp());
             }
         }
         LOG.info("Creating application with date: " + app.getCreationTimestamp());
diff --git a/securis/src/main/resources/META-INF/persistence.xml b/securis/src/main/resources/META-INF/persistence.xml
index d7daea1..69af565 100644
--- a/securis/src/main/resources/META-INF/persistence.xml
+++ b/securis/src/main/resources/META-INF/persistence.xml
@@ -14,7 +14,9 @@
 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
 			<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/SeCurisDS" />
 
-			<property name="hibernate.show_sql" value="true" />
+<!-- 			<property name="hibernate.show_sql" value="true" />
+			<property name="hibernate.format_sql" value="true"/>
+ -->			
 		</properties>
 
 	</persistence-unit>
diff --git a/securis/src/main/resources/db/create_db.sql b/securis/src/main/resources/db/create_db.sql
new file mode 100644
index 0000000..5f45075
--- /dev/null
+++ b/securis/src/main/resources/db/create_db.sql
@@ -0,0 +1,7 @@
+create database securis CHARACTER SET utf8 COLLATE utf8_bin;
+create user securis identified by 'securis';
+create user securis@localhost identified by 'securis';
+grant all on securis.* to securis;
+grant all on securis.* to securis@localhost;
+#Update passwords
+flush privileges;
\ No newline at end of file
diff --git a/securis/src/main/resources/db/schema.sql b/securis/src/main/resources/db/schema.sql
index 4f69276..1eb3bb6 100644
--- a/securis/src/main/resources/db/schema.sql
+++ b/securis/src/main/resources/db/schema.sql
@@ -35,7 +35,7 @@
   `key` VARCHAR(100) NOT NULL ,
   value VARCHAR(200) NULL ,
   mandatory BOOLEAN NOT NULL default true,
-  creation_timestamp DATETIME NOT NULL default now(),  
+  creation_timestamp DATETIME NULL default now(),  
   PRIMARY KEY (application_id, `key`));
 
 
diff --git a/securis/src/main/resources/log4j2.xml b/securis/src/main/resources/log4j2.xml
index 90895bd..c78efd8 100644
--- a/securis/src/main/resources/log4j2.xml
+++ b/securis/src/main/resources/log4j2.xml
@@ -1,42 +1,49 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Configuration>
-  <Appenders>
+	<Appenders>
 
-    <RollingFile name="defaultFile" fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
-    		filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
-       <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
-	  <Policies>
-        <TimeBasedTriggeringPolicy interval="1" modulate="true" />
-      </Policies>
-		<DefaultRolloverStrategy max="10"/>
-    </RollingFile>
-	<Async name="defaultFileAsync" includeLocation="true">
-      <AppenderRef ref="defaultFile"/>
-    </Async>
-   
-    <Console name="stdout" target="SYSTEM_OUT">
-      <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
-    </Console>
+		<RollingFile name="defaultFile"
+			fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
+			filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
+			<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
+			<Policies>
+				<TimeBasedTriggeringPolicy interval="1"
+					modulate="true" />
+			</Policies>
+			<DefaultRolloverStrategy max="10" />
+		</RollingFile>
+		<Async name="defaultFileAsync" includeLocation="true">
+			<AppenderRef ref="defaultFile" />
+		</Async>
 
-    <Console name="console" target="SYSTEM_OUT">
-      <PatternLayout pattern="%m%n"/>
-    </Console>
+		<Console name="stdout" target="SYSTEM_OUT">
+			<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
+		</Console>
 
-   </Appenders>
-  <Loggers>
-    
-    <Logger name="net.curisit" level="INFO" additivity="false">
-      <AppenderRef ref="defaultFileAsync"/>
-      <AppenderRef ref="stdout"/>
-    </Logger>
-   
-    <Logger name="console" level="INFO" additivity="false">
-      <AppenderRef ref="console"/>
-    </Logger>
-   
-    <Root level="INFO" >
-      <AppenderRef ref="stdout"/>
-    </Root>
+		<Console name="console" target="SYSTEM_OUT">
+			<PatternLayout pattern="%m%n" />
+		</Console>
 
-  </Loggers>
+	</Appenders>
+	<Loggers>
+
+		<Logger name="net.curisit" level="INFO" additivity="false">
+			<AppenderRef ref="defaultFileAsync" />
+			<AppenderRef ref="stdout" />
+		</Logger>
+
+		<Logger name="console" level="INFO" additivity="false">
+			<AppenderRef ref="console" />
+		</Logger>
+
+<!-- 		<logger name="org.hibernate.type.descriptor.sql.BasicBinder"
+			level="TRACE" additivity="false">
+			<appender-ref ref="stdout" />
+		</logger> -->
+
+		<Root level="INFO">
+			<AppenderRef ref="stdout" />
+		</Root>
+
+	</Loggers>
 </Configuration>

--
Gitblit v1.3.2