1 /*
2 * Copyright (C) 2020-2023 Dipl.-Inform. Kai Hofmann. All rights reserved!
3 */
4 package de.powerstat.validation.values;
5
6
7 import java.util.Objects;
8
9 import de.powerstat.validation.interfaces.IValueObject;
10
11
12 /**
13 * Address BFPONumber.
14 *
15 * Not DSGVO relevant.
16 */
17 public final class BFPONumber implements Comparable<BFPONumber>, IValueObject
18 {
19 /* *
20 * Cache for singletons.
21 */
22 // private static final Map<Integer, BFPONumber> CACHE = new WeakHashMap<>();
23
24 /**
25 * BFPONumber.
26 */
27 private final int bFPONumber;
28
29
30 /**
31 * Constructor.
32 *
33 * @param bFPONumber BFPONumber
34 * @throws IndexOutOfBoundsException When the bFPONumber is out of bounds
35 */
36 private BFPONumber(final int bFPONumber)
37 {
38 super();
39 if ((bFPONumber < 1) || (bFPONumber > 2035))
40 {
41 throw new IndexOutOfBoundsException("BFPONumber illegal value!!"); //$NON-NLS-1$
42 }
43 this.bFPONumber = bFPONumber;
44 }
45
46
47 /**
48 * BFPONumber factory.
49 *
50 * @param bFPONumber BFPONumber
51 * @return BFPONumber object
52 */
53 public static BFPONumber of(final int bFPONumber)
54 {
55 /*
56 synchronized (BFPONumber.class)
57 {
58 BFPONumber obj = BFPONumber.CACHE.get(bFPONumber);
59 if (obj != null)
60 {
61 return obj;
62 }
63 obj = new BFPONumber(bFPONumber);
64 BFPONumber.CACHE.put(Integer.valueOf(bFPONumber), obj);
65 return obj;
66 }
67 */
68 return new BFPONumber(bFPONumber);
69 }
70
71
72 /**
73 * Factory for string values.
74 *
75 * @param value String value
76 * @return BFPONumber object
77 */
78 public static BFPONumber of(final String value)
79 {
80 return of(Integer.parseInt(value));
81 }
82
83
84 /**
85 * Returns the value of this BFPONumber as an int.
86 *
87 * @return The numeric value represented by this object after conversion to type int.
88 */
89 public int intValue()
90 {
91 return this.bFPONumber;
92 }
93
94
95 /**
96 * Returns the value of this BFPONumber as a string.
97 *
98 * @return The text value represented by this object after conversion to type string.
99 */
100 @Override
101 public String stringValue()
102 {
103 return Integer.toString(this.bFPONumber);
104 }
105
106
107 /**
108 * Calculate hash code.
109 *
110 * @return Hash
111 * @see java.lang.Object#hashCode()
112 */
113 @Override
114 public int hashCode()
115 {
116 return Integer.hashCode(this.bFPONumber);
117 }
118
119
120 /**
121 * Is equal with another object.
122 *
123 * @param obj Object
124 * @return true when equal, false otherwise
125 * @see java.lang.Object#equals(java.lang.Object)
126 */
127 @Override
128 public boolean equals(final Object obj)
129 {
130 if (this == obj)
131 {
132 return true;
133 }
134 if (!(obj instanceof BFPONumber))
135 {
136 return false;
137 }
138 final BFPONumber other = (BFPONumber)obj;
139 return this.bFPONumber == other.bFPONumber;
140 }
141
142
143 /**
144 * Returns the string representation of this BFPONumber.
145 *
146 * The exact details of this representation are unspecified and subject to change, but the following may be regarded as typical:
147 *
148 * "BFPONumber[bFPONumber=2]"
149 *
150 * @return String representation of this BFPONumber
151 * @see java.lang.Object#toString()
152 */
153 @Override
154 public String toString()
155 {
156 final var builder = new StringBuilder(23);
157 builder.append("BFPONumber[bFPONumber=").append(this.bFPONumber).append(']'); //$NON-NLS-1$
158 return builder.toString();
159 }
160
161
162 /**
163 * Compare with another object.
164 *
165 * @param obj Object to compare with
166 * @return 0: equal; 1: greater; -1: smaller
167 * @see java.lang.Comparable#compareTo(java.lang.Object)
168 */
169 @Override
170 public int compareTo(final BFPONumber obj)
171 {
172 Objects.requireNonNull(obj, "obj"); //$NON-NLS-1$
173 return Integer.compare(this.bFPONumber, obj.bFPONumber);
174 }
175
176 }
177