Skip to content
This repository was archived by the owner on Jan 8, 2023. It is now read-only.

Commit 36ae9af

Browse files
committed
Refactor
1 parent 4aab1bd commit 36ae9af

File tree

12 files changed

+61
-68
lines changed

12 files changed

+61
-68
lines changed

src/main/java/io/github/spair/byond/dmi/Dmi.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package io.github.spair.byond.dmi;
22

3-
import lombok.AccessLevel;
43
import lombok.Data;
54
import lombok.NoArgsConstructor;
6-
import lombok.Setter;
75

86
import java.util.Map;
97
import java.util.HashMap;
@@ -12,7 +10,6 @@
1210
import java.util.Optional;
1311

1412
@Data
15-
@Setter(AccessLevel.PACKAGE)
1613
@NoArgsConstructor
1714
@SuppressWarnings("WeakerAccess")
1815
public class Dmi {

src/main/java/io/github/spair/byond/dmi/comparator/DmiComparator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.github.spair.byond.dmi.DmiState;
55
import io.github.spair.byond.dmi.DmiSprite;
66
import io.github.spair.byond.dmi.SpriteDir;
7+
import lombok.val;
78

89
import java.util.ArrayList;
910
import java.util.List;
@@ -43,7 +44,7 @@ private static List<DmiDiffEntry> getDiffList(final Dmi oldDmi, final Dmi newDmi
4344
final Map<String, DmiState> newStates = extractStates(newDmi);
4445

4546
oldStates.forEach((stateName, oldState) -> {
46-
final DmiState newState = newStates.get(stateName);
47+
val newState = newStates.get(stateName);
4748

4849
if (newState != null) {
4950
dmiDiffEntryEntries.addAll(findOldAndNewStateDiff(oldState, newState));
@@ -63,7 +64,7 @@ private static List<DmiDiffEntry> getDiffList(final Dmi oldDmi, final Dmi newDmi
6364

6465
private static List<DmiDiffEntry> listOnlyOneStateSprites(final DmiState state, final boolean isOldState) {
6566
List<DmiDiffEntry> dmiDiffEntries = new ArrayList<>();
66-
final String stateName = state.getName();
67+
val stateName = state.getName();
6768

6869
state.getSprites().forEach((spriteDir, stateSprite) ->
6970
stateSprite.forEach(sprite -> {
@@ -81,7 +82,7 @@ private static List<DmiDiffEntry> listOnlyOneStateSprites(final DmiState state,
8182
private static List<DmiDiffEntry> findOldAndNewStateDiff(final DmiState oldState, final DmiState newState) {
8283
List<DmiDiffEntry> dmiDiffEntries = new ArrayList<>();
8384

84-
final String stateName = oldState.getName();
85+
val stateName = oldState.getName();
8586

8687
final Map<SpriteDir, List<DmiSprite>> oldStateSprites = oldState.getSprites();
8788
final Map<SpriteDir, List<DmiSprite>> newStateSprites = newState.getSprites();

src/main/java/io/github/spair/byond/dmi/comparator/DmiDiff.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package io.github.spair.byond.dmi.comparator;
22

33
import io.github.spair.byond.dmi.DmiMeta;
4-
import lombok.AccessLevel;
54
import lombok.Data;
6-
import lombok.Setter;
75

86
import java.util.Iterator;
97
import java.util.List;
108
import java.util.Objects;
119

1210
@Data
13-
@Setter(AccessLevel.PACKAGE)
1411
@SuppressWarnings("WeakerAccess")
1512
public class DmiDiff implements Iterable<DmiDiffEntry> {
1613

src/main/java/io/github/spair/byond/dmi/comparator/DmiDiffEntry.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
11
package io.github.spair.byond.dmi.comparator;
22

33
import io.github.spair.byond.dmi.DmiSprite;
4-
import lombok.AccessLevel;
54
import lombok.Data;
6-
import lombok.Setter;
75

86
import java.util.Optional;
97

108
@Data
11-
@Setter(AccessLevel.PACKAGE)
129
@SuppressWarnings("WeakerAccess")
1310
public class DmiDiffEntry {
1411

1512
private String stateName;
1613
private DmiSprite oldSprite;
1714
private DmiSprite newSprite;
18-
private DiffStatus status;
15+
private DmiDiffStatus status;
1916

2017
DmiDiffEntry(final String stateName, final DmiSprite oldSprite, final DmiSprite newSprite) {
2118
this.stateName = stateName;
2219
this.oldSprite = oldSprite;
2320
this.newSprite = newSprite;
2421

2522
if (oldSprite != null && newSprite != null) {
26-
status = DiffStatus.MODIFIED;
23+
status = DmiDiffStatus.MODIFIED;
2724
} else if (oldSprite == null && newSprite != null) {
28-
status = DiffStatus.CREATED;
25+
status = DmiDiffStatus.CREATED;
2926
} else if (oldSprite != null) {
30-
status = DiffStatus.DELETED;
27+
status = DmiDiffStatus.DELETED;
3128
} else {
3229
throw new IllegalArgumentException("Original and Modified sprites are null. State name: " + stateName);
3330
}

src/main/java/io/github/spair/byond/dmi/comparator/DiffStatus.java renamed to src/main/java/io/github/spair/byond/dmi/comparator/DmiDiffStatus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.spair.byond.dmi.comparator;
22

3-
public enum DiffStatus {
3+
public enum DmiDiffStatus {
44

55
/** Shows that sprite was created. */
66
CREATED,

src/main/java/io/github/spair/byond/dmi/slurper/DmiSlurper.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import io.github.spair.byond.dmi.Dmi;
44
import io.github.spair.byond.dmi.DmiMeta;
55
import io.github.spair.byond.dmi.DmiState;
6+
import lombok.val;
67

78
import javax.imageio.ImageIO;
8-
import java.awt.image.BufferedImage;
99
import java.io.File;
1010
import java.io.FileInputStream;
1111
import java.io.FileNotFoundException;
@@ -22,12 +22,15 @@
2222
@SuppressWarnings("WeakerAccess")
2323
public final class DmiSlurper {
2424

25+
private final MetaExtractor metaExtractor = new MetaExtractor();
26+
private final StateExtractor stateExtractor = new StateExtractor();
27+
2528
/**
2629
* @param dmiFile file to deserialize
2730
* @return {@link io.github.spair.byond.dmi.Dmi} object
2831
*/
29-
public static Dmi slurpUp(final File dmiFile) {
30-
try (InputStream input = new FileInputStream(dmiFile)) {
32+
public Dmi slurpUp(final File dmiFile) {
33+
try (val input = new FileInputStream(dmiFile)) {
3134
return slurpUp(dmiFile.getName(), input);
3235
} catch (FileNotFoundException e) {
3336
throw new IllegalArgumentException("Received DMI file doesn't exist. File path: " + dmiFile.getPath(), e);
@@ -43,8 +46,8 @@ public static Dmi slurpUp(final File dmiFile) {
4346
* @param base64content base64 string to deserialize
4447
* @return {@link io.github.spair.byond.dmi.Dmi} object
4548
*/
46-
public static Dmi slurpUp(final String dmiName, final String base64content) {
47-
try (InputStream input = new ByteArrayInputStream(Base64.getMimeDecoder().decode(base64content))) {
49+
public Dmi slurpUp(final String dmiName, final String base64content) {
50+
try (val input = new ByteArrayInputStream(Base64.getMimeDecoder().decode(base64content))) {
4851
return slurpUp(dmiName, input);
4952
} catch (IOException e) {
5053
throw new IllegalArgumentException("Received base64 content can't be read. Dmi name: " + dmiName, e);
@@ -56,15 +59,15 @@ public static Dmi slurpUp(final String dmiName, final String base64content) {
5659
* @param input raw input stream to deserialize
5760
* @return {@link io.github.spair.byond.dmi.Dmi} object
5861
*/
59-
public static Dmi slurpUp(final String dmiName, final InputStream input) {
60-
try (BufferedInputStream bufferedInput = new BufferedInputStream(input)) {
62+
public Dmi slurpUp(final String dmiName, final InputStream input) {
63+
try (val bufferedInput = new BufferedInputStream(input)) {
6164
bufferedInput.mark(input.available());
6265

63-
BufferedImage dmiImage = ImageIO.read(bufferedInput);
66+
val dmiImage = ImageIO.read(bufferedInput);
6467
bufferedInput.reset();
6568

66-
DmiMeta dmiMeta = MetaExtractor.extractMetadata(bufferedInput);
67-
Map<String, DmiState> dmiStates = StateExtractor.extractStates(dmiImage, dmiMeta);
69+
DmiMeta dmiMeta = metaExtractor.extractMetadata(bufferedInput);
70+
Map<String, DmiState> dmiStates = stateExtractor.extractStates(dmiImage, dmiMeta);
6871

6972
return new Dmi(dmiName, dmiImage.getWidth(), dmiImage.getHeight(), dmiMeta, dmiStates);
7073
} catch (IOException e) {
@@ -73,7 +76,4 @@ public static Dmi slurpUp(final String dmiName, final InputStream input) {
7376
throw new RuntimeException("Unable to slurp up dmi input. Dmi name: " + dmiName, e);
7477
}
7578
}
76-
77-
private DmiSlurper() {
78-
}
7979
}

src/main/java/io/github/spair/byond/dmi/slurper/MetaExtractor.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ final class MetaExtractor {
2525
private static final String META_ELEMENT_TAG = "TextEntry";
2626
private static final String META_ATTRIBUTE = "value";
2727

28-
private static final Pattern WIDTH_HEIGHT = Pattern.compile("(?:width\\s=\\s(\\d+))\n\t(?:height\\s=\\s(\\d+))");
29-
private static final Pattern STATE_PATTERN = Pattern.compile("(?:state\\s=\\s\".*\"(?:\\n\\t.*)+)");
30-
private static final Pattern PARAM_PATTERN = Pattern.compile("(\\w+)\\s=\\s(.+)");
28+
private final Pattern widthHeightPattern = Pattern.compile("(?:width\\s=\\s(\\d+))\n\t(?:height\\s=\\s(\\d+))");
29+
private final Pattern statePattern = Pattern.compile("(?:state\\s=\\s\".*\"(?:\\n\\t.*)+)");
30+
private final Pattern paramPattern = Pattern.compile("(\\w+)\\s=\\s(.+)");
3131

3232
private static final String STATE = "state";
3333
private static final String DIRS = "dirs";
@@ -40,7 +40,7 @@ final class MetaExtractor {
4040

4141
private static final String MOVEMENT_SUFFIX = " (M)";
4242

43-
static DmiMeta extractMetadata(final InputStream input) {
43+
DmiMeta extractMetadata(final InputStream input) {
4444
IIOMetadata metadata = readMetadata(input);
4545

4646
String metadataFormatName = IIOMetadataFormatImpl.standardMetadataFormatName;
@@ -50,7 +50,7 @@ static DmiMeta extractMetadata(final InputStream input) {
5050
return parseMetadataText(text.getAttribute(META_ATTRIBUTE));
5151
}
5252

53-
private static IIOMetadata readMetadata(final InputStream input) {
53+
private IIOMetadata readMetadata(final InputStream input) {
5454
try (ImageInputStream imageInputStream = ImageIO.createImageInputStream(input)) {
5555
ImageReader reader = ImageIO.getImageReadersByMIMEType(PNG_MIME).next();
5656

@@ -63,18 +63,18 @@ private static IIOMetadata readMetadata(final InputStream input) {
6363
}
6464
}
6565

66-
private static DmiMeta parseMetadataText(final String metadataText) {
67-
DmiMeta metadata = new DmiMeta();
68-
Matcher widthHeight = WIDTH_HEIGHT.matcher(metadataText);
66+
private DmiMeta parseMetadataText(final String metadataText) {
67+
Matcher widthHeight = widthHeightPattern.matcher(metadataText);
6968

7069
if (!widthHeight.find() || widthHeight.group(1) == null || widthHeight.group(2) == null) {
7170
throw new IllegalArgumentException("DMI meta does't contain width and height properties");
7271
}
7372

73+
DmiMeta metadata = new DmiMeta();
7474
metadata.setSpritesWidth(Integer.parseInt(widthHeight.group(1)));
7575
metadata.setSpritesHeight(Integer.parseInt(widthHeight.group(2)));
7676

77-
Matcher state = STATE_PATTERN.matcher(metadataText);
77+
Matcher state = statePattern.matcher(metadataText);
7878
List<DmiMetaEntry> entries = new ArrayList<>();
7979

8080
while (state.find()) {
@@ -94,9 +94,9 @@ private static DmiMeta parseMetadataText(final String metadataText) {
9494
return metadata;
9595
}
9696

97-
private static DmiMetaEntry parseState(final String stateText) {
97+
private DmiMetaEntry parseState(final String stateText) {
98+
Matcher stateParam = paramPattern.matcher(stateText);
9899
DmiMetaEntry metaEntry = new DmiMetaEntry();
99-
Matcher stateParam = PARAM_PATTERN.matcher(stateText);
100100

101101
while (stateParam.find()) {
102102
final String paramName = stateParam.group(1);
@@ -137,14 +137,11 @@ private static DmiMetaEntry parseState(final String stateText) {
137137
return metaEntry;
138138
}
139139

140-
private static boolean isValueTrue(final String value) {
140+
private boolean isValueTrue(final String value) {
141141
return "1".equals(value);
142142
}
143143

144-
private static double[] doubleArrayFromString(final String str) {
144+
private double[] doubleArrayFromString(final String str) {
145145
return Arrays.stream(str.split(",")).mapToDouble(Double::parseDouble).toArray();
146146
}
147-
148-
private MetaExtractor() {
149-
}
150147
}

src/main/java/io/github/spair/byond/dmi/slurper/StateExtractor.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
final class StateExtractor {
2020

21-
static Map<String, DmiState> extractStates(final BufferedImage dmiImage, final DmiMeta dmiMeta) {
21+
private final Comparator<SpriteDir> dirComparator = Comparator.comparingInt(SpriteDirHelper::getCompareWeight);
22+
23+
Map<String, DmiState> extractStates(final BufferedImage dmiImage, final DmiMeta dmiMeta) {
2224
final int dmiWidth = dmiImage.getWidth();
2325
final int spriteWidth = dmiMeta.getSpritesWidth();
2426
final int spriteHeight = dmiMeta.getSpritesHeight();
@@ -69,7 +71,7 @@ static Map<String, DmiState> extractStates(final BufferedImage dmiImage, final D
6971
return dmiStates;
7072
}
7173

72-
private static BufferedImage cropSpriteImage(
74+
private BufferedImage cropSpriteImage(
7375
final BufferedImage dmiImage, final int width, final int height, final int xPos, final int yPos) {
7476
BufferedImage dst = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
7577

@@ -80,8 +82,7 @@ private static BufferedImage cropSpriteImage(
8082
return dst;
8183
}
8284

83-
private static Map<SpriteDir, List<DmiSprite>> distributeAllSpritesInMap(final List<DmiSprite> allSprites) {
84-
Comparator<SpriteDir> dirComparator = Comparator.comparingInt(SpriteDirHelper::getCompareWeight);
85+
private Map<SpriteDir, List<DmiSprite>> distributeAllSpritesInMap(final List<DmiSprite> allSprites) {
8586
Map<SpriteDir, List<DmiSprite>> spriteMap = new TreeMap<>(dirComparator);
8687

8788
for (DmiSprite sprite : allSprites) {
@@ -91,7 +92,4 @@ private static Map<SpriteDir, List<DmiSprite>> distributeAllSpritesInMap(final L
9192

9293
return spriteMap;
9394
}
94-
95-
private StateExtractor() {
96-
}
9795
}

src/test/java/io/github/spair/byond/dmi/comparator/DmiComparatorTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ public class DmiComparatorTest {
2020
private static final String ROLLERBED_ORIGINAL_PATH = "src/test/resources/rollerbed_original.dmi";
2121
private static final String ROLLERBED_DIFF_PATH = "src/test/resources/rollerbed_original_diff.dmi";
2222

23+
private final DmiSlurper dmiSlurper = new DmiSlurper();
24+
2325
@Test
2426
public void testCompareWhenNotSame() {
25-
Dmi original = DmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
26-
Dmi modified = DmiSlurper.slurpUp(new File(ROLLERBED_DIFF_PATH));
27+
Dmi original = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
28+
Dmi modified = dmiSlurper.slurpUp(new File(ROLLERBED_DIFF_PATH));
2729

2830
DmiDiff diff = DmiComparator.compare(original, modified);
2931

@@ -74,7 +76,7 @@ public void testCompareWhenNotSame() {
7476

7577
@Test
7678
public void testCompareWhenSame() {
77-
Dmi dmi = DmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
79+
Dmi dmi = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
7880
DmiDiff diff = DmiComparator.compare(dmi, dmi);
7981

8082
assertTrue(diff.isSame());
@@ -84,26 +86,26 @@ public void testCompareWhenSame() {
8486

8587
@Test
8688
public void testCompareWhenModifiedNull() {
87-
Dmi dmi = DmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
89+
Dmi dmi = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
8890
DmiDiff diff = DmiComparator.compare(dmi, null);
8991

9092
assertEquals(17, diff.getDmiDiffEntries().size());
9193
assertNotNull(diff.getOldMeta());
9294
assertNull(diff.getNewMeta());
9395

94-
diff.forEach(dmiDiffEntryEntry -> assertEquals(DiffStatus.DELETED, dmiDiffEntryEntry.getStatus()));
96+
diff.forEach(dmiDiffEntryEntry -> assertEquals(DmiDiffStatus.DELETED, dmiDiffEntryEntry.getStatus()));
9597
}
9698

9799
@Test
98100
public void testCompareWhenOriginalNull() {
99-
Dmi dmi = DmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
101+
Dmi dmi = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
100102
DmiDiff diff = DmiComparator.compare(null, dmi);
101103

102104
assertEquals(17, diff.getDmiDiffEntries().size());
103105
assertNotNull(diff.getNewMeta());
104106
assertNull(diff.getOldMeta());
105107

106-
diff.forEach(dmiDiffEntryEntry -> assertEquals(DiffStatus.CREATED, dmiDiffEntryEntry.getStatus()));
108+
diff.forEach(dmiDiffEntryEntry -> assertEquals(DmiDiffStatus.CREATED, dmiDiffEntryEntry.getStatus()));
107109
}
108110

109111
private List<DmiDiffEntry> getExpectedEntries() {

0 commit comments

Comments
 (0)