|
23 | 23 |
|
24 | 24 | import static com.mapcode.Boundary.createBoundaryForTerritoryRecord; |
25 | 25 |
|
| 26 | +/** |
| 27 | + * ---------------------------------------------------------------------------------------------- |
| 28 | + * Package private implementation class. For internal use within the Mapcode implementation only. |
| 29 | + * ---------------------------------------------------------------------------------------------- |
| 30 | + * |
| 31 | + * This class contains decoder for mapcodes. |
| 32 | + */ |
26 | 33 | class Decoder { |
27 | 34 | private static final Logger LOG = LoggerFactory.getLogger(Decoder.class); |
28 | 35 |
|
29 | | - private static final char GREEK_CAPITAL_ALPHA = '\u0391'; |
30 | | - |
31 | | - private static final DataModel dataModel = DataModel.getInstance(); |
| 36 | + // Get direct access to the data model singleton. |
| 37 | + private static final DataModel DATA_MODEL = DataModel.getInstance(); |
32 | 38 |
|
33 | 39 | private Decoder() { |
34 | 40 | // Prevent instantiation. |
@@ -77,20 +83,19 @@ static MapcodeZone decodeToMapcodeZone(@Nonnull final String argMapcode, |
77 | 83 | territory = Territory.AAA; |
78 | 84 | } else { |
79 | 85 | final Territory parentTerritory = territory.getParentTerritory(); |
80 | | - if (((codexLen >= 8) && ((parentTerritory == Territory.USA) || (parentTerritory == Territory.CAN) |
81 | | - || (parentTerritory == Territory.AUS) || (parentTerritory == Territory.BRA) |
82 | | - || (parentTerritory == Territory.CHN) || (parentTerritory == Territory.RUS))) |
83 | | - || ((codexLen >= 7) && |
84 | | - ((parentTerritory == Territory.IND) || (parentTerritory == Territory.MEX)))) { |
85 | | - |
| 86 | + if (((codexLen >= 8) && |
| 87 | + ((parentTerritory == Territory.USA) || (parentTerritory == Territory.CAN) || |
| 88 | + (parentTerritory == Territory.AUS) || (parentTerritory == Territory.BRA) || |
| 89 | + (parentTerritory == Territory.CHN) || (parentTerritory == Territory.RUS))) || |
| 90 | + ((codexLen >= 7) && |
| 91 | + ((parentTerritory == Territory.IND) || (parentTerritory == Territory.MEX)))) { |
86 | 92 | territory = parentTerritory; |
87 | 93 | } |
88 | 94 | } |
89 | | - |
90 | 95 | final int territoryNumber = territory.getNumber(); |
91 | 96 |
|
92 | | - final int fromTerritoryRecord = dataModel.getDataFirstRecord(territoryNumber); |
93 | | - final int uptoTerritoryRecord = dataModel.getDataLastRecord(territoryNumber); |
| 97 | + final int fromTerritoryRecord = DATA_MODEL.getDataFirstRecord(territoryNumber); |
| 98 | + final int uptoTerritoryRecord = DATA_MODEL.getDataLastRecord(territoryNumber); |
94 | 99 |
|
95 | 100 | // Determine the codex pattern as 2-digits: length-of-left-part * 10 + length-of-right-part. |
96 | 101 | final int positionOfDot = mapcode.indexOf('.'); |
@@ -232,6 +237,9 @@ public Unicode2Ascii(final char min, final char max, @Nonnull final String conve |
232 | 237 | } |
233 | 238 | } |
234 | 239 |
|
| 240 | + // Greek character A. |
| 241 | + private static final char GREEK_CAPITAL_ALPHA = '\u0391'; |
| 242 | + |
235 | 243 | // Special character '?' indicating missing character in alphabet. |
236 | 244 | private static final char MISSCODE = '?'; |
237 | 245 |
|
@@ -339,7 +347,7 @@ private static MapcodeZone decodeGrid( |
339 | 347 |
|
340 | 348 | final int divx; |
341 | 349 | int divy; |
342 | | - divy = dataModel.getSmartDiv(m); |
| 350 | + divy = DATA_MODEL.getSmartDiv(m); |
343 | 351 | if (divy == 1) { |
344 | 352 | divx = Common.X_SIDE[prelen]; |
345 | 353 | divy = Common.Y_SIDE[prelen]; |
@@ -486,7 +494,7 @@ private static MapcodeZone decodeNameless( |
486 | 494 |
|
487 | 495 | final int territoryRecord = firstrec + nrX; |
488 | 496 |
|
489 | | - int side = dataModel.getSmartDiv(territoryRecord); |
| 497 | + int side = DATA_MODEL.getSmartDiv(territoryRecord); |
490 | 498 | int xSIDE = side; |
491 | 499 |
|
492 | 500 | final Boundary boundary = createBoundaryForTerritoryRecord(territoryRecord); |
|
0 commit comments