Catch all exceptions in OsuDB. (fixes #41)
Also added checks for missing audioFilename fields. Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
parent
400f9395e7
commit
40476d4f31
|
@ -575,6 +575,10 @@ public class OsuParser {
|
|||
ErrorHandler.error(String.format("Failed to read file '%s'.", file.getAbsolutePath()), e, false);
|
||||
}
|
||||
|
||||
// no associated audio file?
|
||||
if (osu.audioFilename == null)
|
||||
return null;
|
||||
|
||||
// if no custom colors, use the default color scheme
|
||||
if (osu.combo == null)
|
||||
osu.combo = Utils.DEFAULT_COMBO;
|
||||
|
|
|
@ -33,6 +33,8 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.newdawn.slick.util.Log;
|
||||
|
||||
/**
|
||||
* Handles connections and queries with the cached beatmap database.
|
||||
*/
|
||||
|
@ -247,7 +249,11 @@ public class OsuDB {
|
|||
|
||||
// batch insert
|
||||
for (OsuFile osu : batch) {
|
||||
try {
|
||||
setStatementFields(insertStmt, osu);
|
||||
} catch (SQLException e) {
|
||||
Log.error(String.format("Failed to insert map '%s' into database.", osu.getFile().getPath()), e);
|
||||
}
|
||||
insertStmt.addBatch();
|
||||
}
|
||||
int[] results = insertStmt.executeBatch();
|
||||
|
@ -281,6 +287,7 @@ public class OsuDB {
|
|||
*/
|
||||
private static void setStatementFields(PreparedStatement stmt, OsuFile osu)
|
||||
throws SQLException {
|
||||
try {
|
||||
stmt.setString(1, osu.getFile().getParentFile().getName());
|
||||
stmt.setString(2, osu.getFile().getName());
|
||||
stmt.setLong(3, osu.getFile().lastModified());
|
||||
|
@ -320,6 +327,11 @@ public class OsuDB {
|
|||
stmt.setString(37, osu.timingPointsToString());
|
||||
stmt.setString(38, osu.breaksToString());
|
||||
stmt.setString(39, osu.comboToString());
|
||||
} catch (SQLException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
throw new SQLException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -392,10 +404,14 @@ public class OsuDB {
|
|||
String name = rs.getString(2);
|
||||
OsuFile osu = m.get(name);
|
||||
if (osu != null) {
|
||||
try {
|
||||
if ((flag & LOAD_NONARRAY) > 0)
|
||||
setOsuFileFields(rs, osu);
|
||||
if ((flag & LOAD_ARRAY) > 0)
|
||||
setOsuFileArrayFields(rs, osu);
|
||||
} catch (SQLException e) {
|
||||
Log.error(String.format("Failed to load map '%s/%s' from database.", parent, name), e);
|
||||
}
|
||||
if (++count >= size)
|
||||
break;
|
||||
}
|
||||
|
@ -414,6 +430,7 @@ public class OsuDB {
|
|||
* @throws SQLException
|
||||
*/
|
||||
private static void setOsuFileFields(ResultSet rs, OsuFile osu) throws SQLException {
|
||||
try {
|
||||
osu.beatmapID = rs.getInt(4);
|
||||
osu.beatmapSetID = rs.getInt(5);
|
||||
osu.title = OsuParser.getDBString(rs.getString(6));
|
||||
|
@ -447,6 +464,11 @@ public class OsuDB {
|
|||
osu.widescreenStoryboard = rs.getBoolean(34);
|
||||
osu.epilepsyWarning = rs.getBoolean(35);
|
||||
osu.bg = OsuParser.getDBString(rs.getString(36));
|
||||
} catch (SQLException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
throw new SQLException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -456,9 +478,15 @@ public class OsuDB {
|
|||
* @throws SQLException
|
||||
*/
|
||||
private static void setOsuFileArrayFields(ResultSet rs, OsuFile osu) throws SQLException {
|
||||
try {
|
||||
osu.timingPointsFromString(rs.getString(37));
|
||||
osu.breaksFromString(rs.getString(38));
|
||||
osu.comboFromString(rs.getString(39));
|
||||
} catch (SQLException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
throw new SQLException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user