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

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