Introduce PostgreSQL specific CMS module
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 5 Jan 2022 08:05:39 +0000 (09:05 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 5 Jan 2022 08:05:39 +0000 (09:05 +0100)
dep/org.argeo.dep.cms.minimal/pom.xml
org.argeo.cms.jcr/bnd.bnd
org.argeo.cms.pgsql/.classpath [new file with mode: 0644]
org.argeo.cms.pgsql/.project [new file with mode: 0644]
org.argeo.cms.pgsql/bnd.bnd [new file with mode: 0644]
org.argeo.cms.pgsql/build.properties [new file with mode: 0644]
org.argeo.cms.pgsql/pom.xml [new file with mode: 0644]
org.argeo.cms.pgsql/src/org/argeo/cms/pgsql/util/CheckPg.java [new file with mode: 0644]
pom.xml

index 9042eabab84fa76a0bc29dec0a4a50e17fb33f1c..6df8690b5694b1ec27c743a98e6dedb43919d606 100644 (file)
                        <artifactId>org.argeo.cms</artifactId>
                        <version>2.3-SNAPSHOT</version>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.cms.pgsql</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
 
                <!-- Third Parties -->
 
index 6bb15aba5057f6a93b176f387c51a4eb568f8ae8..761c950e51e9ee30cec0b7b961ecd55607c5c56a 100644 (file)
@@ -10,7 +10,7 @@ Import-Package:\
 org.argeo.cms.servlet,\
 javax.jcr.security,\
 org.h2;resolution:=optional,\
-org.postgresql;resolution:=optional,\
+org.postgresql;version="[42,43)";resolution:=optional,\
 org.apache.jackrabbit.webdav.server,\
 org.apache.jackrabbit.webdav.jcr,\
 org.apache.commons.httpclient.cookie;resolution:=optional,\
diff --git a/org.argeo.cms.pgsql/.classpath b/org.argeo.cms.pgsql/.classpath
new file mode 100644 (file)
index 0000000..e801ebf
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.argeo.cms.pgsql/.project b/org.argeo.cms.pgsql/.project
new file mode 100644 (file)
index 0000000..ff01ad9
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.cms.pgsql</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/org.argeo.cms.pgsql/bnd.bnd b/org.argeo.cms.pgsql/bnd.bnd
new file mode 100644 (file)
index 0000000..9c73009
--- /dev/null
@@ -0,0 +1 @@
+Import-Package: org.postgresql;version="[42,43)"
diff --git a/org.argeo.cms.pgsql/build.properties b/org.argeo.cms.pgsql/build.properties
new file mode 100644 (file)
index 0000000..34d2e4d
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/org.argeo.cms.pgsql/pom.xml b/org.argeo.cms.pgsql/pom.xml
new file mode 100644 (file)
index 0000000..c15567f
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons</groupId>
+               <version>2.3-SNAPSHOT</version>
+               <artifactId>argeo-commons</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.cms.pgsql</artifactId>
+       <packaging>jar</packaging>
+       <name>CMS PostgreSQL</name>
+       <description>CMS components depending on PostgreSQL APIs (SQL or JDBC)</description>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.cms</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
+</project>
\ No newline at end of file
diff --git a/org.argeo.cms.pgsql/src/org/argeo/cms/pgsql/util/CheckPg.java b/org.argeo.cms.pgsql/src/org/argeo/cms/pgsql/util/CheckPg.java
new file mode 100644 (file)
index 0000000..9db43df
--- /dev/null
@@ -0,0 +1,42 @@
+package org.argeo.cms.pgsql.util;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.postgresql.Driver;
+
+/** Simple PostgreSQL check. */
+public class CheckPg {
+
+       public List<String> listTables() {
+               String osUser = System.getProperty("user.name");
+
+               String url = "jdbc:postgresql://localhost/" + osUser;
+               Properties props = new Properties();
+               props.setProperty("user", osUser);
+               props.setProperty("password", "changeit");
+               List<String> result = new ArrayList<>();
+
+               Driver driver = new Driver();
+               try (Connection conn = driver.connect(url, props); Statement s = conn.createStatement();) {
+                       s.execute("SELECT * FROM pg_catalog.pg_tables");
+                       ResultSet rs = s.getResultSet();
+                       while (rs.next()) {
+                               result.add(rs.getString("tablename"));
+                       }
+                       return result;
+               } catch (SQLException e) {
+                       throw new IllegalStateException(e);
+               }
+       }
+
+       public static void main(String[] args) {
+               new CheckPg().listTables().forEach(System.out::println);
+       }
+
+}
diff --git a/pom.xml b/pom.xml
index af7295ccdfa670496beb19a90b0bf37af4fd2e8a..41f257e5097753d7db5fe2ce99b2ec5ac62bc86a 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,7 @@
                <module>org.argeo.api</module>
                <module>org.argeo.cms.tp</module>
                <module>org.argeo.cms</module>
+               <module>org.argeo.cms.pgsql</module>
                <module>org.argeo.cms.servlet</module>
                <module>org.argeo.cms.jcr</module>
                <!-- CMS UX -->