1 | What the update script needs to do |
---|
2 | ========================================================== |
---|
3 | |
---|
4 | 1. Move [Label]:s to [Tag]:s with a subtype |
---|
5 | - Make sure the 'Label' subtype exists in the db. |
---|
6 | - Copy all labels to tags. Re-use the same id:s if |
---|
7 | possible. |
---|
8 | - Update all labeled extracts to use the new tags. |
---|
9 | |
---|
10 | - Soft references: [Item.TAG] should re-use the [Item.LABEL] |
---|
11 | id so we don't have to modify anything related to this. |
---|
12 | Soft references using 'LABEL' or 'LabelData' must be fixed. |
---|
13 | Hopefully the tags can use the same id:s as the labels. |
---|
14 | |
---|
15 | - Delete the [Labels] table. |
---|
16 | - Delete the [BioMaterials.label_id] column. |
---|
17 | |
---|
18 | |
---|
19 | 2. Convert [LabeledExtract]:s into [Extract]:s with a subtype |
---|
20 | - Make sure the 'LabeledExtract' subtype exists in the db |
---|
21 | - No move of labeled extract data is needed, just change |
---|
22 | the discriminator column from 4 to 3. |
---|
23 | - Switch from current labels to the new tags. |
---|
24 | |
---|
25 | - Soft refefecens: The [Item.LABELEDEXTRACT] is removed and |
---|
26 | all soft references to it must be changed to [Item.EXTRACT]. |
---|
27 | Item id:s don't change which is good. |
---|
28 | |
---|
29 | |
---|
30 | 3. Linking biomaterial parents |
---|
31 | - Move parent links to the new table for [BioMaterialParent]. |
---|
32 | It is a one-to-one mapping (except for the 'dummy' column) |
---|
33 | and so this should not be difficult. |
---|
34 | - Pooled biomaterials with a single parent item should copy |
---|
35 | the parent information to [BioMaterials.parent_id] column |
---|
36 | and reset the pooled flag. |
---|
37 | |
---|
38 | - Delete the [BioMaterialSources] table. |
---|
39 | |
---|
40 | 4. Move [Hybridization]:s to [PhysicalBioAssay]:s |
---|
41 | - Make sure the 'Hybridization' subtype exists. |
---|
42 | - Copy all data to the new table. It would be good if |
---|
43 | we can use the old id:s otherwise keep track of |
---|
44 | old vs. new id:s. |
---|
45 | - Update [BioMaterialEvents] table to point to the |
---|
46 | physical bioassays. |
---|
47 | |
---|
48 | - Soft references: [Item.PHYSICALBIOASSAY] should re-use the |
---|
49 | [Item.HYBRIDIZATION] id so we don't have to modify anything |
---|
50 | related to this. |
---|
51 | Soft references using 'HYBRIDIZATION' or 'HybridizationData' |
---|
52 | must be fixed. Hopefully the bioassays can use the same id:s |
---|
53 | as the hybridizations. |
---|
54 | |
---|
55 | - Delete the [BioMaterialEvents.hybridization_id] column. |
---|
56 | |
---|
57 | 5. Move [Scan]:s to [DerivedBioAssaySet] |
---|
58 | - Make sure the 'Scan' subtype exists |
---|
59 | - Copy all data to the new table. Make sure the correct |
---|
60 | physical bioassay is linked (easy if they keep the old |
---|
61 | id:s). |
---|
62 | - Create [DerivedBioAssay] for each array index used on the |
---|
63 | hybridization the scan is taken from. Try to link the bioassay |
---|
64 | with the extract on that index. |
---|
65 | - Move images to [FileSet] for the bioassay set. Image properties |
---|
66 | should be added as annotations. |
---|
67 | |
---|
68 | - Update [RawBioassay]:s created from the scan to use the |
---|
69 | derived bioassay instead. |
---|
70 | |
---|
71 | - Soft references: [Item.DERIVEDBIOASSAYSET] should re-use the |
---|
72 | [Item.SCAN] id so we don't have to modify anything |
---|
73 | related to this. |
---|
74 | Soft references using 'SCAN' or 'ScanData' must be fixed. |
---|
75 | Hopefully the bioassay setss can use the same id:s as the |
---|
76 | scans. |
---|
77 | |
---|
78 | - Delete the [RawBioAssays.scan_id] column. |
---|
79 | - Delete the [Images] table. |
---|
80 | - Delete the [Scans] table. |
---|
81 | - Delete the [Hybridizations] table. |
---|
82 | |
---|
83 | 6. Core plug-ins |
---|
84 | Some of the core plug-ins are affected a lot by the changes. |
---|
85 | - Labeled extract importer |
---|
86 | - Hybridization importer |
---|
87 | - Scan importer |
---|
88 | - Raw bioassay importer |
---|
89 | - Annotation importer? |
---|
90 | |
---|
91 | I have not yet investigated what the best approach is. One option |
---|
92 | is to disable the old plug-ins and create new plug-ins for the new |
---|
93 | item types. The other biomaterial importers are also affected, but it |
---|
94 | should be possible to update them with new functionality. Eg. work |
---|
95 | on specific item subtype and parent/pooled item changes. |
---|
96 | |
---|
97 | |
---|
98 | |
---|
99 | Soft item references |
---|
100 | -------------------- |
---|
101 | The database has several places with soft references. This is |
---|
102 | typically a two-column reference where one column holds the id |
---|
103 | of the item and the other the type of item. In most cases the |
---|
104 | type is the integer value from Item.getValue(), but it can also |
---|
105 | be the Item.name() value or the Item.getClass().getName() value. |
---|
106 | When we move and/or convert between item types we need to update |
---|
107 | the soft references. |
---|
108 | |
---|
109 | So far, I have found the following tables with soft references: |
---|
110 | |
---|
111 | - AnnotationSets: item_type and item_id |
---|
112 | Update the item_type and item_id so that it references the |
---|
113 | new/moved item. |
---|
114 | |
---|
115 | - AnnotationTypeItems: item_type |
---|
116 | Update the item_type. |
---|
117 | |
---|
118 | - AnyToAny: from_id, from_type, to_id, to_type |
---|
119 | Update the id:s and type:s so that they references the |
---|
120 | new/moved items. |
---|
121 | |
---|
122 | - BioMaterialLists: member_type |
---|
123 | Update the member_type. |
---|
124 | |
---|
125 | - BioPlateTypes: biomaterial_type |
---|
126 | Update the biomaterial_type. |
---|
127 | |
---|
128 | - ChangeHistoryDetails: item_type and item_id |
---|
129 | Update the item_type and item_id so that it references the |
---|
130 | new/moved item. |
---|
131 | |
---|
132 | - Contexts: item_type and item_id |
---|
133 | |
---|
134 | - ContextSettings: value |
---|
135 | Probably has settings related to most recently used |
---|
136 | items. I guess it is easiest to simply remove those |
---|
137 | settings for affected item types. |
---|
138 | |
---|
139 | - ItemValues: data_class and data_class_id |
---|
140 | Update to the new class and id. |
---|
141 | |
---|
142 | - Jobs: context_item |
---|
143 | Update to the new item type. |
---|
144 | |
---|
145 | - Keys: item_type |
---|
146 | Hmmm... remove/merge/or...??? |
---|
147 | |
---|
148 | - PluginDefinitionGuiContexts: item_type |
---|
149 | Remove non-existing contexts and let plug-ins register |
---|
150 | for new contexts themself. |
---|
151 | |
---|
152 | - |
---|
153 | |
---|
154 | |
---|
155 | |
---|
156 | |
---|