Download Latest Version GPL-Library-System-v0.3.2.tar.lzma (64.4 MB)
Email in envelope

Get an email when there's a new version of GPL Library System

Home / eclipse project
Name Modified Size InfoDownloads / Week
Parent folder
GPL-Library-System-v0.3.2.tar.lzma 2010-07-14 64.4 MB
README--v0.3.2 2010-07-14 6.8 kB
GPL-Library-System-v0.3.1.tar.lzma 2010-06-12 14.4 MB
README--v0.3.1 2010-06-12 6.4 kB
GPL-Library-System-v0.3.tar.lzma 2010-05-11 14.4 MB
README--v0.3 2010-05-11 4.7 kB
README--v0.2 2010-05-11 4.9 kB
GPL-Library-System-v0.2.tar.lzma 2010-05-11 9.8 MB
README--v0.1 2010-01-28 4.6 kB
GPL-Library-System-v0.1.tar.lzma 2010-01-28 11.0 MB
Totals: 10 Items   114.2 MB 1
Description:
************
(a) GPL-Library-System        - main server, validation, ORM, database, tests
(b) GPL-Library-System-JSP    - servlet/JSP based interface
(c) GPL-Library-System-Swing  - Swing based interface
(d) GPL-Library-System-Struts - Struts2 based interface

Build database notes:
*********************
(a) dependecies & tools (supplied in GPL-Library-System/deploy directory)
	1. ant
	2. Apache Commons Logging
	3. lzma
(b) prepare database (PostgreSQL in v0.3.2):
	1. cd GPL-Library-System/deploy/
	2. createuser -dePRSW -h localhost -p 5432 -U postgres gpl_library_system_user, set password and write it to deploy.properties as sql.pass
	3. print targets: ant -f build-database.xml -p
	4. OPTIONAL: set template database in deploy.properties as sql.db-name-template_postgreSQL (default template1)
	5. run default: ant -f build-database.xml (slow)
	   or (faster)
	   run: ant -f build-database.xml build.empty_postgreSQL build.create-default-accounts_postgreSQL
	   NOTE: if you are runnig exceptions like "NoClassDefFoundError: org/apache/commons/logging/LogFactory", you have to supply corresponding dependencies or you can use "-lib ./commons-logging.jar" to add libraries from GPL-Library-System/deploy/ directory

Eclipse notes:
**************
(a) setup libraries in Eclipse Project / Maven
	1. marc4j (used only for mining documents from MARC records, not compulsory, warnings can be ignored (if possible?))
(b) setup external tools (import from GPL-Library-System/eclipse/ directory):
	1. idlj
	2. rmic
	3. rmiregistry
	4. tnameserv
(c) setup run configurations (import from GPL-Library-System/eclipse/ directory):
	1. CORBALibraryClientLogon
	2. CORBALibraryLogonManager
	3. LibraryRMIClientLogon
	4. LibraryRMIServer
	5. LibrarySocketClientLogon
	6. LibrarySocketServer
