Skip to content

Commit 767846b

Browse files
Merge pull request #68 from EatSleepProgramRepeat/66-numberformatexception-when-searching-for-release-u2---u2
fixed possible NumberFormatException for vinyl releases
2 parents 5e5d1c1 + 2bfd603 commit 767846b

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

src/main/java/com/CDPrintable/MusicBrainzResources/MusicBrainzJSONReader.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ public MusicBrainzTrack[] getReleaseTracks() {
266266
JOptionPane.showMessageDialog(null, "No media found in JSON.", "Error", JOptionPane.ERROR_MESSAGE);
267267
return new MusicBrainzTrack[0];
268268
}
269+
boolean vinylWarningShown = false, tnWarningShown = false;
269270
for (JsonElement mediaElement : mediaArray) {
270271
JsonObject mediaObject = mediaElement.getAsJsonObject(); // Cast each element to JsonObject
271272
JsonArray trackArray = mediaObject.getAsJsonArray("tracks");
@@ -274,9 +275,29 @@ public MusicBrainzTrack[] getReleaseTracks() {
274275
String title = jsonHasAndIsNotNull(trackObject, "title") ? trackObject.get("title").getAsString() : null;
275276
int length = jsonHasAndIsNotNull(trackObject, "length") ? trackObject.get("length").getAsInt() : -1;
276277
int trackNumber = -1;
278+
// tn represents track number
277279

278280
if (trackObject.has("number")) {
279-
trackNumber = trackObject.get("number").getAsInt();
281+
try {
282+
// I guess that some vinyl discs have track number A1 which nukes this program.
283+
trackNumber = trackObject.get("number").getAsInt();
284+
} catch (NumberFormatException e) {
285+
if (!vinylWarningShown) {
286+
JOptionPane.showMessageDialog(null, "This is most likely a vinyl release. Track numbers are different on vinyl, but this release will still be processed. \n Things might get funky from here :/");
287+
vinylWarningShown = true;
288+
}
289+
// Try to see if position exists instead
290+
if (trackObject.has("position")) {
291+
try {
292+
trackNumber = trackObject.get("position").getAsInt();
293+
} catch (NumberFormatException e2) {
294+
if (!tnWarningShown) {
295+
JOptionPane.showMessageDialog(null, "This release dosen't have correctly formatted track numbers. \n It will still be processed, but things might get strange from here.", "Warning", JOptionPane.WARNING_MESSAGE);
296+
tnWarningShown = true;
297+
}
298+
}
299+
}
300+
}
280301
} else if (trackObject.has("position")) {
281302
trackNumber = trackObject.get("position").getAsInt();
282303
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Application version.
22

33
# MAJOR MINOR PATCH
4-
version=1.10.9
4+
version=1.10.10

0 commit comments

Comments
 (0)