extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/release/BloodDnaWriter.java

Code
Comments
Other
Rev Date Author Line
5142 22 Nov 18 nicklas 1 package net.sf.basedb.reggie.plugins.release;
5142 22 Nov 18 nicklas 2
5142 22 Nov 18 nicklas 3 import java.util.List;
5142 22 Nov 18 nicklas 4
5142 22 Nov 18 nicklas 5 import org.json.simple.JSONArray;
5142 22 Nov 18 nicklas 6 import org.json.simple.JSONObject;
5142 22 Nov 18 nicklas 7
5142 22 Nov 18 nicklas 8 import net.sf.basedb.core.DbControl;
5142 22 Nov 18 nicklas 9 import net.sf.basedb.core.Extract;
5211 08 Jan 19 nicklas 10 import net.sf.basedb.core.Item;
5211 08 Jan 19 nicklas 11 import net.sf.basedb.core.Quantity;
5142 22 Nov 18 nicklas 12 import net.sf.basedb.core.Sample;
5211 08 Jan 19 nicklas 13 import net.sf.basedb.core.Type;
5211 08 Jan 19 nicklas 14 import net.sf.basedb.core.Unit;
5211 08 Jan 19 nicklas 15 import net.sf.basedb.reggie.dao.Annotationtype;
5142 22 Nov 18 nicklas 16 import net.sf.basedb.reggie.dao.BloodDna;
5211 08 Jan 19 nicklas 17 import net.sf.basedb.reggie.json.FilteredJSONArray;
5211 08 Jan 19 nicklas 18 import net.sf.basedb.util.filter.NotNullFilter;
5211 08 Jan 19 nicklas 19 import net.sf.basedb.util.units.UnitUtil;
5142 22 Nov 18 nicklas 20
5142 22 Nov 18 nicklas 21 /**
5142 22 Nov 18 nicklas 22   Cohort writer implementation for BloodDNA items.
5142 22 Nov 18 nicklas 23   @since 4.21
5142 22 Nov 18 nicklas 24 */
5142 22 Nov 18 nicklas 25 public class BloodDnaWriter 
5142 22 Nov 18 nicklas 26   extends CohortWriter 
5142 22 Nov 18 nicklas 27 {
5142 22 Nov 18 nicklas 28
5142 22 Nov 18 nicklas 29   
5142 22 Nov 18 nicklas 30   public BloodDnaWriter(DbControl dc, ReleaseWriterOptions options)
5142 22 Nov 18 nicklas 31   {
5142 22 Nov 18 nicklas 32     super(dc, options);
5142 22 Nov 18 nicklas 33   }
5142 22 Nov 18 nicklas 34   
5142 22 Nov 18 nicklas 35   @Override
5142 22 Nov 18 nicklas 36   public JSONArray toJSONObjects(CohortItem item)
5142 22 Nov 18 nicklas 37   {
5142 22 Nov 18 nicklas 38     List<BloodDna> bloodList = item.getBloodDna();
5142 22 Nov 18 nicklas 39     if (bloodList.size() == 0) return null;
5142 22 Nov 18 nicklas 40         
5142 22 Nov 18 nicklas 41     JSONArray json = new JSONArray();
5142 22 Nov 18 nicklas 42     for (BloodDna b : bloodList)
5142 22 Nov 18 nicklas 43     {
5142 22 Nov 18 nicklas 44       Extract dna = b.getItem();
5142 22 Nov 18 nicklas 45       Sample blood = (Sample)dna.getParent();
5142 22 Nov 18 nicklas 46       
5142 22 Nov 18 nicklas 47       JSONObject jsonDna = new JSONObject();
5142 22 Nov 18 nicklas 48       jsonDna.put("name", item.toReleaseId(dna.getName()));
5142 22 Nov 18 nicklas 49       jsonDna.put("type", dna.getType().name());
5142 22 Nov 18 nicklas 50       jsonDna.put("subtype", getName(dna.getItemSubtype()));
5142 22 Nov 18 nicklas 51       jsonDna.put("parent", blood.getExternalId());
5211 08 Jan 19 nicklas 52       
5211 08 Jan 19 nicklas 53       JSONArray jsonAnnotations = new FilteredJSONArray(new NotNullFilter<>(false));
5211 08 Jan 19 nicklas 54       jsonDna.put("annotations", jsonAnnotations);
5211 08 Jan 19 nicklas 55       jsonAnnotations.add(item.createAnnotationJSON("DNAOriginalQuantity", dna.getOriginalQuantity()));
5211 08 Jan 19 nicklas 56       jsonAnnotations.add(item.createAnnotationJSON("DNARemainingQuantity", dna.getRemainingQuantity()));
5211 08 Jan 19 nicklas 57       jsonAnnotations.add(item.getAnnotationJSON(Annotationtype.ND_CONC, dna, null));
5211 08 Jan 19 nicklas 58       
5142 22 Nov 18 nicklas 59       json.add(jsonDna);
5142 22 Nov 18 nicklas 60     }
5142 22 Nov 18 nicklas 61     
5142 22 Nov 18 nicklas 62     return json;
5142 22 Nov 18 nicklas 63   }
5142 22 Nov 18 nicklas 64
5211 08 Jan 19 nicklas 65   @Override
5211 08 Jan 19 nicklas 66   public List<CohortTypeDef> getTypeDefsInJSON()
5211 08 Jan 19 nicklas 67   {
5211 08 Jan 19 nicklas 68     DbControl dc = getDbControl();
5211 08 Jan 19 nicklas 69     CohortTypeDefFactory dnaFactory = new CohortTypeDefFactory(dc, Item.EXTRACT, "BloodDNA");
5142 22 Nov 18 nicklas 70
5211 08 Jan 19 nicklas 71     Unit µg = UnitUtil.getUnit(dc, Quantity.MASS, "µg");
5211 08 Jan 19 nicklas 72
5211 08 Jan 19 nicklas 73     // DNA annotation
5211 08 Jan 19 nicklas 74     dnaFactory.createAnnotationType("DNAOriginalQuantity", Type.FLOAT).setUnit(µg);
5211 08 Jan 19 nicklas 75     dnaFactory.createAnnotationType("DNARemainingQuantity", Type.FLOAT).setUnit(µg).setProjectSpecificValues(true);
5211 08 Jan 19 nicklas 76     dnaFactory.createAnnotationType(Annotationtype.ND_CONC).setUnit(UnitUtil.getUnit(dc, Quantity.DENSITY, "ng/µl"));
5211 08 Jan 19 nicklas 77     
5211 08 Jan 19 nicklas 78     return dnaFactory.allCreated();
5211 08 Jan 19 nicklas 79   }
5211 08 Jan 19 nicklas 80
5142 22 Nov 18 nicklas 81 }