Guide
For developers (please click this link if you are a developer for tDAR)
- Configure tDAR development server (NECESSARY for new developer in this group)
- tDAR functionality
- Design database scheme
- Source codes structure
- Data integration test environment
- Tests to be done (white box)
- Deploying tDAR on a server
Set up the development environment
- Download and install Maven 2 from http://maven.apache.org
- check out the codebase from our SVN repository
- set up the database by performing the following:
- make sure you have a tdar user with CREATEDB permissions on postgres
- copy hibernate.properties.template to hibernate.properties, customize if necessary
- run mvn -P ant -D target=load-data to load the legacy gridsphere data and update the schema to conform with tdar.struts version. If you want a clean database, replace target=load-data with target=initialize-data
- copy crowd.properties.template in src/main/webapp/WEB-INF/classes/ to crowd.properties, customize if necessary
- use mvn eclipse:eclipse to generate .project & .classpath files, then add M2_REPO to the variables via Build Path -> Add Variable and set it to your local Maven 2 repository (on Unix, should be ~/.m2/repository)
- to make google maps work on your development box, copy src/main/webapp/includes/googlemaps-api-key.js.template to src/main/webapp/includes/googlemaps-api-key.js and then customize it by changing the gmapsKey variable to the google maps api key for your host. You can get a google maps api key at http://code.google.com/apis/maps/signup.html
#Important maven targets include:- mvn compile
- mvn test
- mvn jetty:run to deploy the webapp on the port specified in pom.xml
| Maven dependencies To add new library dependencies, you can look them up via a repository search engine like http://mvnrepository.com or http://mavensearch.net (see http://maven.apache.org/general.html#How_to_find_dependencies for more repository search engines). If so, add the pom snippet to the pom.xml, otherwise you may need to install it manually in our local maven staging repository. |
Resources and Links
Development Infrastructure
Coding Standards
Design Document
Technology stack
Hibernate: http://hibernate.org
We currently use Hibernate 3 for object relational mapping. Relationships are specified via JPA annotations though the actual DAOs used to store, retrieve, and update persistent entities use a hibernate SessionFactory behind the scenes instead of an EntityManager, which would be the most framework-agnostic way of object relational mapping.
More information about the tDAR hibernate implementation can be found at the tDAR Hibernate Documentation Page
Spring: http://www.springframework.org
We are currently using Spring to make Hibernate easier to use, for dependency injection/IoC purposes (managing our beans/services/daos/data sources/hibernate sessions) and for transaction management.
Struts 2: http://struts.apache.org
We are currently using Struts 2.1.6 as the web application framework. More information about the Struts implementation can be found at the tDAR Struts Documentation Page.
- A quick primer on the web technologies used by struts: http://struts.apache.org/primer.html
Protege
- Protege web tool: http://bmir-protege-dev1.stanford.edu/webprotege/
Other Web Frameworks
URL Rewriting: http://tuckey.org/urlrewrite/
Performance tuning
- http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
- http://www.hibernate.org/hib_docs/reference/en/html/performance.html
- http://struts.apache.org/2.x/docs/performance-tuning.html
Massively parallel data stores
- Hadoop+HBase vs RDBMS
- Hadoop applicability
We should look into Hadoop for ideas about scaling data integration and/or representation of datasets
Other documents and miscellany
- Interesting ppt presentation on integrating ontologies with application development (out of date though)
- Older Gridsphere docs: GridSphere and Gridsphere Infrastructure
- Many Eyes
- Swivel
- interesting dataset visualization possibilities - http://googlegeodevelopers.blogspot.com/2009/01/timemap-helping-you-add-4th-dimension.html