1   /**
2    * Distribution License:
3    * JSword is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU Lesser General Public License, version 2.1 or later
5    * as published by the Free Software Foundation. This program is distributed
6    * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7    * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU Lesser General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *      http://www.gnu.org/copyleft/lgpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * © CrossWire Bible Society, 2007 - 2016
18   *
19   */
20  package org.crosswire.common.diff;
21  
22  /**
23   * 
24   * Represents a single difference, consisting of an EditType and associated
25   * text.
26   * 
27   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
28   * @author DM Smith
29   */
30  public class Difference {
31      public Difference(EditType edit, String text) {
32          this.editType = edit;
33          this.text = text;
34      }
35  
36      /**
37       * @return the EditType
38       */
39      public EditType getEditType() {
40          return editType;
41      }
42  
43      /**
44       * @param newEditType
45       *            the EditType to set
46       */
47      public void setEditType(EditType newEditType) {
48          editType = newEditType;
49      }
50  
51      /**
52       * @return the text
53       */
54      public String getText() {
55          return text;
56      }
57  
58      /**
59       * @param newText
60       *            the text to set
61       */
62      public void setText(String newText) {
63          text = newText;
64      }
65  
66      /**
67       * @return the index
68       */
69      public int getIndex() {
70          return index;
71      }
72  
73      /**
74       * @param newIndex
75       *            the index to set
76       */
77      public void setIndex(int newIndex) {
78          index = newIndex;
79      }
80  
81      /**
82       * @param addText
83       *            the text to set
84       */
85      public void appendText(String addText) {
86          text += addText;
87      }
88  
89      /**
90       * @param addText
91       *            the text to set
92       */
93      public void appendText(char addText) {
94          text += addText;
95      }
96  
97      /**
98       * @param addText
99       *            the text to set
100      */
101     public void prependText(String addText) {
102         text = addText + text;
103     }
104 
105     /**
106      * @param addText
107      *            the text to set
108      */
109     public void prependText(char addText) {
110         text = addText + text;
111     }
112 
113     /*
114      * (non-Javadoc)
115      * 
116      * @see java.lang.Object#toString()
117      */
118     @Override
119     public String toString() {
120         return editType.toString() + ':' + text;
121     }
122 
123     /*
124      * (non-Javadoc)
125      * 
126      * @see java.lang.Object#hashCode()
127      */
128     @Override
129     public int hashCode() {
130         return 31 * editType.hashCode() + text.hashCode();
131     }
132 
133     /*
134      * (non-Javadoc)
135      * 
136      * @see java.lang.Object#equals(java.lang.Object)
137      */
138     @Override
139     public boolean equals(Object obj) {
140         if (this == obj) {
141             return true;
142         }
143 
144         if (obj == null || getClass() != obj.getClass()) {
145             return false;
146         }
147 
148         final Difference other = (Difference) obj;
149 
150         return editType.equals(other.editType) && text.equals(other.text);
151     }
152 
153     /**
154      * The edit to perform
155      */
156     private EditType editType;
157     private String text;
158     private int index;
159 
160 }
161