/* * Copyright 2008 (C) Thomas Parker * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package pcgen.rules.context; import java.util.Collection; /** * The Class {@code PatternChanges} is responsible for tracking changes * to a map so that the changes can be committed or rolled back at a later * stage. Items can be added to the map, removed from the map or the map can be * cleared. */ public class PatternChanges<T> { private final Collection<T> positive; private final Collection<String> negative; private final boolean clear; public PatternChanges(Collection<T> added, Collection<String> removed, boolean globallyCleared) { positive = added; negative = removed; clear = globallyCleared; } public boolean includesGlobalClear() { return clear; } public boolean isEmpty() { return !clear && !hasAddedItems() && !hasRemovedItems(); } public Collection<T> getAdded() { return positive; } public boolean hasAddedItems() { return positive != null && !positive.isEmpty(); } public Collection<String> getRemoved() { return negative; } public boolean hasRemovedItems() { return negative != null && !negative.isEmpty(); } }