1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.qa.glnm.differences.specialized;
21
22 import java.util.Iterator;
23
24 import io.wcm.qa.glnm.differences.base.Difference;
25 import io.wcm.qa.glnm.differences.base.Differences;
26 import io.wcm.qa.glnm.differences.generic.MutableDifferences;
27
28
29
30
31
32
33 public class ClassDifferences implements Differences {
34
35 private ClassNameDifference classDifference;
36 private PackageDifferences packageDifferences;
37
38
39
40
41
42
43
44 public ClassDifferences(Class clazz) {
45 setClass(clazz);
46 }
47
48
49 @Override
50 public String getKey() {
51 return getDifferences().getKey();
52 }
53
54
55
56
57
58
59
60 public String getRootPackage() {
61 return getPackageDifferences().getRootPackage();
62 }
63
64
65 @Override
66 public Iterator<Difference> iterator() {
67 return getDifferences().iterator();
68 }
69
70
71
72
73
74
75
76 public void setClass(Class clazz) {
77 setClassDifference(new ClassNameDifference(clazz));
78 setPackage(clazz.getPackage());
79 }
80
81
82
83
84
85
86
87 public void setClassNameMaxLength(int maxLength) {
88 getClassDifference().setMaxTagLength(maxLength);
89 }
90
91
92
93
94
95
96
97 public void setPackage(Package p) {
98 setPackageDifferences(new PackageDifferences(p));
99 }
100
101
102
103
104
105
106
107 public void setRootPackage(String rootPackage) {
108 getPackageDifferences().setRootPackage(rootPackage);
109 }
110
111
112 @Override
113 public String toString() {
114 StringBuilder stringBuilder = new StringBuilder();
115 stringBuilder.append("Class(package=");
116 stringBuilder.append(getPackageDifferences().toString());
117 stringBuilder.append("|class=");
118 stringBuilder.append(getClassDifference().toString());
119 stringBuilder.append(")");
120 return stringBuilder.toString();
121 }
122
123 private ClassNameDifference getClassDifference() {
124 if (classDifference == null) {
125 useDefaultClass();
126 }
127 return classDifference;
128 }
129
130 private Differences getDifferences() {
131 MutableDifferences differences = new MutableDifferences();
132 differences.addAll(getPackageDifferences());
133 differences.add(getClassDifference());
134 return differences;
135 }
136
137 private PackageDifferences getPackageDifferences() {
138 if (packageDifferences == null) {
139 useDefaultClass();
140 }
141 return packageDifferences;
142 }
143
144 protected void useDefaultClass() {
145 setClass(Object.class);
146 }
147
148 private void setClassDifference(ClassNameDifference classDifference) {
149 this.classDifference = classDifference;
150 }
151
152 private void setPackageDifferences(PackageDifferences packageDifferences) {
153 this.packageDifferences = packageDifferences;
154 }
155 }