extensions/no.uib.cbu.base.magetabexport/trunk/src/main/java/no/uib/cbu/base/magetabexport/SDRFEntry.java

Code
Comments
Other
Rev Date Author Line
1474 29 Nov 11 pawels 1 /*******************************************************************************
1474 29 Nov 11 pawels 2  * Copyright (c) 2011 The Norwegian Microarray Consortium.
1474 29 Nov 11 pawels 3  * All rights reserved. This program and the accompanying materials
1474 29 Nov 11 pawels 4  * are made available under the terms of the GNU Public License v3.0
1474 29 Nov 11 pawels 5  * which accompanies this distribution, and is available at
1474 29 Nov 11 pawels 6  * http://www.gnu.org/licenses/gpl-3.0.html
1474 29 Nov 11 pawels 7  * 
1474 29 Nov 11 pawels 8  * Contributors:
1474 29 Nov 11 pawels 9  *     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 32    * 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 39    * Add experimental factor
1474 29 Nov 11 pawels 40    * @param factorName
1474 29 Nov 11 pawels 41    * @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 48    * Set label
1474 29 Nov 11 pawels 49    * @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 63     // 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 66       // 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 73       // 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 82           // print empty value if null
1474 29 Nov 11 pawels 83           // 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 88       // 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 91       // 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 107       // 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 111         // print empty value if null
1474 29 Nov 11 pawels 112         //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 116         // 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 126     // 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 131     // 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 }