Part IV. Developer documentation

Table of Contents

25. Developer overview of BASE
25.1. Fixed vs. dynamic database
25.2. Hibernate and the DbEngine
25.3. The Batch API
25.4. Data classes vs. item classes
25.5. The Query API
25.6. The Controller API
25.7. Plug-ins
25.8. Client applications
26. Plug-in developer
26.1. How to organize your plug-in project
26.1.1. Using Ant
Directory layout
The build file
Building the plug-in
26.1.2. With Eclipse
26.1.3. Make the plug-in compatible with the auto-installation wizard
26.2. The Plug-in API
26.2.1. The main plug-in interfaces
The net.sf.basedb.core.plugin.Plugin interface
The net.sf.basedb.core.plugin.InteractivePlugin interface
26.2.2. How the BASE core interacts with the plug-in when...
Installing a plug-in
Configuring a plug-in
Checking if a plug-in can be used in a given context
Creating a new job
Executing a job
26.2.3. Using custom JSP pages for parameter input
26.3. Import plug-ins
26.3.1. Autodetect file formats
The net.sf.basedb.core.plugin.AutoDetectingImporter interface
Call sequence during autodetection
26.3.2. The AbstractFlatFileImporter superclass
26.4. Export plug-ins
26.4.1. Immediate download of exported data
The ImmediateDownloadExporter interface
The ExportOutputStream class
Call sequence during immediate download
26.4.2. The AbstractExporterPlugin class
26.5. Analysis plug-ins
26.5.1. The AbstractAnalysisPlugin class
26.5.2. The AnalysisFilterPlugin interface
26.6. Other plug-ins
26.6.1. Authentication plug-ins
Internal vs. external authentation
The Authenticator interface
Configuration settings
26.6.2. Secondary file storage plugins
Primary vs. secondary storage
The SecondaryStorageController interface
Configuration settings
26.6.3. File unpacker plug-ins
26.6.4. File packer plug-ins
26.6.5. File validator and metadata reader plug-ins
26.6.6. Logging plug-ins
The LogManagerFactory interface
The LogManager interface
The EntityLogger interface
26.7. Enable support for aborting a running a plug-in
26.8. How BASE load plug-in classes
26.9. Example plug-ins (with download)
27. Extensions developer
27.1. Overview
27.1.1. Download code examples
27.1.2. Terminology
27.2. Hello world as an extension
27.2.1. Extending multiple extension points with a single extension
27.3. Custom action factories
27.4. Custom images, JSP files, and other resources
27.4.1. Javascript and stylesheets
27.4.2. X-JSP files
27.5. Custom renderers and renderer factories
27.6. Extension points
27.6.1. Error handlers
27.7. Custom servlets
28. Web services
28.1. Available services
28.1.1. Services
28.2. Client development
28.2.1. Receiving files
28.3. Services development
28.3.1. Generate WSDL-files
28.4. Example web service client (with download)
29. API overview (how to use and code examples)
29.1. The Public API of BASE
29.1.1. What is backwards compatibility?
Binary compatibility
Contract compatibility
Source code compatibility
29.2. The database schema and the Data Layer API
29.2.1. Basic classes and interfaces
UML diagram
29.2.2. User authentication and access control
UML diagram
Users and passwords
Groups, roles, projects and permission template
29.2.3. Hardware and software
UML diagram
Hardware and software
29.2.4. Reporters
UML diagram
Reporter lists
29.2.5. Quota and disk usage
UML diagram
Disk usage
29.2.6. Client, session and settings
UML diagram
29.2.7. Files and directories
UML diagram
29.2.8. Experimental platforms
UML diagram
FileStoreEnabled items and data files
29.2.9. Parameters
UML diagram
29.2.10. Annotations
UML diagram
Annotation types
29.2.11. Protocols
UML diagram
29.2.12. Plug-ins, jobs and job agents
UML diagram
Job agents
29.2.13. Biomaterial LIMS
UML diagram
Biomaterial LIMS
Bioplates and plate types
Biomaterial and plate events
29.2.14. Array LIMS - plates
UML diagram
Plate events
Plate mappings
29.2.15. Array LIMS - arrays
UML diagram
Array designs
Array slides
29.2.16. Hybridizations and raw data
UML diagram
Raw data
Spot images
29.2.17. Experiments and analysis
UML diagram
Bioassay sets, bioassays and transformations
Virtual databases, datacubes, etc.
The dynamic database
29.2.18. Other classes
UML diagram
29.3. The Core API
29.3.1. Using files to store data
Diagram of classes and methods
Use case: Asking the user for files for a given item
Use case: Link, validate and extract metadata from the selected files
Use case: Import data into the database
Use case: Using raw data from files in an experiment
29.3.2. Sending signals (to plug-ins)
Diagram of classes and methods
29.4. The Query API
29.5. Analysis and the Dynamic and Batch API:s
29.6. Extensions API
29.6.1. The core part
29.6.2. The web client part
29.7. Other useful classes and methods
30. Write documentation
30.1. User, administrator and developer documentation with Docbook
30.1.1. Documentation layout
30.1.2. Getting started
Organization of source files
Controlling chunking
The id attribute
Mark help texts
Generate output
30.1.3. Docbook tags to use
Text elements
Images and figures
Examples and program listing
Link elements
30.2. Create UML diagrams with MagicDraw
30.2.1. Organisation
30.2.2. Classes
Data layer classes
Core layer classes
30.2.3. Diagrams
Create a new diagram
Visual appearance and style
Save diagram as image
30.3. Javadoc
30.3.1. Writing Javadoc
31. Core developer reference
31.1. Publishing a new release
31.2. Subversion / building BASE
31.3. Coding rules and guidelines
31.3.1. Development process and other important procedures
31.3.2. General coding style guidelines
31.3.3. API changes and backwards compatibility
Does the changes affect the Public API?
Contract compatibility
Binary compatibility
Internal data structure compatibility
Source code compatibility
31.3.4. Data-layer rules
Attributes and methods order
Class and interface names
Extend/implement the basic classes and interfaces
Define a public no-argument constructor
Object identity
No final methods
Second-level cache
Hibernate mappings
31.3.5. Item-class rules
31.3.6. Batch-class rules
31.3.7. Test-class rules
31.4. Internals of the Core API
31.4.1. Authentication and sessions
31.4.2. Access permissions
31.4.3. Data validation
31.4.4. Transaction handling
31.4.5. Create/read/write/delete operations
31.4.6. Batch operations
31.4.7. Quota
31.4.8. Plugin execution / job queue