Difference between revisions of "NexJ Express Connecting to PostgreSQL"

From CDOT Wiki
Jump to: navigation, search
(1- Setup the postgresql-connection)
 
(85 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<big><big> PostgreSQL Adapter for NexJ - Create Test Environment </big></big>
+
{{Admon/obsolete}}
{{NexJ_Express Index}}
 
  
=== 1- Setup the postgresql-connection ===
+
[[category: NexJ Express PostgreSQL]][[Category:NexJ_Express_Development]][[category: NexJ Express]]
* TODOs
+
 
: Create and Configure the work/ws/core/test/nexj/postgresql.config
+
== Task Summary ==
:: for now, the contents of default.config is changed to postgresql specifications instead of mysql
+
{| border="1" cellpadding="4" cellspacing="2" style="border: 1px solid black;border-collapse:collapse;"
: walk-through lines from 214-218 in SQLManagementConnectionFactory.java
+
|-
: Walk-through properties and see what exactly is needed to be authorized to connect to 'test' database
+
! Task
: Make sure the model connects to the PostgreSQL using user 'test' - Break @ SQLManagementFactory.java Line:122
+
! Status
: Figure out why there is the exception (unable to lock the PostgreSQL store for the adapter - Break @ SQLDataTest.java Line:443
+
|-  
* Done
+
| Install the PostgreSQL Server
: Configure the work/ws/core/test/nexj/postgresql.connection
+
| DONE
: Load the driver from RelationalDatabaseFragment.java
+
|-
:: The package that is being imported: <code> org.postgresql.xa.PGXADataSource </code>
+
| Install PostgreSQL driver
: Load metadata from the particular driver
+
| DONE
 +
|-
 +
| Add code to connect to server
 +
| DONE
 +
|-
 +
| Create Script for Test database
 +
| DONE
 +
|-
 +
| Test connection to the server
 +
| DONE
 +
|-
 +
| Configure UnitTests for multiple DB's
 +
|
 +
|}
 +
 
 +
== Task Details ==
 +
=== Install PostgreSQL ===
 +
Download: <code>Version 9.0</code> from list of [http://www.enterprisedb.com/products/pgdownload.do#windows PostgreSQL downloads].
 +
 
 +
=== Install PostgreSQL JDBC3 driver ===
 +
Download: <code> JDBC3 Postgresql Driver, Version 9.0-801 </code> @ http://jdbc.postgresql.org/download.html
 +
<br/>Install: Copy driver to <code>[jdk folder]/jre/lib/ext</code>
 +
 
 +
=== Code: Add PostgreSQL Driver ===
 +
Package: <code>nexj.core.persistance.sql</code>
 +
:Create <code>PostgreSQLAdapter.java</code> by extending <code>SQLAdapter</code>
 +
:Create <code>PostgreSQLSchemaManager.java</code> by extending <code>SQLSchemaManager</code>
 +
 
 +
:Edit <code>RelationalDatabase.java</code>
 +
:Edit <code>RelationalDatabaseFragment.java</code>
 +
:Edit <code>SQLSchemaManagerFactory.java</code>
 +
 
 +
Package: <code>nexj.core.meta.sys</code>
 +
:Edit <code>system.dstypes</code>
 +
 
 +
=== SQL Scripts ===
 +
Package: <code>nexj.core.persistence.sql.script</code>
 +
:Create
 +
* <code>postgresql_setup.sql</code>
 +
* <code>postgresql_drop.sql</code>
 +
* <code>postgresql_insert.sql</code>
 +
* <code>postgresql_upd_addr.sql</code>
 +
* <code>postgresql_upd_cont.sql</code>
 +
 
 +
=== UnitTest: Test Connectivity to database ===
 +
Package: <code>nexj.core.persistance.sql</code>
 +
:Create <code>PostgreSQLAdapterTest.java</code> by extending <code>SQLAdapterTest</code>
 +
:Create <code>PostgreSQLSchemaManagerTest.java</code> by extending <code>SQLSchemaManagerTest</code>
 +
 
 +
Package: <code>nexj</code>
 +
:Create <code>postgresql.connections</code> using NexJ Studio
 +
:Edit <code>default.config</code> to use PostgreSQL
 +
:Edit all <code>*.connections</code> files to use PostgreSQL
 +
 
 +
===Configure UnitTests for more than one Database===
 +
 
 +
<!--
 +
== Setup the postgresql-connection ==
 +
For testing the connection, the 'AllTests.java' is being used.
 +
: Installed the <code> Installer version Version 9.0.1-1</code> from list of [http://www.enterprisedb.com/products/pgdownload.do#windows PostgreSQL downloads].
 +
: Installed the <code> JDBC3 Postgresql Driver, Version 9.0-801 </code> @ http://jdbc.postgresql.org/download.html and added it to the libraries in JDK
 +
:: The driver class which is being used for NexJ Express Model is: <code> org.postgresql.xa.PGXADataSource </code>
 +
:: The driver is loaded from RelationalDatabaseFragment.java and RelationalDatabase.java
 +
: Metadata is loaded from the particular driver
 
::
 
::
 
<source lang=java>
 
<source lang=java>
Line 30: Line 92:
 
       props.setProperty(XMLMetadataLoader.CONNECTIONS_URL_PROPERTY, "/nexj/" + sAdapter.toLowerCase(Locale.ENGLISH) + ".connections");  // sets the properties to postgresql.connection
 
       props.setProperty(XMLMetadataLoader.CONNECTIONS_URL_PROPERTY, "/nexj/" + sAdapter.toLowerCase(Locale.ENGLISH) + ".connections");  // sets the properties to postgresql.connection
 
</source>
 
</source>
: Configure system.dstype
+
: After all properties are loaded, it creates the connection through Connection Factory files.
: Configure DatabaseTools.java  // This file calles SQLSchemaMangerFactory.java and creates the connection
 
: Configure RelationalDatabase.java SQLRAConnectionFactory.java
 
: Configure Driver type and some other properties in JDBCInfo.java
 
: Configure SQLSchemaManagementFactory.java
 
 
 
=== 2- Add PostgreSQL adapter type to related java files===
 
: SQLSchemaMangerFactory.java
 
 
 
=== 3- Create a PostgreSQL database through some scripts===
 
: postgresql_setup.sql
 
 
 
=== 4- Create the extended PostgreSQL source files ===
 
: PostgreSQLAdapter.java
 
: PostgreSQLSchemaManger.java
 
  
=== 5- Create the extended PostgreSQL test files ===
+
===Files to Configure===
: PostgreSQLAdapterTest.java
+
'''NOTE''': Changes to these files are involved with '''1-Port''', which should be: 5432, and '''2- Driver package''' that should change to  <code> org.postgresql.xa.PGXADataSource </code>
: PostgreSQLSchemaMangerTest.java
+
: src
 +
:: system.dstype
 +
:: DatabaseTool.java  // This file calles SQLSchemaMangerFactory.java and creates the connection
 +
:: RelationalDatabase.java // Sets the default properties for the supported drivers
 +
:: RelationalDatabaseFragment.java // Sets the custom fragment properties for the supported drivers
 +
:: Driver type and some other properties in JDBCInfo.java
 +
:: SQLSchemaManagerFactory.java  // Sets the connection for the particular adapter type
 +
: test
 +
:: AllTests.java
 +
:: default.config  // change to these four files are: adapter="PostgreSQL" port="5432"
 +
:: postgresql.connection
 +
:: filestorage.connections
 +
::filestoragefragment.connections
 +
-->

Latest revision as of 20:30, 26 January 2014

Important.png
This page may be obsolete.
It contains historical information.

Task Summary

Task Status
Install the PostgreSQL Server DONE
Install PostgreSQL driver DONE
Add code to connect to server DONE
Create Script for Test database DONE
Test connection to the server DONE
Configure UnitTests for multiple DB's

Task Details

Install PostgreSQL

Download: Version 9.0 from list of PostgreSQL downloads.

Install PostgreSQL JDBC3 driver

Download: JDBC3 Postgresql Driver, Version 9.0-801 @ http://jdbc.postgresql.org/download.html
Install: Copy driver to [jdk folder]/jre/lib/ext

Code: Add PostgreSQL Driver

Package: nexj.core.persistance.sql

Create PostgreSQLAdapter.java by extending SQLAdapter
Create PostgreSQLSchemaManager.java by extending SQLSchemaManager
Edit RelationalDatabase.java
Edit RelationalDatabaseFragment.java
Edit SQLSchemaManagerFactory.java

Package: nexj.core.meta.sys

Edit system.dstypes

SQL Scripts

Package: nexj.core.persistence.sql.script

Create
  • postgresql_setup.sql
  • postgresql_drop.sql
  • postgresql_insert.sql
  • postgresql_upd_addr.sql
  • postgresql_upd_cont.sql

UnitTest: Test Connectivity to database

Package: nexj.core.persistance.sql

Create PostgreSQLAdapterTest.java by extending SQLAdapterTest
Create PostgreSQLSchemaManagerTest.java by extending SQLSchemaManagerTest

Package: nexj

Create postgresql.connections using NexJ Studio
Edit default.config to use PostgreSQL
Edit all *.connections files to use PostgreSQL

Configure UnitTests for more than one Database