summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/ioutils/blocks/Block.java
blob: 15f351027f01a8b01f72cb0a33c269ef40465074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package bjc.utils.ioutils.blocks;

/**
 * Represents a block of text read in from a source.
 *
 * @author EVE
 *
 */
public class Block {
	/**
	 * The contents of this block.
	 */
	public final String contents;

	/**
	 * The line of the source this block started on.
	 */
	public final int startLine;

	/**
	 * The line of the source this block ended on.
	 */
	public final int endLine;

	/**
	 * The number of this block.
	 */
	public final int blockNo;

	/**
	 * Create a new block.
	 *
	 * @param blockNo
	 *                The number of this block.
	 * @param contents
	 *                The contents of this block.
	 * @param startLine
	 *                The line this block started on.
	 * @param endLine
	 *                The line this block ended.
	 */
	public Block(final int blockNo, final String contents, final int startLine, final int endLine) {
		this.contents = contents;
		this.startLine = startLine;
		this.endLine = endLine;
		this.blockNo = blockNo;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;

		result = prime * result + blockNo;
		result = prime * result + (contents == null ? 0 : contents.hashCode());
		result = prime * result + endLine;
		result = prime * result + startLine;

		return result;
	}

	@Override
	public boolean equals(final Object obj) {
		if (this == obj) return true;
		if (obj == null) return false;
		if (!(obj instanceof Block)) return false;

		final Block other = (Block) obj;

		if (blockNo != other.blockNo) return false;

		if (contents == null) {
			if (other.contents != null) return false;
		} else if (!contents.equals(other.contents)) return false;

		if (endLine != other.endLine) return false;
		if (startLine != other.startLine) return false;

		return true;
	}

	@Override
	public String toString() {
		String fmt = "Block #%d (from lines %d to %d), length: %d characters";

		return String.format(fmt, blockNo, startLine, endLine, contents.length());
	}
}