X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDataManager.java;h=42952f9781bbecd65ffc341ab1eebccaa937fc1f;hb=3ab2c3dacb41a0ce60169a50c5791b25d179826d;hp=e6bc6da84a9d90e59d1356d7c5d7021dd5a77bac;hpb=2c555309311e6397c65f9e8b95fb4020e46dd181;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 e6bc6da..42952f9 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java @@ -24,6 +24,7 @@ import java.util.EnumMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.concurrent.Callable; import net.pterodactylus.demoscenemusic.data.Track.Relationship; @@ -149,6 +150,39 @@ public class DataManager { } /** + * Creates a new artist with the given name. + * + * @param name + * The name of the artist + * @return The created artist + * @throws DatabaseException + * if a database error occurs + */ + public Artist createArtist(String name) throws DatabaseException { + Query query = new Query(Type.INSERT, "ARTISTS"); + String id = UUID.randomUUID().toString(); + query.addValueField(new ValueField("ID", new StringParameter(id))); + query.addValueField(new ValueField("NAME", new StringParameter(name))); + database.insert(query); + return getArtistById(id); + } + + /** + * Saves the given artist. + * + * @param artist + * The artist to save + * @throws DatabaseException + * if a database error occurs + */ + public void saveArtist(Artist artist) throws DatabaseException { + Query query = new Query(Type.UPDATE, "ARTISTS"); + query.addValueField(new ValueField("NAME", new StringParameter(artist.getName()))); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("ID", new StringParameter(artist.getId())))); + database.update(query); + } + + /** * Returns all remix artists involved in the track with the given ID. * * @param trackId @@ -267,6 +301,22 @@ public class DataManager { } /** + * Returns the user with the given name. + * + * @param username + * The name of the user + * @return The user, or {@code null} if the user does not exist + * @throws DatabaseException + * if a database error occurs + */ + public User getUserByName(String username) throws DatabaseException { + Query query = new Query(Type.SELECT, "USERS"); + query.addField(new Field("USERS.*")); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("USERS.NAME", new StringParameter(username)))); + return database.getSingle(query, userCreator); + } + + /** * Returns the user connected with the given OpenID. * * @param openId @@ -654,7 +704,7 @@ public class DataManager { */ @Override public User createObject(ResultSet resultSet) throws SQLException { - return new LazyUser(resultSet.getString("USERS.ID")).setName(resultSet.getString("USERS.NAME")); + return new LazyUser(resultSet.getString("USERS.ID")).setName(resultSet.getString("USERS.NAME")).setPasswordHash(resultSet.getString("USERS.PASSWORD")).setLevel(resultSet.getInt("USERS.LEVEL")); } }