/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * TreeNodeRestriction.java * * Created on 24. April 2003, 12:45 */ package Sirius.navigator.types.iterator; import Sirius.navigator.types.treenode.DefaultMetaTreeNode; import org.apache.log4j.Logger; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class TreeNodeRestriction implements Restriction { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger(TreeNodeRestriction.class); //~ Instance fields -------------------------------------------------------- private final long typeRestriction; private final String domainRestriction; //~ Constructors ----------------------------------------------------------- /** * Creates a new TreeNodeRestriction object. */ public TreeNodeRestriction() { this(PURE + OBJECT + CLASS, null); } /** * Creates a new instance of TreeNodeRestriction. * * @param typeRestriction DOCUMENT ME! */ public TreeNodeRestriction(final long typeRestriction) { this(typeRestriction, null); } /** * Creates a new TreeNodeRestriction object. * * @param typeRestriction DOCUMENT ME! * @param domainRestriction DOCUMENT ME! */ public TreeNodeRestriction(final long typeRestriction, final String domainRestriction) { this.typeRestriction = typeRestriction; this.domainRestriction = domainRestriction; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param object DOCUMENT ME! * * @return DOCUMENT ME! */ public DefaultMetaTreeNode applyRestriction(final Object object) { if (LOG.isDebugEnabled()) { LOG.debug("apply restriction on '" + object.toString() + "' (" + object.getClass().getName() + ")"); // NOI18N } final DefaultMetaTreeNode node; if (!(object instanceof DefaultMetaTreeNode)) { return null; } else { node = (DefaultMetaTreeNode)object; } if (node.isRootNode() || node.isWaitNode()) { return null; } else if ((node.isPureNode() && ((PURE & typeRestriction) != 0)) || (node.isObjectNode() && ((OBJECT & typeRestriction) != 0)) || (node.isClassNode() && ((CLASS & typeRestriction) != 0))) { if ((this.domainRestriction == null) || this.domainRestriction.equals(node.getDomain())) { return node; } } return null; } @Override public long getTypeRestriction() { return this.typeRestriction; } }