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
- Eclipse Setup / Configuration
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
- in src/main/resources copy all *.template files, removing their .template extension, e.g.,
cd src/main/resources; for i in *.template; do cp $i `basename $i .template`; done; cd -;
.
Customize as necessary, but the template files should work for most cases. - set up the tdarmetadata and tdardata databases (this step should be managed automatically if possible)
- use mvn eclipse:eclipse to generate Eclipse's .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-ish machines, this should be ~/.m2/repository. If you're using the m2eclipse plugin , this step usually isn't necessary.
- 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
- mvn verify to run the unit and integration tests
| 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. You can also add maven repositories to Archiva as a proxy connector, which will keep our pom.xml simpler. |
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.2.1 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