Part IV. Developer documentation

Table of Contents

24. Migrating code from BASE 2 to BASE 3
24.1. Compiling the code against BASE 3
24.2. Core API changes
24.3. Packaging your plug-in so that it installs in BASE 3
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. The Extensions API
25.8. Plug-ins
25.9. Client applications
26. Plug-in developer
26.1. How to organize your plug-in project
26.1.1. Using Ant
Directory and file layout
The build file
Building the plug-in
26.1.2. Make the plug-in compatible with the auto-installation wizard
Installing plug-in configurations
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. Abort a running a plug-in
26.2.4. 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
Configure by example
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. File unpacker plug-ins
26.6.2. File packer plug-ins
26.7. How BASE load plug-in classes
26.8. 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. The extensions.xml file
27.2.2. 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
27.8. Extension points defined by BASE
27.8.1. Menu: extensions
27.8.2. Toolbars
27.8.3. Edit dialogs
27.8.4. Bioassay set: Tools
27.8.5. Bioassay set: Overview plots
27.8.6. Services
27.8.7. Service actions
27.8.8. Connection managers
27.8.9. Fileset validators
27.8.10. Logging managers
The LogManagerFactory interface
The LogManager interface
The EntityLogger interface
27.8.11. Item overview loaders
27.8.12. Item overview validation
27.8.13. Item overview information
27.8.14. Table list columns
27.8.15. Query filters
27.8.16. Login manager
Supporting multiple installed login managers
Internal vs. external authentation
Configuration settings
27.8.17. Login form
The before-login event
27.8.18. Skins
27.8.19. Start page
28. Web services
29. The BASE API
29.1. The Public API of BASE
29.1.1. What is backwards compatibility?
Binary compatibility
Contract compatibility
Source code compatibility
29.2. The Data Layer API
29.2.1. Basic classes and interfaces
Classes
Interfaces
29.2.2. User authentication and access control
Users and passwords
Groups, roles, projects and permission template
Keys
Permissions
29.2.3. Reporters
Reporters
Reporter lists
29.2.4. Quota and disk usage
Quota
Disk usage
29.2.5. Client, session and settings
Clients
Sessions
Settings
29.2.6. Files and directories
29.2.7. Experimental platforms and item subtypes
Platforms
Item subtypes
FileStoreEnabled items and data files
29.2.8. Parameters
29.2.9. Annotations
Annotations
Annotation types
Units
Categories
29.2.10. Protocols, hardware and software
Protocols
Parameters
Hardware and software
29.2.11. Plug-ins, jobs and job agents
Plug-ins
Jobs
Job agents
29.2.12. Biomaterial LIMS
Biomaterials
Bioplates and plate types
Biomaterial and plate events
29.2.13. Array LIMS - plates
Plates
Plate events
Plate mappings
29.2.14. Array LIMS - arrays
Array designs
Array slides
29.2.15. Bioassays and raw data
Physical bioassays
Raw data
29.2.16. Experiments and analysis
Experiments
Bioassay sets, bioassays and transformations
Virtual databases, datacubes, etc.
The dynamic database
29.2.17. Other classes
29.3. The Core API
29.3.1. Authentication and sessions
29.3.2. Access permissions
29.3.3. Data validation
29.3.4. Transaction handling
29.3.5. Create/read/write/delete operations
29.3.6. Batch operations
29.3.7. Quota
29.3.8. Plugin execution / job queue
29.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
29.3.10. Sending signals (to plug-ins)
Diagram of classes and methods
29.4. The Query API
29.5. The Dynamic API
29.6. The 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
Create new chapter/file
Controlling chunking
The id attribute
Help text for the BASE web client
Build the documentation
30.1.3. Docbook tags to use
Text elements
Code elements
Gui elements
Images and figures
Examples and program listing
Admonitions
Lists
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
Naming
Layout and comments
Statements
31.3.3. API changes and backwards compatibility
31.3.4. Data-layer rules
31.3.5. Item-class rules
Basic class and interface hierarchy
Access permissions
Data validation
Participating in transactions
Template code for item classes
31.3.6. Batch-class rules
31.3.7. Test-class rules