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

Code
Comments
Other
Rev Date Author Line
7004 09 Nov 15 nicklas 1 /**
7004 09 Nov 15 nicklas 2   $Id $
7004 09 Nov 15 nicklas 3
7004 09 Nov 15 nicklas 4   Copyright (C) 2015 Nicklas Nordborg
7004 09 Nov 15 nicklas 5
7004 09 Nov 15 nicklas 6   This file is part of BASE - BioArray Software Environment.
7004 09 Nov 15 nicklas 7   Available at http://base.thep.lu.se/
7004 09 Nov 15 nicklas 8
7004 09 Nov 15 nicklas 9   BASE is free software; you can redistribute it and/or
7004 09 Nov 15 nicklas 10   modify it under the terms of the GNU General Public License
7004 09 Nov 15 nicklas 11   as published by the Free Software Foundation; either version 3
7004 09 Nov 15 nicklas 12   of the License, or (at your option) any later version.
7004 09 Nov 15 nicklas 13
7004 09 Nov 15 nicklas 14   BASE is distributed in the hope that it will be useful,
7004 09 Nov 15 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
7004 09 Nov 15 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7004 09 Nov 15 nicklas 17   GNU General Public License for more details.
7004 09 Nov 15 nicklas 18
7004 09 Nov 15 nicklas 19   You should have received a copy of the GNU General Public License
7004 09 Nov 15 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7004 09 Nov 15 nicklas 21 */
7004 09 Nov 15 nicklas 22 package net.sf.basedb.util.overview.loader;
7004 09 Nov 15 nicklas 23
7004 09 Nov 15 nicklas 24 import net.sf.basedb.core.BasicItem;
7004 09 Nov 15 nicklas 25 import net.sf.basedb.core.BioPlateEvent;
7004 09 Nov 15 nicklas 26 import net.sf.basedb.core.DbControl;
7004 09 Nov 15 nicklas 27 import net.sf.basedb.core.DerivedBioAssay;
7004 09 Nov 15 nicklas 28 import net.sf.basedb.core.MeasuredBioMaterial;
7004 09 Nov 15 nicklas 29 import net.sf.basedb.core.PhysicalBioAssay;
7004 09 Nov 15 nicklas 30 import net.sf.basedb.core.Item;
7004 09 Nov 15 nicklas 31 import net.sf.basedb.core.Kit;
7004 09 Nov 15 nicklas 32 import net.sf.basedb.core.PermissionDeniedException;
7004 09 Nov 15 nicklas 33 import net.sf.basedb.util.overview.Node;
7004 09 Nov 15 nicklas 34 import net.sf.basedb.util.overview.OverviewContext;
7004 09 Nov 15 nicklas 35 import net.sf.basedb.util.overview.node.ChildNodeDirection;
7004 09 Nov 15 nicklas 36 import net.sf.basedb.util.overview.node.NameableNameGenerator;
7004 09 Nov 15 nicklas 37 import net.sf.basedb.util.overview.node.NodeFactory;
7004 09 Nov 15 nicklas 38
7004 09 Nov 15 nicklas 39 /**
7004 09 Nov 15 nicklas 40   Node loader implementation for kits. Kits are loaded as
7004 09 Nov 15 nicklas 41   end-point property nodes with no children. It can't be a root 
7004 09 Nov 15 nicklas 42   node or a forward/reverse-loading node.
7004 09 Nov 15 nicklas 43   
7004 09 Nov 15 nicklas 44   @author Nicklas
7004 09 Nov 15 nicklas 45   @since 3.7
7004 09 Nov 15 nicklas 46 */
7004 09 Nov 15 nicklas 47 public class KitLoader
7004 09 Nov 15 nicklas 48   extends BasicItemNodeLoader<Kit>
7004 09 Nov 15 nicklas 49 {
7004 09 Nov 15 nicklas 50   
7004 09 Nov 15 nicklas 51   public KitLoader()
7004 09 Nov 15 nicklas 52   {
7004 09 Nov 15 nicklas 53     super(Item.KIT, DENY_ROOT_NODE, 
7004 09 Nov 15 nicklas 54         new NameableNameGenerator<Kit>("kit", "Kit"));
7004 09 Nov 15 nicklas 55   }
7004 09 Nov 15 nicklas 56   
7004 09 Nov 15 nicklas 57   /*
7004 09 Nov 15 nicklas 58     From the NodeLoader interface
7004 09 Nov 15 nicklas 59     ------------------------------
7004 09 Nov 15 nicklas 60   */
7004 09 Nov 15 nicklas 61   @Override
7004 09 Nov 15 nicklas 62   public Node createPropertyNode(DbControl dc, OverviewContext context, Node parentNode)
7004 09 Nov 15 nicklas 63   {
7004 09 Nov 15 nicklas 64     Kit kit = null;
7004 09 Nov 15 nicklas 65     boolean denied = false;
7004 09 Nov 15 nicklas 66     try
7004 09 Nov 15 nicklas 67     {
7004 09 Nov 15 nicklas 68       BasicItem parentItem = parentNode.getItem(dc);
7004 09 Nov 15 nicklas 69       if (parentItem instanceof DerivedBioAssay)
7004 09 Nov 15 nicklas 70       {
7004 09 Nov 15 nicklas 71         kit = ((DerivedBioAssay)parentItem).getKit();
7004 09 Nov 15 nicklas 72       }
7004 09 Nov 15 nicklas 73       else if (parentItem instanceof PhysicalBioAssay)
7004 09 Nov 15 nicklas 74       {
7004 09 Nov 15 nicklas 75         kit = ((PhysicalBioAssay)parentItem).getCreationEvent().getKit();
7004 09 Nov 15 nicklas 76       }
7004 09 Nov 15 nicklas 77       else if (parentItem instanceof MeasuredBioMaterial)
7004 09 Nov 15 nicklas 78       {
7004 09 Nov 15 nicklas 79         kit = ((MeasuredBioMaterial)parentItem).getCreationEvent().getKit();
7004 09 Nov 15 nicklas 80       }
7004 09 Nov 15 nicklas 81       else if (parentItem instanceof BioPlateEvent)
7004 09 Nov 15 nicklas 82       {
7004 09 Nov 15 nicklas 83         kit = ((BioPlateEvent)parentItem).getKit();
7004 09 Nov 15 nicklas 84       }
7004 09 Nov 15 nicklas 85       // If there are other items with a kit
7004 09 Nov 15 nicklas 86       // we should add more cases here
7004 09 Nov 15 nicklas 87     }
7004 09 Nov 15 nicklas 88     catch (PermissionDeniedException ex)
7004 09 Nov 15 nicklas 89     {
7004 09 Nov 15 nicklas 90       denied = true;
7004 09 Nov 15 nicklas 91     }
7004 09 Nov 15 nicklas 92     
7004 09 Nov 15 nicklas 93     NodeFactory<Kit> nf = getNodeFactory(dc, context);
7004 09 Nov 15 nicklas 94     Node hardwareNode = createItemNode(nf, kit, kit, denied, 
7004 09 Nov 15 nicklas 95         parentNode, ChildNodeDirection.PROPERTY);
7004 09 Nov 15 nicklas 96     return hardwareNode;
7004 09 Nov 15 nicklas 97   }
7004 09 Nov 15 nicklas 98   // -----------------------------------
7004 09 Nov 15 nicklas 99   /*
7004 09 Nov 15 nicklas 100     From the AbstractNodeLoader class
7004 09 Nov 15 nicklas 101     ----------------------------------
7004 09 Nov 15 nicklas 102   */
7004 09 Nov 15 nicklas 103   /**
7004 09 Nov 15 nicklas 104     Loads annotations for the given kit node.
7004 09 Nov 15 nicklas 105     @see RawBioAssayLoader#createForwardNode(DbControl, OverviewContext, Node)
7004 09 Nov 15 nicklas 106   */
7004 09 Nov 15 nicklas 107   @Override
7004 09 Nov 15 nicklas 108   protected void loadPropertyChildNodes(DbControl dc, OverviewContext context, Node kitNode)
7004 09 Nov 15 nicklas 109   {
7004 09 Nov 15 nicklas 110     getNodeLoader(context, Item.ANNOTATION).createPropertyNode(dc, context, kitNode);
7004 09 Nov 15 nicklas 111   }
7004 09 Nov 15 nicklas 112   // -------------------------------------  
7004 09 Nov 15 nicklas 113 }