src/core/net/sf/basedb/util/listable/AbstractSourceItemTransformerFactory.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.Arrays;
6774 17 Mar 15 nicklas 25 import java.util.Collections;
6774 17 Mar 15 nicklas 26 import java.util.List;
6774 17 Mar 15 nicklas 27
6774 17 Mar 15 nicklas 28 import net.sf.basedb.core.Item;
6774 17 Mar 15 nicklas 29 import net.sf.basedb.core.SyncFilter.SourceItemTransform;
6774 17 Mar 15 nicklas 30
6774 17 Mar 15 nicklas 31 /**
6774 17 Mar 15 nicklas 32   Abstract base class for source item transformer factories that can be useful
6774 17 Mar 15 nicklas 33   for implementing some common functionality.
6774 17 Mar 15 nicklas 34   
6774 17 Mar 15 nicklas 35   @author Nicklas
6774 17 Mar 15 nicklas 36   @since 3.5
6774 17 Mar 15 nicklas 37 */
6774 17 Mar 15 nicklas 38 public abstract class AbstractSourceItemTransformerFactory
6774 17 Mar 15 nicklas 39   implements SourceItemTransformerFactory 
6774 17 Mar 15 nicklas 40 {
6774 17 Mar 15 nicklas 41
6774 17 Mar 15 nicklas 42   private final Item target;
6774 17 Mar 15 nicklas 43   private final List<Item> parentToChild;
6774 17 Mar 15 nicklas 44   private final List<Item> childToParent;
6774 17 Mar 15 nicklas 45   
6774 17 Mar 15 nicklas 46   /**
6774 17 Mar 15 nicklas 47     Create a new instance supports transformation between the given
6774 17 Mar 15 nicklas 48     source items and target item.
6774 17 Mar 15 nicklas 49     @param target The supported target item type
6774 17 Mar 15 nicklas 50     @param parentToChild The supported source item types for {@link SourceItemTransform#PARENT_TO_CHILD} transform
6774 17 Mar 15 nicklas 51     @param childToParent The supported source item types for {@link SourceItemTransform#CHILD_TO_PARENT} transform
6774 17 Mar 15 nicklas 52   */
6774 17 Mar 15 nicklas 53   protected AbstractSourceItemTransformerFactory(Item target, Item[] parentToChild, Item[] childToParent) 
6774 17 Mar 15 nicklas 54   {
6774 17 Mar 15 nicklas 55     this.target = target;
6774 17 Mar 15 nicklas 56     this.parentToChild = Collections.unmodifiableList(Arrays.asList(parentToChild));
6774 17 Mar 15 nicklas 57     this.childToParent = Collections.unmodifiableList(Arrays.asList(childToParent));
6774 17 Mar 15 nicklas 58   }
6774 17 Mar 15 nicklas 59   
6774 17 Mar 15 nicklas 60   @Override
6774 17 Mar 15 nicklas 61   public Item getTargetItem() 
6774 17 Mar 15 nicklas 62   {
6774 17 Mar 15 nicklas 63     return target;
6774 17 Mar 15 nicklas 64   }
6774 17 Mar 15 nicklas 65
6774 17 Mar 15 nicklas 66   @Override
6774 17 Mar 15 nicklas 67   public List<Item> getSupportedSourceItems(SourceItemTransform transform) 
6774 17 Mar 15 nicklas 68   {
6774 17 Mar 15 nicklas 69     List<Item> supported = null;
6774 17 Mar 15 nicklas 70     if (transform == SourceItemTransform.PARENT_TO_CHILD)
6774 17 Mar 15 nicklas 71     {
6774 17 Mar 15 nicklas 72       supported = parentToChild;
6774 17 Mar 15 nicklas 73     }
6774 17 Mar 15 nicklas 74     else if (transform == SourceItemTransform.CHILD_TO_PARENT)
6774 17 Mar 15 nicklas 75     {
6774 17 Mar 15 nicklas 76       supported = childToParent;
6774 17 Mar 15 nicklas 77     }
6774 17 Mar 15 nicklas 78     return supported;
6774 17 Mar 15 nicklas 79   }
6774 17 Mar 15 nicklas 80   
6774 17 Mar 15 nicklas 81 }