1 /** 2 * Copyright (c) 2011, University of Konstanz, Distributed Systems Group 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * * Neither the name of the University of Konstanz nor the 13 * names of its contributors may be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 package org.treetank.service.xml.diff; 29 30 import org.treetank.api.INodeReadTrx; 31 import org.treetank.exception.TTException; 32 import org.treetank.node.IConstants; 33 import org.treetank.service.xml.diff.DiffFactory.Builder; 34 35 /** 36 * Structural diff, thus no attributes and namespace nodes are taken into 37 * account. Note that this class is thread safe. 38 * 39 * @author Johannes Lichtenberger, University of Konstanz 40 * 41 */ 42 final class StructuralDiff extends AbsDiff { 43 44 /** 45 * Constructor. 46 * 47 * @param paramBuilder 48 * {@link Builder} reference 49 * @throws TTException 50 */ 51 public StructuralDiff(final Builder paramBuilder) throws TTException { 52 super(paramBuilder); 53 } 54 55 /** {@inheritDoc} */ 56 @Override 57 boolean checkNodes(final INodeReadTrx paramNewRtx, final INodeReadTrx paramOldRtx) { 58 boolean found = false; 59 if (paramNewRtx.getNode().getDataKey() == paramOldRtx.getNode().getDataKey()) { 60 if (paramNewRtx.getNode().getKind() == paramOldRtx.getNode().getKind()) { 61 switch (paramNewRtx.getNode().getKind()) { 62 case IConstants.ELEMENT: 63 if (paramNewRtx.getQNameOfCurrentNode().equals(paramOldRtx.getQNameOfCurrentNode())) { 64 found = true; 65 } 66 break; 67 case IConstants.TEXT: 68 if (paramNewRtx.getValueOfCurrentNode().equals(paramOldRtx.getValueOfCurrentNode())) { 69 found = true; 70 } 71 break; 72 } 73 } 74 } 75 return found; 76 } 77 }