(d) OPTIONAL:
	1. run idlj on GPL-Library-System/src/main/idl (which contains file CORBALibrary.idl) to re-create GPL-Library-System/src/main/java/library/corba/*.java
	2. run rmic on files GPL-Library-System/src/main/java/library/rmi/LibraryRMIClientAdmin.java, LibraryRMIClientLibrarian.java, LibraryRMIClientLogon.java, LibraryRMIClientReader.java, LibraryRMIClientStorekeeper.java, LibraryRMIClientServer.java to re-create XXX_Stub.java files
	3. build project
(f) run application
	Swing interface:
		1. socket version:			 	LibrarySocketServer + (multiple) LibrarySocketClientLogonSwing
		2. RMI version: 				rmiregistry + LibraryRMIServer + (multiple) LibraryRMIClientLogonSwing
		3. CORBA version:				tnameserv + CORBALibraryLogonManager + (multiple) CORBALibraryClientLogonSwing
	JSP/servlet version:
                1. run server (and rmiregistry or tnameserv if needed) as in Swing paragraf
                2. set in WEB-INF/web.xml <servlet-class> for Controller (library.ControllerSocket (selected as default), library.ControllerRMI or library.ControllerCORBA)
		3. OPTIONAL: re-create .war file (mvn package command, needed only for RMI or CORBA based version)
		4. deploy .war file (copy in tomcat's webapps directory and start service, for example)
		5. in web browser open URL in form: http://host:port/name-of-webapp/Controller (for precompiled war deployed on localhost with (default) port 8080 try this: http://localhost:8080/GPL%20Library%20System%20-%20JSP/Controller (where %20 stands for space character))
(g) log in using default accounts
	1. user: admin, pass: adminadmin
	2. librarian, librarianlibrarian
	3. reader, readerreader
	4. storekeeper, keeperkeeper

Dump database notes:
********************
(a) dependencies & tools
	1. bash
	2. expect
(b) dump database
	1. bash script GPL-Library-System/deploy/psql/dump_postgreSQL.sh

Maven:
******
(a) build project
	1. mvn compile
(b) run tests
	1. mvn test
(c) all in one
	1. mvn package

TODO (partial list of improvements only, implementations of quality-new functionality isn't mentioned (but planned)):
*********************************************************************************************************************
	1. internationalize using Java internationalizing facility
	2. implement reader.credit functionality
	3. add client's stubs (needed in every client for obtaining info about skeleton crash; ... )
	4. fulltext indices or patial indices -- some SQL columns (like note column) are length limited yet
	5. addItems (there is random items count generated when add document through admin GUI invoked)
	6. synchronized methods in BaseServer are too slow
	7. add set-rows-count in Swing reader-find-frame (hard coded 200 used)
	8. implement "merge person" functionality
	9. improve ISBN store and/or searching mechanism (store numbers without slashes, spaces etc., change search from "=" to "LIKE")
	10.can appaer max SQL connections reached problem ???
	11. improve full text search for non-english words (too bad now - compare fulltext and regular expressions based search (see PostgresPooledDatabase.java for details)), solution can be trigram or contrib/fulltextindex (in psql case)???
	12. GUI: Swing - associate listeners with all JTextFields and ComboBoxes, add validation (reference implementation can be found in JSP version)
	           JSP - add default form submits
	13. implement adjacent words search functionality
	14. automatize rmic / idlj / libraries etc. with Maven
        15. fix rows count of results obtained by searching documents in (exactly) one library
        16. improve definition of result rows count, it should be rows per page rather than upper bound to query result length
        17. in Swing interface - add logout, read/store session
        18. in JSP interface - detect browser closing (and possibly servlet container timeout etc.)
            (at this moment, thread leaks are prevented by 5 sec wait & interrupt after logout call,
             but user have to call to logout())
            (can be done by registering HttpSessionListener???)
        19. validation in edit person page is more restrictive than required by database implementation
        20. Struts version select lists are very slow (country, language in Search.jsp)

changelog
*********
        find GPL-Library-System GPL-Library-System-JSP GPL-Library-System-Struts GPL-Library-System-Swing -type f -print0 | xargs -0 wc -l | egrep '(\.java|\.jsp|\.sh|\.idl|\.properties|\.css|\.ftl|pom\.xml|web\.xml|build\.database|\.hbm\.xml|\.cfg\.xml|testng\.xml|struts\.xml)$' | awk '{total+=$1} END {print "Lines " total}'
	shows 85.562 lines of source code

        1. some minor changes / fixes (validators)
	2. web interface rewritten in Struts2 (including simple jsr303 validation, login and browsing history interceptors, and actions-buttons-results-etc. conventions to allow add new/edit functionalities easily (in conjuction with data transfering interceptor), but performance is terrible (according to optimistics observer))
Source: README--v0.3.2, updated 2010-07-14