1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.qedeq.kernel.se.dto.module;
17
18 import java.util.ArrayList;
19 import java.util.List;
20
21 import org.qedeq.base.utility.EqualsUtility;
22 import org.qedeq.kernel.se.base.module.SubsectionList;
23 import org.qedeq.kernel.se.base.module.SubsectionType;
24
25
26
27
28
29
30
31 public class SubsectionListVo implements SubsectionList {
32
33
34 private final List list;
35
36
37
38
39 public SubsectionListVo() {
40 this.list = new ArrayList();
41
42 }
43
44
45
46
47
48
49 public final void add(final SubsectionType subsection) {
50 list.add(subsection);
51 }
52
53 public final int size() {
54 return list.size();
55 }
56
57 public final SubsectionType get(final int index) {
58 return (SubsectionType) list.get(index);
59 }
60
61 public boolean equals(final Object obj) {
62 if (!(obj instanceof SubsectionListVo)) {
63 return false;
64 }
65 final SubsectionListVo otherList = (SubsectionListVo) obj;
66 if (size() != otherList.size()) {
67 return false;
68 }
69 for (int i = 0; i < size(); i++) {
70 if (!EqualsUtility.equals(get(i), otherList.get(i))) {
71 return false;
72 }
73 }
74 return true;
75 }
76
77 public int hashCode() {
78 int hash = 0;
79 for (int i = 0; i < size(); i++) {
80 hash = hash ^ (i + 1);
81 if (get(i) != null) {
82 hash = hash ^ get(i).hashCode();
83 }
84 }
85 return hash;
86 }
87
88 public String toString() {
89 final StringBuffer buffer = new StringBuffer("List of nodes:\n");
90 for (int i = 0; i < size(); i++) {
91 if (i != 0) {
92 buffer.append("\n");
93 }
94 buffer.append((i + 1) + ":\t");
95 buffer.append(get(i) != null ? get(i).toString() : null);
96 }
97 return buffer.toString();
98 }
99
100 }
101