1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.qedeq.base.io;
17
18 import java.io.Serializable;
19
20
21
22
23
24
25
26 public final class SourceArea implements Serializable {
27
28
29 private final String address;
30
31
32 private final SourcePosition startPosition;
33
34
35 private final SourcePosition endPosition;
36
37
38
39
40
41
42
43
44 public SourceArea(final String address, final SourcePosition startPosition,
45 final SourcePosition endPosition) {
46 this.address = address;
47 if (address == null || startPosition == null || endPosition == null) {
48 throw new NullPointerException();
49 }
50 this.startPosition = startPosition;
51 this.endPosition = endPosition;
52 }
53
54
55
56
57
58
59 public SourceArea(final String address) {
60 this(address, SourcePosition.BEGIN, SourcePosition.BEGIN);
61 }
62
63
64
65
66
67
68 public final String getAddress() {
69 return this.address;
70 }
71
72
73
74
75
76
77 public final SourcePosition getStartPosition() {
78 return startPosition;
79 }
80
81
82
83
84
85
86 public final SourcePosition getEndPosition() {
87 return endPosition;
88 }
89
90 public final int hashCode() {
91 return getAddress().hashCode() ^ getStartPosition().hashCode() ^ getEndPosition().hashCode();
92 }
93
94 public final boolean equals(final Object obj) {
95 if (!(obj instanceof SourceArea)) {
96 return false;
97 }
98 final SourceArea other = (SourceArea) obj;
99 return getAddress().equals(other.getAddress())
100 && getStartPosition().equals(other.getStartPosition())
101 && getEndPosition().equals(other.getEndPosition());
102 }
103
104
105
106
107
108
109 public final String getShortDescription() {
110 return getStartPosition().getRow() + ":" + getStartPosition().getColumn()
111 + " - " + getEndPosition().getRow() + ":" + getEndPosition().getColumn();
112 }
113
114 public final String toString() {
115 return getAddress() + ":" + getStartPosition().getRow() + ":" + getStartPosition().getColumn()
116 + ":" + getEndPosition().getRow() + ":" + getEndPosition().getColumn();
117 }
118
119 }