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

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