From 2b0eca7a102f7eeb7b39e3d847019a5a9320dfdf Mon Sep 17 00:00:00 2001 From: Markil3 <75867393+Markil3@users.noreply.github.com> Date: Tue, 14 Sep 2021 13:58:24 -0600 Subject: [PATCH] Reduces the SQL errors of certain songs with apostrophes in their names. --- .../data/LocalSongProvider.java | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/interface/src/main/java/edu/regis/universeplayer/data/LocalSongProvider.java b/interface/src/main/java/edu/regis/universeplayer/data/LocalSongProvider.java index e29ff48..9ded4c9 100644 --- a/interface/src/main/java/edu/regis/universeplayer/data/LocalSongProvider.java +++ b/interface/src/main/java/edu/regis/universeplayer/data/LocalSongProvider.java @@ -404,7 +404,7 @@ public class LocalSongProvider implements SongProvider public void compute() { Process process; - String line; + String line, lineData; String[] streamData; String type; @@ -526,12 +526,13 @@ public class LocalSongProvider implements SongProvider } } case "track" -> { - line = line.substring(line + lineData = line.substring(line .indexOf(':') + 2); - if (line.indexOf('/') >= 0) + if (lineData.indexOf('/') >= 0) { track = Arrays - .stream(line.split("/")) + .stream(lineData + .split("/")) .map(Integer::parseInt) .toArray(Integer[]::new); } @@ -540,11 +541,11 @@ public class LocalSongProvider implements SongProvider if (track != null) { track[0] = Integer - .parseInt(line); + .parseInt(lineData); } else { - track = new Integer[]{Integer.parseInt(line), -1}; + track = new Integer[]{Integer.parseInt(lineData), -1}; } } } @@ -563,12 +564,13 @@ public class LocalSongProvider implements SongProvider } } case "disc" -> { - line = line.substring(line + lineData = line.substring(line .indexOf(':') + 2); - if (line.indexOf('/') >= 0) + if (lineData.indexOf('/') >= 0) { disc = Arrays - .stream(line.split("/")) + .stream(lineData + .split("/")) .map(Integer::parseInt) .toArray(Integer[]::new); } @@ -577,11 +579,11 @@ public class LocalSongProvider implements SongProvider if (disc != null) { disc[0] = Integer - .parseInt(line); + .parseInt(lineData); } else { - disc = new Integer[]{Integer.parseInt(line), -1}; + disc = new Integer[]{Integer.parseInt(lineData), -1}; } } } @@ -602,18 +604,23 @@ public class LocalSongProvider implements SongProvider case "duration:" -> { if (duration == 0) { - line = line.substring(line + lineData = line.substring(line .indexOf(':') + 2, line .indexOf(',')); - duration = Long.parseLong(line - .substring(0, 2)) * 3600 * 1000 + Long - .parseLong(line - .substring(3, 5)) * 60 * 1000 + Long - .parseLong(line - .substring(6, 8)) * 1000 + (long) (Float - .parseFloat(line - .substring(8, line - .length() - 1)) * 1000); + if (!lineData.equals( + "N/A")) + { + duration = Long + .parseLong(lineData + .substring(0, 2)) * 3600 * 1000 + Long + .parseLong(lineData + .substring(3, 5)) * 60 * 1000 + Long + .parseLong(lineData + .substring(6, 8)) * 1000 + (long) (Float + .parseFloat(lineData + .substring(8, lineData + .length() - 1)) * 1000); + } } } case "stream" -> { @@ -755,7 +762,7 @@ public class LocalSongProvider implements SongProvider .split(";")) .stream() .flatMap(Arrays::stream) - .map(String::trim) + .map(String::trim).map(s -> s.replaceAll("'", "''")) .collect(Collectors .joining(";"))) .append("', "); @@ -845,6 +852,8 @@ public class LocalSongProvider implements SongProvider .stream() .flatMap(Arrays::stream) .map(String::trim) + .map(s -> s + .replaceAll("'", "''")) .collect(Collectors .joining(";"))) .append("',");