src/core/net/sf/basedb/util/overview/loader/ProtocolParameterLoader.java

Code
Comments
Other
Rev Date Author Line
4740 05 Feb 09 nicklas 1 /**
4740 05 Feb 09 nicklas 2   $Id$
4740 05 Feb 09 nicklas 3
4740 05 Feb 09 nicklas 4   Copyright (C) 2008 Nicklas Nordborg
4740 05 Feb 09 nicklas 5
4740 05 Feb 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
4740 05 Feb 09 nicklas 7   Available at http://base.thep.lu.se/
4740 05 Feb 09 nicklas 8
4740 05 Feb 09 nicklas 9   BASE is free software; you can redistribute it and/or
4740 05 Feb 09 nicklas 10   modify it under the terms of the GNU General Public License
4740 05 Feb 09 nicklas 11   as published by the Free Software Foundation; either version 3
4740 05 Feb 09 nicklas 12   of the License, or (at your option) any later version.
4740 05 Feb 09 nicklas 13
4740 05 Feb 09 nicklas 14   BASE is distributed in the hope that it will be useful,
4740 05 Feb 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4740 05 Feb 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4740 05 Feb 09 nicklas 17   GNU General Public License for more details.
4740 05 Feb 09 nicklas 18
4740 05 Feb 09 nicklas 19   You should have received a copy of the GNU General Public License
4740 05 Feb 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4740 05 Feb 09 nicklas 21 */
4740 05 Feb 09 nicklas 22 package net.sf.basedb.util.overview.loader;
4740 05 Feb 09 nicklas 23
4740 05 Feb 09 nicklas 24 import net.sf.basedb.core.Annotatable;
4740 05 Feb 09 nicklas 25 import net.sf.basedb.core.AnnotationType;
4740 05 Feb 09 nicklas 26 import net.sf.basedb.core.DbControl;
4740 05 Feb 09 nicklas 27 import net.sf.basedb.core.ItemQuery;
4740 05 Feb 09 nicklas 28 import net.sf.basedb.core.ItemResultIterator;
4740 05 Feb 09 nicklas 29 import net.sf.basedb.core.Protocol;
4740 05 Feb 09 nicklas 30 import net.sf.basedb.util.overview.Node;
4740 05 Feb 09 nicklas 31 import net.sf.basedb.util.overview.OverviewContext;
4740 05 Feb 09 nicklas 32 import net.sf.basedb.util.overview.node.ChildNodeDirection;
4740 05 Feb 09 nicklas 33 import net.sf.basedb.util.overview.node.NameableNameGenerator;
4740 05 Feb 09 nicklas 34 import net.sf.basedb.util.overview.node.NodeFactory;
4740 05 Feb 09 nicklas 35
4740 05 Feb 09 nicklas 36 /**
4740 05 Feb 09 nicklas 37   Node loader implementation for protocol parameters. Protocol
4740 05 Feb 09 nicklas 38   parameters are loaded as property-type child nodes of
4740 05 Feb 09 nicklas 39   a protocol. The protocol must have a parent node with
4740 05 Feb 09 nicklas 40   an item that is {@link Annotatable} since this is were the
4740 05 Feb 09 nicklas 41   parameter values are stored.
4740 05 Feb 09 nicklas 42   
4740 05 Feb 09 nicklas 43   @author Nicklas
4740 05 Feb 09 nicklas 44   @version 2.10
4740 05 Feb 09 nicklas 45   @base.modified $Date$
4740 05 Feb 09 nicklas 46 */
4740 05 Feb 09 nicklas 47 public class ProtocolParameterLoader
4740 05 Feb 09 nicklas 48   extends BasicItemNodeLoader<AnnotationType>
4740 05 Feb 09 nicklas 49 {
4740 05 Feb 09 nicklas 50
4740 05 Feb 09 nicklas 51   public ProtocolParameterLoader()
4740 05 Feb 09 nicklas 52   {
4740 05 Feb 09 nicklas 53     super("PROTOCOL.PARAMETER", DENY_ROOT_NODE, 
4749 11 Feb 09 nicklas 54         new NameableNameGenerator<AnnotationType>("parameter", null));
4740 05 Feb 09 nicklas 55   }
4740 05 Feb 09 nicklas 56   
4740 05 Feb 09 nicklas 57   /*
4740 05 Feb 09 nicklas 58     From the NodeLoader interface
4740 05 Feb 09 nicklas 59     ------------------------------
4740 05 Feb 09 nicklas 60   */
4740 05 Feb 09 nicklas 61   @Override
4740 05 Feb 09 nicklas 62   public Node createPropertyNode(DbControl dc, OverviewContext context, Node protocolNode)
4740 05 Feb 09 nicklas 63   {
4740 05 Feb 09 nicklas 64     NodeFactory<AnnotationType> nf = getNodeFactory(dc, context);
4749 11 Feb 09 nicklas 65     Node returnNode = null;
4740 05 Feb 09 nicklas 66     
4740 05 Feb 09 nicklas 67     // Load all protocol parameters for the given protocol
4740 05 Feb 09 nicklas 68     Protocol protocol = (Protocol)protocolNode.getItem(dc);
4740 05 Feb 09 nicklas 69     ItemQuery<AnnotationType> query = context.initQuery(protocol.getParameters(), "name");
4740 05 Feb 09 nicklas 70     ItemResultIterator<AnnotationType> it = query.iterate(dc);
4740 05 Feb 09 nicklas 71     while (it.hasNext())
4740 05 Feb 09 nicklas 72     {
4740 05 Feb 09 nicklas 73       AnnotationType parameter = it.next();
4749 11 Feb 09 nicklas 74       returnNode = createItemNode(nf, parameter, null, false, protocolNode, ChildNodeDirection.NONE);
4740 05 Feb 09 nicklas 75     }
4749 11 Feb 09 nicklas 76     postValidateFolder(nf, null, protocolNode, false);
4749 11 Feb 09 nicklas 77     return protocolNode.numChildren() > 1 ? null : returnNode;
4740 05 Feb 09 nicklas 78   }
4740 05 Feb 09 nicklas 79   // -----------------------------------
4740 05 Feb 09 nicklas 80 }