Opened 8 years ago
Last modified 2 years ago
#911 closed task
MeLuDI should support multiple projects — at Version 6
Reported by: | olle | Owned by: | olle |
---|---|---|---|
Priority: | major | Milestone: | MeLuDI v1.5.0 |
Component: | net.sf.basedb.meludi | Keywords: | |
Cc: |
Description (last modified by )
MeLuDI should support multiple projects using the same major pipeline of laboratory registration steps. The projects should be run on the same BASE installation, but as separate BASE project items.
MeLuDI should allow each project to have:
- Its own set of item counters.
- Its own counter for sample label generation purposes.
- Its own sample name prefix.
- Its project name printed on protocols generated by MeLuDI.
Change History (6)
comment:1 by , 8 years ago
Status: | new → assigned |
---|
comment:2 by , 8 years ago
Traceability note:
- MeLuDi v.1.0 was introduced in Ticket #690 (MeLuDi - Registration wizard for melanoma-lung cancer projects).
- MeLuDi v.1.1 was introduced in Ticket #718 (MeLuDi v.1.0 bug fixes and improvements).
- MeLuDi v.1.2 was introduced in Ticket #725 (MeLuDi v.1.1 bug fixes and improvements).
- MeLuDI v.1.2.1 was introduced in Ticket #759 (MeLuDi v.1.2 bug fixes and improvements).
- MeLuDI v.1.2.2 was introduced in Ticket #767 (MeLuDI v.1.2.1 bug fixes and improvements).
- MeLuDI v.1.2.3 was introduced in Ticket #768 (MeLuDI v.1.2.2 bug fixes and improvements).
- MeLuDI v.1.2.4 was introduced in Ticket #777 (MeLuDI v.1.2.3 bug fixes and improvements).
- MeLuDI v.1.2.5 was introduced in Ticket #786 (MeLuDI v.1.2.4 bug fixes and improvements).
- MeLuDI v.1.3.1 was introduced in Ticket #792 (MeLuDI v.1.2.5 bug fixes and improvements).
- First version of library preparation wizards was introduced in Ticket #801 (MeLuDI library preparation wizards first version).
- MeLuDI v.1.3.2 was introduced in Ticket #802 (MeLuDI v.1.3.1 bug fixes and improvements).
- MeLuDI v.1.3.3 was introduced in Ticket #815 (MeLuDI v.1.3.2 bug fixes and improvements).
- MeLuDI v.1.4.0 was introduced in Ticket #816 (MeLuDI v.1.3.3 bug fixes and improvements).
- MeLuDI v.1.4.1 was introduced in Ticket #836 (MeLuDI v.1.4.0 bug fixes and improvements).
- MeLuDI v.1.4.2 was introduced in Ticket #837 (MeLuDI v.1.4.1 bug fixes and improvements).
- MeLuDI v.1.4.3 was introduced in Ticket #880 (MeLuDI v.1.4.2 bug fixes and improvements).
comment:3 by , 8 years ago
(In [4125]) Refs #911. Updates due to version number change to "1.5.0-dev
".
- Version number changed to "
1.5.0-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:4 by , 8 years ago
Design discussion:
- Allowing each BASE project to have its own set of item counters is not trivial, since the counters are managed by a service, that in the original version assumed that only one project, named "
MeLuDI
", was of interest (Reggie makes the same assumption for the "SCAN-B
" project). A solution where the service calculates item counters for all projects, and the set for the currently active project is then return from theSessionServlet
, has been tested and seems to work:
- Java class/file
Meludi.java
insrc/net/sf/basedb/meludi/
is updated with new public static synchronized methodHashMap<Integer,SessionControl> getRootSessionControlHM(SessionControl systemSc)
added. It returns a hash map of session controls, where each project is active, with project id as key. It is meant to be used instead of public static synchronized methodSessionControl getRootSessionControl(SessionControl systemSc)
for item counting purposes. - Java class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated to count items for all projects, and return counters for a requested project, given the id value for the latter. Old code is retained, but commented out, for comparison:
a. Private volatile instance variableJSONObject currentCounts
replaced by private volatile instance variableJSONObject currentCountsAllProjects
(in principle the old variable could have been used, but since the data contents have changed, a new name seemed more appropriate).
b. Public synchronized methodsvoid start(SessionControl systemSc, Extension ext)
andvoid stop()
updated to use the new JSONObject instance variablecurrentCountsAllProjects
instead ofcurrentCounts
.
c. Public methodJSONObject getCurrentCounts()
commented out, as it is replaced by new public methodJSONObject getCurrentProjectCounts(Integer projectId)
.
d. New public methodJSONObject getCurrentProjectCounts(Integer projectId)
added. It returns a JSONObject with item counts for the active project stored in new private volatile instance variableJSONObject currentCountsAllProjects
, with project id values as keys.
e. Package private methodvoid count()
updated to callMeludi
new public static synchronized methodHashMap<Integer,SessionControl> getRootSessionControlHM(SessionControl systemSc)
to get a hash map of session controls for different active projects, and then calculate item counts for each project and store the results in JSONObject instance variablecurrentCountsAllProjects
with the project id values as keys. - Java servlet class/file
SessionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetCounters
" to callCounterService
new public methodJSONObject getCurrentProjectCounts(Integer projectId)
to get a JSONObject with item counts for the active project, instead ofJSONObject getCurrentCounts()
.
comment:5 by , 8 years ago
(In [4127]) Refs #911. MeLuDI updated to display item counters for the active project:
- Java class/file
Meludi.java
insrc/net/sf/basedb/meludi/
is updated with new public static synchronized methodHashMap<Integer,SessionControl> getRootSessionControlHM(SessionControl systemSc)
added. It returns a hash map of session controls, where each project is active, with project id as key. It is meant to be used instead of public static synchronized methodSessionControl getRootSessionControl(SessionControl systemSc)
for item counting purposes. - Java class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated to count items for all projects, and return counters for a requested project, given the id value for the latter. Old code is retained, but commented out, for comparison:
a. Private volatile instance variableJSONObject currentCounts
replaced by private volatile instance variableJSONObject currentCountsAllProjects
(in principle the old variable could have been used, but since the data contents have changed, a new name seemed more appropriate).
b. Public synchronized methodsvoid start(SessionControl systemSc, Extension ext)
andvoid stop()
updated to use the new JSONObject instance variablecurrentCountsAllProjects
instead ofcurrentCounts
.
c. Public methodJSONObject getCurrentCounts()
commented out, as it is replaced by new public methodJSONObject getCurrentProjectCounts(Integer projectId)
.
d. New public methodJSONObject getCurrentProjectCounts(Integer projectId)
added. It returns a JSONObject with item counts for the active project stored in new private volatile instance variableJSONObject currentCountsAllProjects
, with project id values as keys.
e. Package private methodvoid count()
updated to callMeludi
new public static synchronized methodHashMap<Integer,SessionControl> getRootSessionControlHM(SessionControl systemSc)
to get a hash map of session controls for different active projects, and then calculate item counts for each project and store the results in JSONObject instance variablecurrentCountsAllProjects
with the project id values as keys. - Java servlet class/file
SessionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetCounters
" to callCounterService
new public methodJSONObject getCurrentProjectCounts(Integer projectId)
to get a JSONObject with item counts for the active project, instead ofJSONObject getCurrentCounts()
.
comment:6 by , 8 years ago
Description: | modified (diff) |
---|
Ticket description updated by adding missing "label
" specification in second item in request list.
Note:
See TracTickets
for help on using tickets.
Ticket accepted.