View Javadoc

1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.cpd;
5   
6   import java.util.HashMap;
7   import java.util.Map;
8   
9   public class TokenEntry implements Comparable<TokenEntry> {
10  
11      public static final TokenEntry EOF = new TokenEntry();
12  
13      private String tokenSrcID;
14      private int beginLine;
15      private int index;
16      private int identifier;
17      private int hashCode;
18  
19      private final static Map<String, Integer> Tokens = new HashMap<String, Integer>();
20      private static int TokenCount = 0;
21  
22      private TokenEntry() {
23          this.identifier = 0;
24          this.tokenSrcID = "EOFMarker";
25      }
26  
27      public TokenEntry(String image, String tokenSrcID, int beginLine) {
28          Integer i = Tokens.get(image);
29          if (i == null) {
30              i = Tokens.size() + 1;
31              Tokens.put(image, i);
32          }
33          this.identifier = i.intValue();
34          this.tokenSrcID = tokenSrcID;
35          this.beginLine = beginLine;
36          this.index = TokenCount++;
37      }
38  
39      public static TokenEntry getEOF() {
40          TokenCount++;
41          return EOF;
42      }
43  
44      public static void clearImages() {
45          Tokens.clear();
46          TokenCount = 0;
47      }
48  
49      public String getTokenSrcID() {
50          return tokenSrcID;
51      }
52  
53      public int getBeginLine() {
54          return beginLine;
55      }
56  
57      public int getIdentifier() {
58          return this.identifier;
59      }
60  
61      public int getIndex() {
62          return this.index;
63      }
64  
65      public int hashCode() {
66          return hashCode;
67      }
68  
69      public void setHashCode(int hashCode) {
70          this.hashCode = hashCode;
71      }
72  
73      public boolean equals(Object o) {
74          if (!(o instanceof TokenEntry)) {
75              return false;
76          }
77          TokenEntry other = (TokenEntry) o;
78          return other.hashCode == hashCode;
79      }
80  
81      public int compareTo(TokenEntry other) {
82          return getIndex() - other.getIndex();
83      }
84  }