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

Code
Comments
Other
Rev Date Author Line
6775 17 Mar 15 nicklas 1 /**
6775 17 Mar 15 nicklas 2   $Id$
6775 17 Mar 15 nicklas 3
6775 17 Mar 15 nicklas 4   Copyright (C) 2015 Nicklas Nordborg
6775 17 Mar 15 nicklas 5
6775 17 Mar 15 nicklas 6   This file is part of BASE - BioArray Software Environment.
6775 17 Mar 15 nicklas 7   Available at http://base.thep.lu.se/
6775 17 Mar 15 nicklas 8
6775 17 Mar 15 nicklas 9   BASE is free software; you can redistribute it and/or
6775 17 Mar 15 nicklas 10   modify it under the terms of the GNU General Public License
6775 17 Mar 15 nicklas 11   as published by the Free Software Foundation; either version 3
6775 17 Mar 15 nicklas 12   of the License, or (at your option) any later version.
6775 17 Mar 15 nicklas 13
6775 17 Mar 15 nicklas 14   BASE is distributed in the hope that it will be useful,
6775 17 Mar 15 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
6775 17 Mar 15 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6775 17 Mar 15 nicklas 17   GNU General Public License for more details.
6775 17 Mar 15 nicklas 18
6775 17 Mar 15 nicklas 19   You should have received a copy of the GNU General Public License
6775 17 Mar 15 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
6775 17 Mar 15 nicklas 21 */
6775 17 Mar 15 nicklas 22 package net.sf.basedb.util.listable;
6775 17 Mar 15 nicklas 23
6775 17 Mar 15 nicklas 24 import java.util.Set;
6775 17 Mar 15 nicklas 25
6775 17 Mar 15 nicklas 26 import net.sf.basedb.core.Extract;
6775 17 Mar 15 nicklas 27 import net.sf.basedb.core.Item;
6775 17 Mar 15 nicklas 28 import net.sf.basedb.core.ItemQuery;
6775 17 Mar 15 nicklas 29 import net.sf.basedb.core.query.Expressions;
6775 17 Mar 15 nicklas 30 import net.sf.basedb.core.query.Hql;
6775 17 Mar 15 nicklas 31 import net.sf.basedb.core.query.Restrictions;
6775 17 Mar 15 nicklas 32
6775 17 Mar 15 nicklas 33 /**
6775 17 Mar 15 nicklas 34   Source item transformer that transform sample items to their child
6775 17 Mar 15 nicklas 35   extract. This implementation will only transform to the sample:s immediate
6775 17 Mar 15 nicklas 36   child extracts. Grandchildren are not included. To do this, combine this
6775 17 Mar 15 nicklas 37   transformer with a {@link SampleToChildSampleTransformer} and 
6775 17 Mar 15 nicklas 38   {@link ExtractToChildExtractTransformer}.
6775 17 Mar 15 nicklas 39   
6775 17 Mar 15 nicklas 40   @author Nicklas
6775 17 Mar 15 nicklas 41   @since 3.5
6775 17 Mar 15 nicklas 42 */
6775 17 Mar 15 nicklas 43 public class SampleToExtractTransformer 
6775 17 Mar 15 nicklas 44   extends AbstractSourceItemTransformer 
6775 17 Mar 15 nicklas 45 {
6775 17 Mar 15 nicklas 46
6775 17 Mar 15 nicklas 47   public SampleToExtractTransformer()
6775 17 Mar 15 nicklas 48   {
6775 17 Mar 15 nicklas 49     super(Item.SAMPLE, Item.EXTRACT);
6775 17 Mar 15 nicklas 50   }
6775 17 Mar 15 nicklas 51   
6775 17 Mar 15 nicklas 52   /**
6775 17 Mar 15 nicklas 53     Load the ID of all extracts that are immediate children to the
6775 17 Mar 15 nicklas 54     given set of samples.
6775 17 Mar 15 nicklas 55   */
6775 17 Mar 15 nicklas 56   @Override
6775 17 Mar 15 nicklas 57   public Set<Integer> transform(TransformContext context, Set<Integer> source) 
6775 17 Mar 15 nicklas 58   {
8094 04 Nov 22 nicklas 59     context.collect(getSourceItemType(), source);
6775 17 Mar 15 nicklas 60     ItemQuery<Extract> query = Extract.getQuery();
6848 13 Apr 15 nicklas 61     query.setIncludes(context.getInclude());
6796 24 Mar 15 nicklas 62     // Extracts with a sample as parent
6796 24 Mar 15 nicklas 63     query.restrict(Restrictions.eq(Hql.property("parentType"), Expressions.integer(Item.SAMPLE.getValue())));
6775 17 Mar 15 nicklas 64     query.restrict(
6775 17 Mar 15 nicklas 65       Restrictions.in(
6775 17 Mar 15 nicklas 66         Hql.property("parent"), 
6775 17 Mar 15 nicklas 67         Expressions.parameter("samples")
6775 17 Mar 15 nicklas 68       ));
8094 04 Nov 22 nicklas 69     return context.avoid(getTargetItemType(), safeIdList(context.getDbControl(), query, "samples", source));
6775 17 Mar 15 nicklas 70   }
6775 17 Mar 15 nicklas 71
6775 17 Mar 15 nicklas 72
6775 17 Mar 15 nicklas 73 }