Part IV. Developer documentation

Table of Contents

23. Migrating code from BASE 2 to BASE 3
23.1. Compiling the code against BASE 3
23.2. Core API changes
23.3. Packaging your plug-in so that it installs in BASE 3
24. Developer overview of BASE
24.1. Fixed vs. dynamic database
24.2. Hibernate and the DbEngine
24.3. The Batch API
24.4. Data classes vs. item classes
24.5. The Query API
24.6. The Controller API
24.7. The Extensions API
24.8. Plug-ins
24.9. Client applications
25. Plug-in developer
25.1. How to organize your plug-in project
25.1.1. Using Ant
Directory and file layout
The build file
Building the plug-in
25.1.2. Make the plug-in compatible with the auto-installation wizard
Installing plug-in configurations
25.2. The Plug-in API
25.2.1. The main plug-in interfaces
The net.sf.basedb.core.plugin.Plugin interface
The net.sf.basedb.core.plugin.InteractivePlugin interface
25.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
25.2.3. Abort a running a plug-in
25.2.4. Using custom JSP pages for parameter input
25.3. Import plug-ins
25.3.1. Autodetect file formats
The net.sf.basedb.core.plugin.AutoDetectingImporter interface
Call sequence during autodetection
25.3.2. The AbstractFlatFileImporter superclass
Configure by example
25.4. Export plug-ins
25.4.1. Immediate download of exported data
The ImmediateDownloadExporter interface
The ExportOutputStream class
Call sequence during immediate download
25.4.2. The AbstractExporterPlugin class
25.5. Analysis plug-ins
25.5.1. The AbstractAnalysisPlugin class
25.5.2. The AnalysisFilterPlugin interface
25.6. Other plug-ins
25.6.1. Authentication plug-ins
25.6.2. Secondary file storage plugins
Primary vs. secondary storage
The SecondaryStorageController interface
Configuration settings
25.6.3. File unpacker plug-ins
25.6.4. File packer plug-ins
25.7. How BASE load plug-in classes
25.8. Example plug-ins (with download)
26. Extensions developer
26.1. Overview
26.1.1. Download code examples
26.1.2. Terminology
26.2. Hello world as an extension
26.2.1. Extending multiple extension points with a single extension
26.3. Custom action factories
26.4. Custom images, JSP files, and other resources
26.4.1. Javascript and stylesheets
26.4.2. X-JSP files
26.5. Custom renderers and renderer factories
26.6. Extension points
26.6.1. Error handlers
26.7. Custom servlets
26.8. Extension points defined by BASE
26.8.1. Menu: extensions
26.8.2. Toolbars
26.8.3. Edit dialogs
26.8.4. Bioassay set: Tools
26.8.5. Bioassay set: Overview plots
26.8.6. Services
26.8.7. Connection managers
26.8.8. Fileset validators
26.8.9. Logging managers
The LogManagerFactory interface
The LogManager interface
The EntityLogger interface
26.8.10. Item overview loaders
26.8.11. Item overview validation
26.8.12. Item overview information
26.8.13. Table list columns
26.8.14. Login manager
Internal vs. external authentation
Configuration settings
26.8.15. Login form
27. Web services
27.1. Available services
27.1.1. Services
27.2. Client development
27.2.1. Receiving files
27.3. Services development
27.3.1. Generate WSDL-files
27.4. Example web service client (with download)
28. The BASE API
28.1. The Public API of BASE
28.1.1. What is backwards compatibility?
Binary compatibility
Contract compatibility
Source code compatibility
28.2. The Data Layer API
28.2.1. Basic classes and interfaces
Classes
Interfaces
28.2.2. User authentication and access control
Users and passwords
Groups, roles, projects and permission template
Keys
Permissions
28.2.3. Reporters
Reporters
Reporter lists
28.2.4. Quota and disk usage
Quota
Disk usage
28.2.5. Client, session and settings
Clients
Sessions
Settings
28.2.6. Files and directories
28.2.7. Experimental platforms and item subtypes
Platforms
Item subtypes
FileStoreEnabled items and data files
28.2.8. Parameters
28.2.9. Annotations
Annotations
Annotation types
Units
Categories
28.2.10. Protocols, hardware and software
Protocols
Parameters
Hardware and software
28.2.11. Plug-ins, jobs and job agents
Plug-ins
Jobs
Job agents
28.2.12. Biomaterial LIMS
Biomaterials
Bioplates and plate types
Biomaterial and plate events
28.2.13. Array LIMS - plates
Plates
Plate events
Plate mappings
28.2.14. Array LIMS - arrays
Array designs
Array slides
28.2.15. Bioassays and raw data
Physical bioassays
Raw data
Spot images
28.2.16. Experiments and analysis
Experiments
Bioassay sets, bioassays and transformations
Virtual databases, datacubes, etc.
The dynamic database
28.2.17. Other classes
28.3. The Core API
28.3.1. Authentication and sessions
28.3.2. Access permissions
28.3.3. Data validation
28.3.4. Transaction handling
28.3.5. Create/read/write/delete operations
28.3.6. Batch operations
28.3.7. Quota
28.3.8. Plugin execution / job queue
28.3.9. 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
28.3.10. Sending signals (to plug-ins)
Diagram of classes and methods
28.4. The Query API
28.5. The Dynamic API
28.6. The Extensions API
28.6.1. The core part
28.6.2. The web client part
28.7. Other useful classes and methods
29. Write documentation
29.1. User, administrator and developer documentation with Docbook
29.1.1. Documentation layout
29.1.2. Getting started
Organization of source files
Create new chapter/file
Controlling chunking
The id attribute
Help text for the BASE web client
Build the documentation
29.1.3. Docbook tags to use
Text elements
Code elements
Gui elements
Images and figures
Examples and program listing
Admonitions
Lists
Link elements
29.2. Create UML diagrams with MagicDraw
29.2.1. Organisation
29.2.2. Classes
Data layer classes
Core layer classes
29.2.3. Diagrams
Create a new diagram
Visual appearance and style
Save diagram as image
29.3. Javadoc
29.3.1. Writing Javadoc
30. Core developer reference
30.1. Publishing a new release
30.2. Subversion / building BASE
30.3. Coding rules and guidelines
30.3.1. Development process and other important procedures
30.3.2. General coding style guidelines
Naming
Layout and comments
Statements
30.3.3. API changes and backwards compatibility
30.3.4. Data-layer rules
30.3.5. Item-class rules
Basic class and interface hierarchy
Access permissions
Data validation
Participating in transactions
Template code for item classes
30.3.6. Batch-class rules
30.3.7. Test-class rules