Skip to content

Commit 413f1a7

Browse files
All Data() access now static
1 parent 50f37ed commit 413f1a7

File tree

3 files changed

+62
-69
lines changed

3 files changed

+62
-69
lines changed

src/main/java/com/mapcode/Data.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ class Data {
3434
'A', 'E', 'U'
3535
};
3636

37-
Data() {
38-
}
39-
4037
static boolean isNameless(final int i) {
4138
return (DataAccess.dataFlags(i) & 64) != 0;
4239
}

src/main/java/com/mapcode/Decoder.java

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -90,35 +90,33 @@ static Point decode(@Nonnull final String argMapcode,
9090
final int incodexhi = mapcode.indexOf('.');
9191
final int incodex = (incodexhi * 10) + (incodexlen - incodexhi);
9292

93-
final Data mapcoderData = new Data();
94-
9593
for (int i = from; i <= upto; i++) {
96-
final int codexi = mapcoderData.calcCodex(i);
97-
if (mapcoderData.recType(i) == 0) {
98-
if (mapcoderData.isNameless(i)) {
94+
final int codexi = Data.calcCodex(i);
95+
if (Data.recType(i) == 0) {
96+
if (Data.isNameless(i)) {
9997
// i = nameless
10098
if (((codexi == 21) && (incodex == 22)) ||
10199
((codexi == 22) && (incodex == 32)) ||
102100
((codexi == 13) && (incodex == 23))) {
103-
result = decodeNameless(mapcode, i, extrapostfix, mapcoderData);
101+
result = decodeNameless(mapcode, i, extrapostfix);
104102
break;
105103
}
106104
} else {
107105
// i = grid without headerletter
108106
if ((codexi == incodex) || ((incodex == 22) && (codexi == 21))) {
109107
result = decodeGrid(mapcode,
110-
mapcoderData.getBoundaries(i).getMinX(), mapcoderData.getBoundaries(i).getMinY(),
111-
mapcoderData.getBoundaries(i).getMaxX(), mapcoderData.getBoundaries(i).getMaxY(),
108+
Data.getBoundaries(i).getMinX(), Data.getBoundaries(i).getMinY(),
109+
Data.getBoundaries(i).getMaxX(), Data.getBoundaries(i).getMaxY(),
112110
i, extrapostfix);
113111

114-
if (mapcoderData.isRestricted(i) && result.isDefined()) {
112+
if (Data.isRestricted(i) && result.isDefined()) {
115113
boolean fitssomewhere = false;
116114
int j;
117115
for (j = upto - 1; j >= from; j--) {
118-
if (!mapcoderData.isRestricted(j)) {
119-
final int xdiv8 = Common.xDivider(mapcoderData.getBoundaries(j).getMinY(),
120-
mapcoderData.getBoundaries(j).getMaxY()) / 4;
121-
if (mapcoderData.getBoundaries(j).extendBounds(xdiv8, 60).containsPoint(result)) {
116+
if (!Data.isRestricted(j)) {
117+
final int xdiv8 = Common.xDivider(Data.getBoundaries(j).getMinY(),
118+
Data.getBoundaries(j).getMaxY()) / 4;
119+
if (Data.getBoundaries(j).extendBounds(xdiv8, 60).containsPoint(result)) {
122120
fitssomewhere = true;
123121
break;
124122
}
@@ -131,20 +129,20 @@ static Point decode(@Nonnull final String argMapcode,
131129
break;
132130
}
133131
}
134-
} else if (mapcoderData.recType(i) == 1) {
132+
} else if (Data.recType(i) == 1) {
135133
// i = grid with headerletter
136-
if ((incodex == codexi + 10) && (mapcoderData.headerLetter(i).charAt(0) == mapcode.charAt(0))) {
134+
if ((incodex == codexi + 10) && (Data.headerLetter(i).charAt(0) == mapcode.charAt(0))) {
137135
result = decodeGrid(mapcode.substring(1),
138-
mapcoderData.getBoundaries(i).getMinX(), mapcoderData.getBoundaries(i).getMinY(),
139-
mapcoderData.getBoundaries(i).getMaxX(), mapcoderData.getBoundaries(i).getMaxY(),
136+
Data.getBoundaries(i).getMinX(), Data.getBoundaries(i).getMinY(),
137+
Data.getBoundaries(i).getMaxX(), Data.getBoundaries(i).getMaxY(),
140138
i, extrapostfix);
141139
break;
142140
}
143141
}
144142
else {
145143
// i = autoheader
146144
if (((incodex == 23) && (codexi == 22)) || ((incodex == 33) && (codexi == 23))) {
147-
result = decodeAutoHeader(mapcode, i, extrapostfix, mapcoderData);
145+
result = decodeAutoHeader(mapcode, i, extrapostfix);
148146
break;
149147
}
150148
}
@@ -160,7 +158,7 @@ static Point decode(@Nonnull final String argMapcode,
160158

161159
// LIMIT_TO_OUTRECT : make sure it fits the country
162160
if (ccode != CCODE_EARTH) {
163-
final SubArea mapcoderRect = mapcoderData.getBoundaries(upto); // find
161+
final SubArea mapcoderRect = Data.getBoundaries(upto); // find
164162
// encompassing
165163
// rect
166164
final int xdiv8 = Common.xDivider(mapcoderRect.getMinY(), mapcoderRect.getMaxY()) / 4;
@@ -348,10 +346,9 @@ private static Point decodeGrid(final String str, final int minx, final int miny
348346
}
349347

350348
@Nonnull
351-
private static Point decodeNameless(final String str, final int firstrec, final String extrapostfix,
352-
final Data mapcoderData) {
349+
private static Point decodeNameless(final String str, final int firstrec, final String extrapostfix) {
353350
String result = str;
354-
final int codexm = mapcoderData.calcCodex(firstrec);
351+
final int codexm = Data.calcCodex(firstrec);
355352
if (codexm == 22) {
356353
result = result.substring(0, 3) + result.substring(4);
357354
} else {
@@ -420,14 +417,14 @@ private static Point decodeNameless(final String str, final int firstrec, final
420417
int side = DataAccess.smartDiv(m);
421418
int xSIDE = side;
422419

423-
final int maxy = mapcoderData.getBoundaries(m).getMaxY();
424-
final int minx = mapcoderData.getBoundaries(m).getMinX();
425-
final int miny = mapcoderData.getBoundaries(m).getMinY();
420+
final int maxy = Data.getBoundaries(m).getMaxY();
421+
final int minx = Data.getBoundaries(m).getMinX();
422+
final int miny = Data.getBoundaries(m).getMinY();
426423

427424
final int dx;
428425
final int dy;
429426

430-
if (mapcoderData.isSpecialShape(m)) {
427+
if (Data.isSpecialShape(m)) {
431428
xSIDE *= side;
432429
side = 1 + ((maxy - miny) / 90);
433430
xSIDE = xSIDE / side;
@@ -454,11 +451,10 @@ private static Point decodeNameless(final String str, final int firstrec, final
454451
}
455452

456453
@Nonnull
457-
private static Point decodeAutoHeader(final String input, final int m, final String extrapostfix,
458-
@Nonnull final Data mapcoderData) {
454+
private static Point decodeAutoHeader(final String input, final int m, final String extrapostfix) {
459455
// returns Point.isUndefined() in case or error
460456
int storageStart = 0;
461-
final int codexm = mapcoderData.calcCodex(m);
457+
final int codexm = Data.calcCodex(m);
462458

463459
int value = decodeBase31(input); // decode top (before dot)
464460
value *= 961 * 31;
@@ -468,14 +464,14 @@ private static Point decodeAutoHeader(final String input, final int m, final Str
468464
int i;
469465
i = m;
470466
while (true) {
471-
if ((mapcoderData.recType(i)<2) || (Data.calcCodex(i) != codexm)) {
467+
if ((Data.recType(i)<2) || (Data.calcCodex(i) != codexm)) {
472468
return Point.undefined(); // return undefined
473469
}
474470

475-
final int maxx = mapcoderData.getBoundaries(i).getMaxX();
476-
final int maxy = mapcoderData.getBoundaries(i).getMaxY();
477-
final int minx = mapcoderData.getBoundaries(i).getMinX();
478-
final int miny = mapcoderData.getBoundaries(i).getMinY();
471+
final int maxx = Data.getBoundaries(i).getMaxX();
472+
final int maxy = Data.getBoundaries(i).getMaxY();
473+
final int minx = Data.getBoundaries(i).getMinX();
474+
final int miny = Data.getBoundaries(i).getMinY();
479475

480476
int h = ((maxy - miny) + 89) / 90;
481477
final int xdiv = Common.xDivider(miny, maxy);
@@ -486,7 +482,7 @@ private static Point decodeAutoHeader(final String input, final int m, final Str
486482

487483
int product = (w / 168) * (h / 176) * 961 * 31;
488484

489-
if (mapcoderData.recType(i) == 2) {
485+
if (Data.recType(i) == 2) {
490486
final int goodRounder = (codexm >= 23) ? (961 * 961 * 31) : (961 * 961);
491487
product = ((((storageStart + product + goodRounder) - 1) / goodRounder) * goodRounder) - storageStart;
492488
}

src/main/java/com/mapcode/Encoder.java

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,20 @@ private static List<Mapcode> encode(final double argLatDeg, final double argLonD
8888
}
8989

9090
final int from = DataAccess.dataFirstRecord(currentEncodeTerritory.getNumber());
91-
final Data mapcoderData = new Data();
91+
9292
if (DataAccess.dataFlags(from) == 0) { // no data for this territory?
9393
continue;
9494
}
9595
final int upto = DataAccess.dataLastRecord(currentEncodeTerritory.getNumber());
9696

9797
final int i = subArea.getSubAreaID();
98-
if (mapcoderData.getBoundaries(i).containsPoint(pointToEncode)) {
98+
if (Data.getBoundaries(i).containsPoint(pointToEncode)) {
9999
String mapcode = "";
100-
if (mapcoderData.isNameless(i)) {
101-
mapcode = encodeNameless(pointToEncode, mapcoderData, i, from);
102-
} else if (mapcoderData.recType(i) > 1) {
103-
mapcode = encodeAutoHeader(pointToEncode, mapcoderData, i);
104-
} else if ((i == upto) && mapcoderData.isRestricted(i) && (currentEncodeTerritory.getParentTerritory() != null)) {
100+
if (Data.isNameless(i)) {
101+
mapcode = encodeNameless(pointToEncode, i, from);
102+
} else if (Data.recType(i) > 1) {
103+
mapcode = encodeAutoHeader(pointToEncode, i);
104+
} else if ((i == upto) && Data.isRestricted(i) && (currentEncodeTerritory.getParentTerritory() != null)) {
105105

106106
if (!isRecursive) {
107107
stateOverride = currentEncodeTerritory;
@@ -111,9 +111,9 @@ private static List<Mapcode> encode(final double argLatDeg, final double argLonD
111111
}
112112

113113
continue;
114-
} else if (!mapcoderData.isRestricted(i) || (lastbasesubareaID == from)) {
115-
if (mapcoderData.calcCodex(i) < 54) {
116-
mapcode = encodeGrid(i, pointToEncode, mapcoderData);
114+
} else if (!Data.isRestricted(i) || (lastbasesubareaID == from)) {
115+
if (Data.calcCodex(i) < 54) {
116+
mapcode = encodeGrid(i, pointToEncode);
117117
}
118118
}
119119

@@ -163,9 +163,9 @@ private static String encodeExtension(final int extrax4, final int extray, final
163163
return s;
164164
}
165165

166-
private static String encodeGrid(final int m, final Point point, final Data mapcoderData) {
166+
private static String encodeGrid(final int m, final Point point) {
167167
Point pointToEncode = point;
168-
int codexm = mapcoderData.calcCodex(m);
168+
int codexm = Data.calcCodex(m);
169169
final int orgcodex = codexm;
170170
if (codexm == 21) {
171171
codexm = 22;
@@ -184,10 +184,10 @@ else if (codexm == 14) {
184184
divx = nc[prelen] / divy;
185185
}
186186

187-
final int minx = mapcoderData.getBoundaries(m).getMinX();
188-
final int miny = mapcoderData.getBoundaries(m).getMinY();
189-
final int maxx = mapcoderData.getBoundaries(m).getMaxX();
190-
final int maxy = mapcoderData.getBoundaries(m).getMaxY();
187+
final int minx = Data.getBoundaries(m).getMinX();
188+
final int miny = Data.getBoundaries(m).getMinY();
189+
final int maxx = Data.getBoundaries(m).getMaxX();
190+
final int maxy = Data.getBoundaries(m).getMaxY();
191191

192192
final int ygridsize = (maxy - miny + divy - 1) / divy;
193193
int rely = pointToEncode.getLatMicroDeg() - miny;
@@ -260,12 +260,12 @@ else if (codexm == 14) {
260260

261261
result += encodeExtension(extrax << 2, extray, dividerx << 2, dividery); // grid
262262

263-
return mapcoderData.headerLetter(m) + result;
263+
return Data.headerLetter(m) + result;
264264
}
265265

266-
private static String encodeAutoHeader(final Point pointToEncode, final Data mapcoderData, final int thisindex) {
266+
private static String encodeAutoHeader(final Point pointToEncode, final int thisindex) {
267267
final StringBuilder autoheader_result = new StringBuilder();
268-
final int codexm = mapcoderData.calcCodex(thisindex);
268+
final int codexm = Data.calcCodex(thisindex);
269269
int storageStart = 0;
270270

271271
// search back to first pipe star
@@ -277,10 +277,10 @@ private static String encodeAutoHeader(final Point pointToEncode, final Data map
277277
int i = firstindex;
278278
while (true) {
279279

280-
final int maxx = mapcoderData.getBoundaries(i).getMaxX();
281-
final int maxy = mapcoderData.getBoundaries(i).getMaxY();
282-
final int minx = mapcoderData.getBoundaries(i).getMinX();
283-
final int miny = mapcoderData.getBoundaries(i).getMinY();
280+
final int maxx = Data.getBoundaries(i).getMaxX();
281+
final int maxy = Data.getBoundaries(i).getMaxY();
282+
final int minx = Data.getBoundaries(i).getMinX();
283+
final int miny = Data.getBoundaries(i).getMinY();
284284

285285
int h = ((maxy - miny) + 89) / 90;
286286
final int xdiv = xDivider(miny, maxy);
@@ -291,7 +291,7 @@ private static String encodeAutoHeader(final Point pointToEncode, final Data map
291291

292292
int product = (w / 168) * (h / 176) * 961 * 31;
293293

294-
if (mapcoderData.recType(i) == 2) // plus pipe
294+
if (Data.recType(i) == 2) // plus pipe
295295
{
296296
final int goodRounder = (codexm >= 23) ? (961 * 961 * 31) : (961 * 961);
297297
product =
@@ -327,10 +327,10 @@ private static String encodeAutoHeader(final Point pointToEncode, final Data map
327327
}
328328

329329
// mid-level encode/decode
330-
private static String encodeNameless(final Point pointToEncode, final Data mapcoderData, final int index, final int firstcode)
330+
private static String encodeNameless(final Point pointToEncode, final int index, final int firstcode)
331331
// returns "" in case of (argument) error
332332
{
333-
final int codexm = mapcoderData.calcCodex(index);
333+
final int codexm = Data.calcCodex(index);
334334
final int codexlen = (codexm / 10) + (codexm % 10);
335335
final int first_nameless_record = getFirstNamelessRecord(codexm, index, firstcode);
336336
final int a = countCityCoordinatesForCountry(codexm, index, firstcode);
@@ -370,9 +370,9 @@ private static String encodeNameless(final Point pointToEncode, final Data mapco
370370
final int orgSide = side;
371371
int xSide = side;
372372

373-
final int maxy = mapcoderData.getBoundaries(index).getMaxY();
374-
final int minx = mapcoderData.getBoundaries(index).getMinX();
375-
final int miny = mapcoderData.getBoundaries(index).getMinY();
373+
final int maxy = Data.getBoundaries(index).getMaxY();
374+
final int minx = Data.getBoundaries(index).getMinX();
375+
final int miny = Data.getBoundaries(index).getMinY();
376376

377377
final int dividerx4 = xDivider(miny, maxy);
378378
final int xFracture = 0;
@@ -384,7 +384,7 @@ private static String encodeNameless(final Point pointToEncode, final Data mapco
384384
final int extray = (maxy - y) % dividery;
385385

386386
int v = storage_offset;
387-
if (mapcoderData.isSpecialShape(index)) {
387+
if (Data.isSpecialShape(index)) {
388388
xSide *= side;
389389
side = 1 + ((maxy - miny) / 90);
390390
xSide = xSide / side;
@@ -398,7 +398,7 @@ private static String encodeNameless(final Point pointToEncode, final Data mapco
398398
if (codexlen == 3) {
399399
result = result.substring(0, 2) + '.' + result.substring(2);
400400
} else if (codexlen == 4) {
401-
if ((codexm == 22) && (a < 62) && (orgSide == 961) && !mapcoderData.isSpecialShape(index)) {
401+
if ((codexm == 22) && (a < 62) && (orgSide == 961) && !Data.isSpecialShape(index)) {
402402
result = result.substring(0, 2) + result.charAt(3) + result.charAt(2) + result.charAt(4);
403403
}
404404
if (codexm == 13) {

0 commit comments

Comments
 (0)