extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/dao/MaskedSequences.java

Code
Comments
Other
Rev Date Author Line
2404 06 May 14 nicklas 1 package net.sf.basedb.reggie.dao;
2404 06 May 14 nicklas 2
2404 06 May 14 nicklas 3 import java.util.ArrayList;
2404 06 May 14 nicklas 4 import java.util.Collection;
2404 06 May 14 nicklas 5 import java.util.List;
2404 06 May 14 nicklas 6
2404 06 May 14 nicklas 7 import org.json.simple.JSONObject;
2404 06 May 14 nicklas 8
2404 06 May 14 nicklas 9 import net.sf.basedb.core.DbControl;
2404 06 May 14 nicklas 10 import net.sf.basedb.core.DerivedBioAssay;
2404 06 May 14 nicklas 11 import net.sf.basedb.core.InvalidDataException;
2404 06 May 14 nicklas 12 import net.sf.basedb.core.ItemQuery;
2404 06 May 14 nicklas 13 import net.sf.basedb.core.query.Expressions;
2404 06 May 14 nicklas 14 import net.sf.basedb.core.query.Hql;
2404 06 May 14 nicklas 15 import net.sf.basedb.core.query.Restrictions;
2404 06 May 14 nicklas 16 import net.sf.basedb.reggie.Reggie;
2404 06 May 14 nicklas 17
2404 06 May 14 nicklas 18 /**
2420 13 May 14 nicklas 19   Class for loading information that is related to masked sequences.
2404 06 May 14 nicklas 20   
2404 06 May 14 nicklas 21   @author nicklas
2404 06 May 14 nicklas 22   @since 2.16
2404 06 May 14 nicklas 23 */
2420 13 May 14 nicklas 24 public class MaskedSequences 
2404 06 May 14 nicklas 25   extends ReggieItem<DerivedBioAssay>
2404 06 May 14 nicklas 26 {
2404 06 May 14 nicklas 27
2404 06 May 14 nicklas 28   /**
2404 06 May 14 nicklas 29     Get demuxed sequences item when the id is known.
2404 06 May 14 nicklas 30   */
2420 13 May 14 nicklas 31   public static MaskedSequences getById(DbControl dc, int id)
2404 06 May 14 nicklas 32   {
2420 13 May 14 nicklas 33     return new MaskedSequences(DerivedBioAssay.getById(dc, id));
2404 06 May 14 nicklas 34   }
2404 06 May 14 nicklas 35   
2420 13 May 14 nicklas 36   public static MaskedSequences getByName(DbControl dc, String name)
2404 06 May 14 nicklas 37   {
2404 06 May 14 nicklas 38     ItemQuery<DerivedBioAssay> query = DerivedBioAssay.getQuery();
2404 06 May 14 nicklas 39     query.setIncludes(Reggie.INCLUDE_IN_CURRENT_PROJECT);
2420 13 May 14 nicklas 40     Subtype.MASKED_SEQUENCES.addFilter(dc, query);
2404 06 May 14 nicklas 41     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(name)));
2404 06 May 14 nicklas 42     
2404 06 May 14 nicklas 43     List<DerivedBioAssay> list = query.list(dc);
2404 06 May 14 nicklas 44     if (list.size() > 1)
2404 06 May 14 nicklas 45     {
2404 06 May 14 nicklas 46       throw new InvalidDataException(
2404 06 May 14 nicklas 47           "More than one item with the name " + name + " was found. " +
2404 06 May 14 nicklas 48           "This wizard can't be used until that is corrected.");
2404 06 May 14 nicklas 49     }
2420 13 May 14 nicklas 50     MaskedSequences filtered = null;
2404 06 May 14 nicklas 51     if (list.size() == 1)
2404 06 May 14 nicklas 52     {
2420 13 May 14 nicklas 53       filtered = new MaskedSequences(list.get(0));
2404 06 May 14 nicklas 54     }
2404 06 May 14 nicklas 55     return filtered;
2404 06 May 14 nicklas 56   }
2404 06 May 14 nicklas 57   
2420 13 May 14 nicklas 58   public static List<MaskedSequences> toList(Collection<DerivedBioAssay> bioassays)
2404 06 May 14 nicklas 59   {
2420 13 May 14 nicklas 60     List<MaskedSequences> lib = new ArrayList<MaskedSequences>(bioassays.size());
2404 06 May 14 nicklas 61     for (DerivedBioAssay ba : bioassays)
2404 06 May 14 nicklas 62     {
2420 13 May 14 nicklas 63       lib.add(new MaskedSequences(ba));
2404 06 May 14 nicklas 64     }
2404 06 May 14 nicklas 65     return lib;
2404 06 May 14 nicklas 66   }
2404 06 May 14 nicklas 67   
2404 06 May 14 nicklas 68   
2420 13 May 14 nicklas 69   private MaskedSequences(DerivedBioAssay bioAssay)
2404 06 May 14 nicklas 70   {
2404 06 May 14 nicklas 71     super(bioAssay);
2404 06 May 14 nicklas 72
2404 06 May 14 nicklas 73   }  
2404 06 May 14 nicklas 74   
2404 06 May 14 nicklas 75   /**
2404 06 May 14 nicklas 76     Get the derived bioassay that represents the demuxed sequences in BASE.
2404 06 May 14 nicklas 77   */
2404 06 May 14 nicklas 78   public DerivedBioAssay getDerivedBioAssay()
2404 06 May 14 nicklas 79   {
2404 06 May 14 nicklas 80     return getItem();
2404 06 May 14 nicklas 81   }
2404 06 May 14 nicklas 82
2404 06 May 14 nicklas 83   public Library getLibrary(DbControl dc)
2404 06 May 14 nicklas 84   {
2404 06 May 14 nicklas 85     return Library.getById(dc, getItem().getExtract().getId());
2404 06 May 14 nicklas 86   }
2404 06 May 14 nicklas 87   
2404 06 May 14 nicklas 88   public MergedSequences getMergedSequences(DbControl dc)
2404 06 May 14 nicklas 89   {
2404 06 May 14 nicklas 90     ItemQuery<DerivedBioAssay> query = getItem().getParents();
2404 06 May 14 nicklas 91     Subtype.MERGED_SEQUENCES.addFilter(dc, query);
2404 06 May 14 nicklas 92     query.include(Reggie.INCLUDE_IN_CURRENT_PROJECT);
2404 06 May 14 nicklas 93
2404 06 May 14 nicklas 94     List<DerivedBioAssay> tmp = query.list(dc);
2404 06 May 14 nicklas 95     DerivedBioAssay merged = null;
2404 06 May 14 nicklas 96     if (tmp.size() > 1)
2404 06 May 14 nicklas 97     {
2404 06 May 14 nicklas 98       throw new InvalidDataException(
2404 06 May 14 nicklas 99         "More than one parent item was found for " + getName() +
2404 06 May 14 nicklas 100         "This wizard can't be used until that is corrected.");
2404 06 May 14 nicklas 101     }
2404 06 May 14 nicklas 102     else if (tmp.size() == 1)
2404 06 May 14 nicklas 103     {
2404 06 May 14 nicklas 104       merged = tmp.get(0);
2404 06 May 14 nicklas 105     }    
2404 06 May 14 nicklas 106     return merged == null ? null : MergedSequences.getById(dc, merged.getId());
2404 06 May 14 nicklas 107   }
2404 06 May 14 nicklas 108
2404 06 May 14 nicklas 109   @Override
2404 06 May 14 nicklas 110   protected void initJSON(JSONObject json) 
2404 06 May 14 nicklas 111   {
2404 06 May 14 nicklas 112     super.initJSON(json);
2404 06 May 14 nicklas 113   }
2404 06 May 14 nicklas 114   
2404 06 May 14 nicklas 115
2404 06 May 14 nicklas 116 }