View Javadoc
1   package de.fhdw.wtf.common.token;
2   
3   /**
4    * This token contains a not-recognized string. e.g. invalid character sequences in the original input.
5    * 
6    */
7   public final class InvalidToken extends MultiCharToken {
8   	
9   	/**
10  	 * generated.
11  	 */
12  	private static final long serialVersionUID = -8125327670667747456L;
13  	
14  	/**
15  	 * Private Constructor for InvalidToken. Use create(...)-Factory instead!
16  	 * 
17  	 * @param invalidString
18  	 *            initial invalid string
19  	 * @param position
20  	 *            start position of this token in the original input
21  	 */
22  	private InvalidToken(final String invalidString, final Position position) {
23  		super(invalidString, position);
24  	}
25  	
26  	/**
27  	 * Factory for a {@link InvalidToken}.
28  	 * 
29  	 * @param invalidChar
30  	 *            initial invalid single-char
31  	 * @param position
32  	 *            start position of this token in the original input
33  	 * @return a new instance of this token
34  	 */
35  	public static InvalidToken create(final char invalidChar, final Position position) {
36  		return new InvalidToken(Character.toString(invalidChar), position);
37  	}
38  	
39  	/**
40  	 * Factory for a {@link InvalidToken}.
41  	 * 
42  	 * @param invalidString
43  	 *            initial invalid string.
44  	 * @param position
45  	 *            start position of this token in the original input
46  	 * @return a new instance of this token
47  	 */
48  	public static InvalidToken create(final String invalidString, final Position position) {
49  		return new InvalidToken(invalidString, position);
50  	}
51  	
52  	@Override
53  	public boolean isInvalidToken() {
54  		return true;
55  	}
56  	
57  	/**
58  	 * Invalid character-sequence represented by this token.
59  	 * 
60  	 * @return the invalid string of this token
61  	 */
62  	public String getInvalidString() {
63  		return this.getTokenString();
64  	}
65  	
66  	@Override
67  	protected boolean equalsTemplate(final Token t) {
68  		if (t.isInvalidToken()) {
69  			final InvalidToken i = (InvalidToken) t;
70  			return i.getInvalidString().equals(this.getInvalidString());
71  		}
72  		return false;
73  	}
74  	
75  	@Override
76  	protected int hashCodeTemplate() {
77  		return this.getInvalidString().hashCode();
78  	}
79  	
80  	@Override
81  	public boolean equals(final Object o) {
82  		if (o instanceof InvalidToken) {
83  			return super.equals(o);
84  		}
85  		return false;
86  	}
87  	
88  	@Override
89  	public int hashCode() {
90  		return super.hashCode();
91  	}
92  }