1,234
edits
Changes
no edit summary
{{Admon/obsolete}}
<big><big> PostgreSQL Adapter for NexJ </big></big>
{{NexJ_Express Index}}
[[category: NexJ Past Projects]]
[[category: NexJ Express PostgreSQL]]
== Project Goal==
== Current Status==
* '''Completed''' (October 21, 2011)
* Get the last PostgreSQL adapter source code from http://mercurial.nexj.com/express.cgi/core
<!--{|class="collapsible collapsed" style="border-style:solid;border-width:thin;border-color:black"
!align="left" style="background-color:SteelBlue; font-weight:bold;border-style:solid;border-width:thin;padding: 2px 2px 2px 2px;"| Dec 2010
|-
|
* Database 'test' is created in Postgre.
* sample table 'mutex' is created for testing the connection properties.
* No need for SET SQL mode in Postgre
* Creating tables in process
* Tables are created.
* Creating indexes and triggers in process
|}
{|class="collapsible collapsed" style="border-style:solid;border-width:thin;border-color:black"
!align="left" style="background-color:SteelBlue; font-weight:bold;border-style:solid;border-width:thin;padding: 2px 2px 2px 2px;"| Nov 2010
|-
|
* Walk through parts of code related to SQLadapter, SqlSchemaManger and setup scripts in NexJ Express code
* Going through NexJ MySQL databaseSQLAdapter (src, test) and SQLSchemaManager (src, test) classes are extended to create PostgreSQL classes* Learning about Differences between Proper PostgreSQL Driver is installed.* Postgre package url for XADataSource is added to the related files.* cofig and MySQLconnection files are modified based on Postgre properties* Application is now connected to the Postgre database.|}-->
==Project Phases==
=== Phase 1: Design Requirements Investigation (DONE) ===
* Get requirements from NexJ (Meeting on Friday Nov 5th)
* Organize list of requirements and set Walk-through the task list for each part needed to be donecode* Familiarization with PostgreSQL
===Phase 2: Coding Connect to PostgreSQL server (DONE) ===* '''List of Tasks'''[[NexJ_Express_Connecting_to_PostgreSQL| Connect to PostgreSQL server]] === Phase 3: PostgreSQLSchemaManager (DONE) ===* Estimated Duration: 3 weeks (Jan 17 - Feb 11, 2011)# implementation of * [[ PostgreSQL_AdapterPostgreSQL Adapter-nexj/Adapter extendingSchemaManager | PostgreSQLAdapter.java Extending SQLSchemaManager ]]# implementation of === Phase 4: PostgreSQLAdapter (DONE)===* Estimated Duration: 3 weeks (Feb 14 - 25, 2011)* [[ PostgreSQL_Adapter-nexj/AdapterTest extendingSQLAdapter | PostgreSQLAdapterTestExtending SQLAdapter ]] ===Phase 5: PostgreSQL UnitTests and Optimization (DONE) ===* Estimated Duration: 2 weeks (Feb 28 - Mar 11, 2016)* Add database specific tests fostr PostgreSQL*:test for required contrib scripts*:test for custom blob read & write functions* Add PostgreSQL specific optimization ===Phase 6: Megre Code with Latest Revision (DONE) ===* Merge code with lastest revision from http://mercurial.nexj.java com/express ===Phase 7: Test with NexJ Express Studio (DONE) ===* Estimated duration: Mar 7- Apr 14, 2011* Run model in Express studio using the postgresql adapter* create scripts for database initialization, creation and dumping* create scripts for JBoss* Deploy to JBoss === Phase 8: Code Review 1 - Meeting (DONE) ===* Date: Apr 20,2011 * Meet with NexJ Developer to review code === Phase 9: Code Review 1 - Apply Changes (DONE) ===* Estimated Duration: Apr 20, 2011 - July 1, 2011* [[PostgreSQL_Adapter_Project_-_Code_Review_1_Changes | Changes to be made]]# implementation of === Phase 10: Code Review 2 (DONE) ===* Send code for review* === Phase 11: Code Review 2 - Apply Changes (DONE) ===* Estimated Duration: July 7, 2011 - July 15, 2011* [[ PostgreSQL_AdapterPostgreSQL_Adapter_Project_-nexj/SchemaManger _Code_Review_2_Changes | PostgreSQLSchemaManager.java Changes to be made]]# Setup === Phase 12: Code Review 3 (DONE) ===* Sent code for code review 3* https://bitbucket.org/gbatumbya/postgresql_external/src/08cdedb9d071/ === Phase 13: Code Review 3 - Apply Changes (DONE) ===* Upgrade to lastest 7.1 branch* Create Statement and PreparedStatementProxy* Create PostgreSQLPreparedStatementProxy:** implement set/getQueryTimeout** move custom timeout code into this proxy* Override prepareStatement in PostgreSQL to return PostgreSQLPreparedStatementProxy* Implement implicit save points for statements within a transaction block* Modify readSchema to use addColumn for reading columns from the database** Remove MSSQL and Oracle specific code from addColumn** Override addColumn in PostgreSQL for text, bytea and lo types === Phase 14: Integration Tests (DONE) ===* Run Integration tests against the Adapter === Phase 15: Code Review 4 (DONE)===* Code review with framework architect* https://bitbucket.org/gbatumbya/postgresql_external/src/6c9a7380c8fe === Phase 16: Code Review 4 - Apply Changes (DONE) ===* Estimated Duration: Sep 9 - Sep 12* [[ PostgreSQL_AdapterPostgreSQL_Adapter_Project_-nexj/Script _Code_Review_4_Changes | Scripts Changes to be made]]# implementation === Phase 17: Code Review 5 (DONE) ===* Submitted code for review on Sep 20.* https://bitbucket.org/gbatumbya/postgresql_external/src/a0d10ef7cdbe/ === Phase 18: Code Review 5 - Apply Changes (DONE) === === Phase 19: Code Review 6 ===* Date: Oct 13* Submitted for code review* https://bitbucket.org/gbatumbya/postgresql_external/src/153aec847d54/ == Project Repository ==* URL for central repository of the project is: https://bitbucket.org/gbatumbya/nexjexpress-postgresqladapter * Steps to work with the repository :1- Follow the [[ PostgreSQL_Adapterhttps://www.projects.openhealthtools.org/sf/docman/do/downloadDocument/projects.oht_aip/docman.root.nexj_studio_express_v7_1_113_0/doc1783/1 instructions to create the NexJ Express workspace ].:2- After creating 'ws' directory,::open Eclipse and::click on '''File -> Import -> Mercurial -nexj> Clone Existing Mercurial Repository''':: Enter this information:::: '''URL''': https://bitbucket.org/gbatumbya/Upgrade | mainnexjexpress-postgresqladapter<!--:3- The central repository's structure is::: Main branch called 'default' :: Branches for:4- After cloning the project, follow these steps to add a new branch with your user name::: First make sure the active branch is 'default'. Notice the top of the Package Explorer e.g.upgrade ]''core[5:b8b2f102343@'''default'''(tip)]'':: Right click on 'core' in the Package Explorer:: Click on 'Team' -> Add Branch:: Enter the branch name in the box -> Finish:: Enter the commit message -> OK:: Check the 'Force Push' if applicable.:: Now the branch name at the top of Package Explorer is changed to the new branch name. : 5- To switch to a different branch, choose 'Switch' instead of 'Add Branch' * '''NOTE!''' To avoid any conflict, do the 'Pull' every day and before any push.* '''NOTE!''' First just 'Commit' changesets and do not 'Push' them until the end of the day or the time you are confident by latest changes to the code, then 'Push' them all at once and 'Merge' them with the 'default' branch in central repository.-->
== Resources ==
* DownloadsLinux binaries http://www.openscg.org/se/postgresql/packages.jsp* Debugging:[[Run_Junit_Tests_For_Non_Default_SQL_Adapter | Unit Testing for non Default SQL Adapter]]:* Intro:Concept of Adapter [http://www.vogella.de/articles/DesignPatternAdapter/article.html]:FOSSLC [http://www.fosslc.org/drupal/category/community/databases/postgresql PostgreSQL]
* [[PostgreSQL_Adapter-nexj/Resources#Java | Java ]]
* [[PostgreSQL_Adapter-nexj/Resources#Database_.26_Persistence | Database & Persistence]]
* [[PostgreSQL_Adapter-nexj/Resources#JDBC | JDBC]]
* [[PostgreSQL_Adapter-nexj/Resources#PostgreSQL_PostgreSQL Specifications | PostgreSQL Specifications]]* [[PostgreSQL_Adapter-_MySQL_Specifications nexj/Resources#MySQL_Specifications | Postgre - MySQL Specifications]]* [[PostgreSQL_Adapter-nexj/Resources#PostgreSQL_-_MySQL_Compare | Postgre - MySQL Compare]] == Summary of Applied Research ==* [[Research Findings - PostgreSQLAdapter]]* [[Research Notes - PostgreSQLAdapter]]