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

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