X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDataManager.java;h=8d331cb725bf160d0a45899bdb6081c3ac63caf5;hb=6bdfd09158a7d212e47ee96ed89dc91a91dad668;hp=ea040bd6e2611d792f83bf47d25a0503ade7dfc2;hpb=1e2c5a3d82db1f6c93adddd79b77278222979eca;p=demoscenemusic.git diff --git a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java index ea040bd..8d331cb 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java @@ -190,6 +190,20 @@ public class DataManager { query.addValueField(new ValueField("NAME", new StringParameter(artist.getName()))); query.addWhereClause(new ValueFieldWhereClause(new ValueField("ID", new StringParameter(artist.getId())))); database.update(query); + + /* save groups. */ + Collection groups = artist.getGroups(); + query = new Query(Type.DELETE, "GROUP_ARTISTS"); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("GROUP_ARTISTS.ARTIST", new StringParameter(artist.getId())))); + database.update(query); + for (Group group : groups) { + query = new Query(Type.INSERT, "GROUP_ARTISTS"); + query.addValueField(new ValueField("GROUP_", new StringParameter(group.getId()))); + query.addValueField(new ValueField("ARTIST", new StringParameter(artist.getId()))); + database.insert(query); + } + + /* save properties. */ saveArtistProperties(artist); } @@ -457,6 +471,19 @@ public class DataManager { query.addValueField(new ValueField("TRACK_ARTISTS.DISPLAY_ORDER", new IntegerParameter(index + 1))); database.insert(query); } + + /* store party links. */ + Collection parties = track.getParties(); /* prefetch parties. */ + query = new Query(Type.DELETE, "PARTY_TRACKS"); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("PARTY_TRACKS.TRACK", new StringParameter(track.getId())))); + database.update(query); + for (Party party : parties) { + query = new Query(Type.INSERT, "PARTY_TRACKS"); + query.addValueField(new ValueField("PARTY_TRACKS.TRACK", new StringParameter(track.getId()))); + query.addValueField(new ValueField("PARTY_TRACKS.PARTY", new StringParameter(party.getId()))); + database.insert(query); + } + /* store properties. */ saveProperties(track.getProperties(), "TRACK_PROPERTIES", "TRACK", track.getId()); } @@ -795,6 +822,9 @@ public class DataManager { * if a database error occurs */ private T loadProperties(final T object, final String table, String type) throws DatabaseException { + if (object == null) { + return null; + } Query query = new Query(Type.SELECT, table); query.addField(new Field(table + ".PROPERTY")); query.addField(new Field(table + ".VALUE"));