src/core/net/sf/basedb/util/listable/CollectedExtractsToDerivedBioAssayTransformer.java

Code
Comments
Other
Rev Date Author Line
6801 25 Mar 15 nicklas 1 /**
6801 25 Mar 15 nicklas 2   $Id$
6801 25 Mar 15 nicklas 3
6801 25 Mar 15 nicklas 4   Copyright (C) 2015 Nicklas Nordborg
6801 25 Mar 15 nicklas 5
6801 25 Mar 15 nicklas 6   This file is part of BASE - BioArray Software Environment.
6801 25 Mar 15 nicklas 7   Available at http://base.thep.lu.se/
6801 25 Mar 15 nicklas 8
6801 25 Mar 15 nicklas 9   BASE is free software; you can redistribute it and/or
6801 25 Mar 15 nicklas 10   modify it under the terms of the GNU General Public License
6801 25 Mar 15 nicklas 11   as published by the Free Software Foundation; either version 3
6801 25 Mar 15 nicklas 12   of the License, or (at your option) any later version.
6801 25 Mar 15 nicklas 13
6801 25 Mar 15 nicklas 14   BASE is distributed in the hope that it will be useful,
6801 25 Mar 15 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
6801 25 Mar 15 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6801 25 Mar 15 nicklas 17   GNU General Public License for more details.
6801 25 Mar 15 nicklas 18
6801 25 Mar 15 nicklas 19   You should have received a copy of the GNU General Public License
6801 25 Mar 15 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
6801 25 Mar 15 nicklas 21 */
6801 25 Mar 15 nicklas 22 package net.sf.basedb.util.listable;
6801 25 Mar 15 nicklas 23
6801 25 Mar 15 nicklas 24 import java.util.HashSet;
6801 25 Mar 15 nicklas 25 import java.util.Set;
6801 25 Mar 15 nicklas 26
6801 25 Mar 15 nicklas 27 import net.sf.basedb.core.DbControl;
6801 25 Mar 15 nicklas 28 import net.sf.basedb.core.DerivedBioAssay;
6801 25 Mar 15 nicklas 29 import net.sf.basedb.core.Item;
6801 25 Mar 15 nicklas 30 import net.sf.basedb.core.ItemQuery;
6801 25 Mar 15 nicklas 31 import net.sf.basedb.core.query.Expressions;
6801 25 Mar 15 nicklas 32 import net.sf.basedb.core.query.Hql;
6801 25 Mar 15 nicklas 33 import net.sf.basedb.core.query.Restrictions;
6801 25 Mar 15 nicklas 34
6801 25 Mar 15 nicklas 35 /**
6801 25 Mar 15 nicklas 36   Source item transformer implementation that transform collected extract items 
6801 25 Mar 15 nicklas 37   to derived bioassays. This implementations works on the derived bioassay level
6801 25 Mar 15 nicklas 38   and merges the source derived bioassays with all derived bioassays having a 
6801 25 Mar 15 nicklas 39   direct link to the set of collected extracts.
6801 25 Mar 15 nicklas 40   
6801 25 Mar 15 nicklas 41   @author Nicklas
6801 25 Mar 15 nicklas 42   @since 3.5
6801 25 Mar 15 nicklas 43 */
6801 25 Mar 15 nicklas 44 public class CollectedExtractsToDerivedBioAssayTransformer 
6801 25 Mar 15 nicklas 45   extends AbstractSourceItemTransformer
6801 25 Mar 15 nicklas 46 {
6801 25 Mar 15 nicklas 47
6801 25 Mar 15 nicklas 48   private CollectExtracts collectedExtracts;
6801 25 Mar 15 nicklas 49   
6801 25 Mar 15 nicklas 50   /**
6801 25 Mar 15 nicklas 51     Create a new collected extracts to derived bioassay transformer.
6801 25 Mar 15 nicklas 52   */
6801 25 Mar 15 nicklas 53   public CollectedExtractsToDerivedBioAssayTransformer(CollectExtracts collectedExtracts) 
6801 25 Mar 15 nicklas 54   {
6801 25 Mar 15 nicklas 55     super(Item.DERIVEDBIOASSAY, Item.DERIVEDBIOASSAY);
6801 25 Mar 15 nicklas 56     this.collectedExtracts = collectedExtracts;
6801 25 Mar 15 nicklas 57   }
6801 25 Mar 15 nicklas 58   
6801 25 Mar 15 nicklas 59   @Override
6801 25 Mar 15 nicklas 60   public Set<Integer> transform(TransformContext context, Set<Integer> source) 
6801 25 Mar 15 nicklas 61   {
6801 25 Mar 15 nicklas 62     DbControl dc = context.getDbControl();
6801 25 Mar 15 nicklas 63     
6801 25 Mar 15 nicklas 64     ItemQuery<DerivedBioAssay> query = DerivedBioAssay.getQuery();
6848 13 Apr 15 nicklas 65     query.setIncludes(context.getInclude());
6801 25 Mar 15 nicklas 66     query.join(Hql.leftJoin("extract", "xtr"));
6801 25 Mar 15 nicklas 67     query.restrict(
6801 25 Mar 15 nicklas 68       Restrictions.in(
6801 25 Mar 15 nicklas 69         Hql.alias("xtr"), 
6801 25 Mar 15 nicklas 70         Expressions.parameter("extracts")
6801 25 Mar 15 nicklas 71       )
6801 25 Mar 15 nicklas 72     );
6801 25 Mar 15 nicklas 73     
6801 25 Mar 15 nicklas 74     Set<Integer> all = new HashSet<Integer>(source);
6801 25 Mar 15 nicklas 75     all.addAll(safeIdList(dc, query, "extracts", collectedExtracts.getCollected()));
6801 25 Mar 15 nicklas 76     return all;
6801 25 Mar 15 nicklas 77   }
6801 25 Mar 15 nicklas 78
6801 25 Mar 15 nicklas 79 }