1474 |
29 Nov 11 |
pawels |
1 |
/******************************************************************************* |
1474 |
29 Nov 11 |
pawels |
* Copyright (c) 2011 The Norwegian Microarray Consortium. |
1474 |
29 Nov 11 |
pawels |
* All rights reserved. This program and the accompanying materials |
1474 |
29 Nov 11 |
pawels |
* are made available under the terms of the GNU Public License v3.0 |
1474 |
29 Nov 11 |
pawels |
* which accompanies this distribution, and is available at |
1474 |
29 Nov 11 |
pawels |
* http://www.gnu.org/licenses/gpl-3.0.html |
1474 |
29 Nov 11 |
pawels |
7 |
* |
1474 |
29 Nov 11 |
pawels |
* Contributors: |
1474 |
29 Nov 11 |
pawels |
* The Norwegian Microarray Consortium - initial API and implementation |
1474 |
29 Nov 11 |
pawels |
10 |
******************************************************************************/ |
1474 |
29 Nov 11 |
pawels |
11 |
package no.uib.cbu.base.magetabexport; |
1474 |
29 Nov 11 |
pawels |
12 |
|
1474 |
29 Nov 11 |
pawels |
13 |
import java.util.Hashtable; |
1474 |
29 Nov 11 |
pawels |
14 |
import no.uib.cbu.base.magetabexport.ItemInfo.TYPE; |
1474 |
29 Nov 11 |
pawels |
15 |
|
1474 |
29 Nov 11 |
pawels |
16 |
public class SDRFEntry { |
1474 |
29 Nov 11 |
pawels |
17 |
|
1474 |
29 Nov 11 |
pawels |
18 |
private String DELIMITER = MageTabExporterSettings.DELIMITER; |
1474 |
29 Nov 11 |
pawels |
19 |
|
1474 |
29 Nov 11 |
pawels |
20 |
private Hashtable<ItemInfo.TYPE, ItemInfo> items; |
1474 |
29 Nov 11 |
pawels |
21 |
private Hashtable<String, String> factors; |
1474 |
29 Nov 11 |
pawels |
22 |
private String label = null; |
1474 |
29 Nov 11 |
pawels |
23 |
private String arrayDesign = null; |
1474 |
29 Nov 11 |
pawels |
24 |
|
1474 |
29 Nov 11 |
pawels |
25 |
|
1474 |
29 Nov 11 |
pawels |
26 |
public SDRFEntry() { |
1474 |
29 Nov 11 |
pawels |
27 |
items = new Hashtable<ItemInfo.TYPE, ItemInfo>(); |
1474 |
29 Nov 11 |
pawels |
28 |
factors = new Hashtable<String, String>(); |
1474 |
29 Nov 11 |
pawels |
29 |
} |
1474 |
29 Nov 11 |
pawels |
30 |
|
1474 |
29 Nov 11 |
pawels |
31 |
/** |
1474 |
29 Nov 11 |
pawels |
* Add an item to the sample entry. Only one item of a given type can be added. |
1474 |
29 Nov 11 |
pawels |
33 |
*/ |
1474 |
29 Nov 11 |
pawels |
34 |
public void addItem(ItemInfo ii) { |
1474 |
29 Nov 11 |
pawels |
35 |
items.put(ii.getType(), ii); |
1474 |
29 Nov 11 |
pawels |
36 |
} |
1474 |
29 Nov 11 |
pawels |
37 |
|
1474 |
29 Nov 11 |
pawels |
38 |
/** |
1474 |
29 Nov 11 |
pawels |
* Add experimental factor |
1474 |
29 Nov 11 |
pawels |
* @param factorName |
1474 |
29 Nov 11 |
pawels |
* @param factorValue |
1474 |
29 Nov 11 |
pawels |
42 |
*/ |
1474 |
29 Nov 11 |
pawels |
43 |
public void addExperimentalFactor(String factorName, String factorValue) { |
1474 |
29 Nov 11 |
pawels |
44 |
factors.put(factorName, factorValue); |
1474 |
29 Nov 11 |
pawels |
45 |
} |
1474 |
29 Nov 11 |
pawels |
46 |
|
1474 |
29 Nov 11 |
pawels |
47 |
/** |
1474 |
29 Nov 11 |
pawels |
* Set label |
1474 |
29 Nov 11 |
pawels |
* @param label |
1474 |
29 Nov 11 |
pawels |
50 |
*/ |
1474 |
29 Nov 11 |
pawels |
51 |
public void setLabel(String label) { |
1474 |
29 Nov 11 |
pawels |
52 |
this.label = label; |
1474 |
29 Nov 11 |
pawels |
53 |
} |
1474 |
29 Nov 11 |
pawels |
54 |
|
1474 |
29 Nov 11 |
pawels |
55 |
public void setArrayDesign(String arrayDesign) { |
1474 |
29 Nov 11 |
pawels |
56 |
this.arrayDesign = arrayDesign; |
1474 |
29 Nov 11 |
pawels |
57 |
} |
1474 |
29 Nov 11 |
pawels |
58 |
|
1474 |
29 Nov 11 |
pawels |
59 |
|
1474 |
29 Nov 11 |
pawels |
60 |
public String toString() { |
1474 |
29 Nov 11 |
pawels |
61 |
StringBuilder sb = new StringBuilder(); |
1474 |
29 Nov 11 |
pawels |
62 |
|
1474 |
29 Nov 11 |
pawels |
// for all the item types (in correct order), print their properties |
1474 |
29 Nov 11 |
pawels |
64 |
for (ItemInfo.TYPE type : ItemInfo.TYPE.values()) { |
1474 |
29 Nov 11 |
pawels |
65 |
|
1474 |
29 Nov 11 |
pawels |
// if the type of item is not present, skip it |
1474 |
29 Nov 11 |
pawels |
67 |
if (!items.containsKey(type)) { |
1474 |
29 Nov 11 |
pawels |
68 |
continue; |
1474 |
29 Nov 11 |
pawels |
69 |
} |
1474 |
29 Nov 11 |
pawels |
70 |
|
1474 |
29 Nov 11 |
pawels |
71 |
ItemInfo item = items.get(type); |
1474 |
29 Nov 11 |
pawels |
72 |
|
1474 |
29 Nov 11 |
pawels |
// print protocol information (not applicable to all) |
1474 |
29 Nov 11 |
pawels |
74 |
ProtocolInfo protocol = item.getProtocol(); |
1474 |
29 Nov 11 |
pawels |
75 |
if (protocol != null) { |
1474 |
29 Nov 11 |
pawels |
76 |
String pRef = protocol.getProtocolRef(); |
1474 |
29 Nov 11 |
pawels |
77 |
sb.append(Utils.quote(pRef) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
78 |
sb.append(Utils.quote(TermSources.guessSource(pRef)) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
79 |
|
1474 |
29 Nov 11 |
pawels |
80 |
for (String pname : protocol.getAllParameterNames()) { |
1474 |
29 Nov 11 |
pawels |
81 |
String value = protocol.getParameterValue(pname); |
1474 |
29 Nov 11 |
pawels |
// print empty value if null |
1474 |
29 Nov 11 |
pawels |
// if (value == null) { value = ""; } |
1474 |
29 Nov 11 |
pawels |
84 |
sb.append(Utils.quote(value) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
85 |
} |
1474 |
29 Nov 11 |
pawels |
86 |
} |
1474 |
29 Nov 11 |
pawels |
87 |
|
1474 |
29 Nov 11 |
pawels |
// print name |
1474 |
29 Nov 11 |
pawels |
89 |
sb.append(Utils.quote(item.getName()) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
90 |
|
1474 |
29 Nov 11 |
pawels |
// print type-specific additional fields |
1474 |
29 Nov 11 |
pawels |
92 |
if (type.equals(ItemInfo.TYPE.LABELED_EXTRACT) || type.equals(ItemInfo.TYPE.POOLED_LABELED_EXTRACT)) { |
1474 |
29 Nov 11 |
pawels |
93 |
sb.append(Utils.quote(label) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
94 |
} |
1474 |
29 Nov 11 |
pawels |
95 |
if (type.equals(ItemInfo.TYPE.SOURCE) || |
1474 |
29 Nov 11 |
pawels |
96 |
type.equals(ItemInfo.TYPE.SAMPLE) || type.equals(ItemInfo.TYPE.POOLED_SAMPLE) || |
1474 |
29 Nov 11 |
pawels |
97 |
type.equals(ItemInfo.TYPE.EXTRACT) || type.equals(ItemInfo.TYPE.POOLED_EXTRACT) || |
1474 |
29 Nov 11 |
pawels |
98 |
type.equals(ItemInfo.TYPE.LABELED_EXTRACT) || type.equals(ItemInfo.TYPE.POOLED_LABELED_EXTRACT)) { |
1474 |
29 Nov 11 |
pawels |
99 |
String mt = item.getMaterialType(); |
1474 |
29 Nov 11 |
pawels |
100 |
sb.append(Utils.quote(mt) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
101 |
} |
1474 |
29 Nov 11 |
pawels |
102 |
if (type.equals(ItemInfo.TYPE.HYBRIDIZATION)) { |
1474 |
29 Nov 11 |
pawels |
103 |
sb.append(Utils.quote(arrayDesign) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
104 |
sb.append(TermSources.guessSource(arrayDesign) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
105 |
} |
1474 |
29 Nov 11 |
pawels |
106 |
|
1474 |
29 Nov 11 |
pawels |
// print (optional) characteristics |
1474 |
29 Nov 11 |
pawels |
108 |
for (String chName : item.getAllCharacteristicsNames()) { |
1474 |
29 Nov 11 |
pawels |
109 |
|
1474 |
29 Nov 11 |
pawels |
110 |
String value = item.getCharacteristicValue(chName); |
1474 |
29 Nov 11 |
pawels |
// print empty value if null |
1474 |
29 Nov 11 |
pawels |
//if (value == null) { value = "";} |
1474 |
29 Nov 11 |
pawels |
113 |
sb.append(Utils.quote(value) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
114 |
|
1474 |
29 Nov 11 |
pawels |
115 |
// |
1474 |
29 Nov 11 |
pawels |
// currently no source information for characteristics is created by the SDRFCreator |
1474 |
29 Nov 11 |
pawels |
117 |
// |
1474 |
29 Nov 11 |
pawels |
118 |
String source = item.getCharacteristicSource(chName); |
1474 |
29 Nov 11 |
pawels |
119 |
if (source != null) { // print source only if not null |
1474 |
29 Nov 11 |
pawels |
120 |
sb.append(Utils.quote(source) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
121 |
} |
1474 |
29 Nov 11 |
pawels |
122 |
} |
1474 |
29 Nov 11 |
pawels |
123 |
|
1474 |
29 Nov 11 |
pawels |
124 |
} |
1474 |
29 Nov 11 |
pawels |
125 |
|
1474 |
29 Nov 11 |
pawels |
// print factor values |
1474 |
29 Nov 11 |
pawels |
127 |
for (String name : factors.keySet()) { |
1474 |
29 Nov 11 |
pawels |
128 |
sb.append(Utils.quote(factors.get(name)) + DELIMITER); |
1474 |
29 Nov 11 |
pawels |
129 |
} |
1474 |
29 Nov 11 |
pawels |
130 |
|
1474 |
29 Nov 11 |
pawels |
// return after clipping off the trailing delimiter |
1474 |
29 Nov 11 |
pawels |
132 |
return Utils.removeTrailingString(sb.toString(), DELIMITER); |
1474 |
29 Nov 11 |
pawels |
133 |
} |
1474 |
29 Nov 11 |
pawels |
134 |
|
1474 |
29 Nov 11 |
pawels |
135 |
Hashtable<TYPE, ItemInfo> getItems() { |
1474 |
29 Nov 11 |
pawels |
136 |
return items; |
1474 |
29 Nov 11 |
pawels |
137 |
} |
1474 |
29 Nov 11 |
pawels |
138 |
|
1474 |
29 Nov 11 |
pawels |
139 |
Hashtable<String, String> getFactors() { |
1474 |
29 Nov 11 |
pawels |
140 |
return factors; |
1474 |
29 Nov 11 |
pawels |
141 |
} |
1474 |
29 Nov 11 |
pawels |
142 |
|
1474 |
29 Nov 11 |
pawels |
143 |
} |