NodePosition.java
001 /*
002  * NodePosition.java
003  *
004  * Copyright (c) 2004--2011, The University of Sheffield.
005  *
006  * This file is part of GATE (see http://gate.ac.uk/), and is free
007  * software, licenced under the GNU Library General Public License,
008  * Version 2, June1991.
009  *
010  * A copy of this licence is included in the distribution in the file
011  * licence.html, and is also available at http://gate.ac.uk/gate/licence.html.
012  *
013  * Niraj Aswani 02/2002
014  * $Id: NodePosition.java 17530 2014-03-04 15:57:43Z markagreenwood $
015  *
016  * 2011-11-18: AF made this immutable.
017  */
018 
019 package gate.creole.gazetteer;
020 
021 import java.util.Comparator;
022 
023 /**
024  <p>Title: NodePosition.java </p>
025  <p>Description: This class is used to store the information about the
026  * changes in the text and the addition or the subtraction of the spaces.
027  * It is used by FlexibleGazetteer. </p>
028  @author Niraj Aswani
029  */
030 
031 public class NodePosition {
032 
033   /** The original start offset before changes */
034   private long originalStartOffset;
035 
036   /** The original end offset before changes */
037   private long originalEndOffset;
038 
039   /** The new start offset after the changes */
040   private long tempStartOffset;
041 
042   /** The new end offset after the changes */
043   private long tempEndOffset;
044 
045   /**
046    * constructor
047    @param osn - old start offset
048    @param oen - old end offset
049    @param nsn - new start offset
050    @param nen - new end offset
051    */
052   public NodePosition(long osn, long oen, long nsn, long nen) {
053     originalStartOffset = osn;
054     originalEndOffset = oen;
055     tempStartOffset = nsn;
056     tempEndOffset = nen;
057   }
058 
059   /**
060    * Returns the old start offset
061    @return <tt>long</tt> value.
062    */
063   public long getOriginalStartOffset() {
064     return originalStartOffset;
065   }
066 
067   /**
068    * Returns the old end offset
069    @return <tt>long</tt> value.
070    */
071   public long getOriginalEndOffset() {
072     return originalEndOffset;
073   }
074 
075   /**
076    * Returns new start offset
077    @return  <tt>long</tt> value.
078    */
079   public long getTempStartOffset() {
080     return tempStartOffset;
081   }
082 
083   /**
084    * Returns the new end offset
085    @return <tt>long</tt> value.
086    */
087   public long getTempEndOffset() {
088     return tempEndOffset;
089   }
090 
091 }
092 
093 
094 class NodePositionComparator implements Comparator<NodePosition> {
095 
096   @Override
097   public int compare(NodePosition arg0, NodePosition arg1) {
098     long diff = arg0.getTempStartOffset() - arg1.getTempStartOffset();
099     if (diff != 0L) {
100       return Long.signum(diff);
101     }
102     // implied else
103     diff = arg0.getTempEndOffset() - arg1.getTempEndOffset();
104     if (diff != 0L) {
105       return Long.signum(diff);
106     }
107     // implied else
108     diff = arg0.getOriginalStartOffset() - arg1.getOriginalStartOffset();
109     if (diff != 0L) {
110       return Long.signum(diff);
111     }
112     // implied else
113     diff = arg0.getOriginalEndOffset() - arg1.getOriginalEndOffset();
114     return Long.signum(diff);
115   }
116   
117   
118   
119 }