* if a database error occurs
*/
public List<Artist> loadArtistProperties(List<Artist> artists) throws DatabaseException {
- for (Artist artist : artists) {
- loadArtistProperties(artist);
- }
- return artists;
+ return loadProperties(artists, "ARTIST_PROPERTIES", "ARTIST");
}
/**
* if a database error occurs
*/
public List<Track> loadTrackProperties(List<Track> tracks) throws DatabaseException {
- for (Track track : tracks) {
- loadTrackProperties(track);
- }
- return tracks;
+ return loadProperties(tracks, "TRACK_PROPERTIES", "TRACK");
}
/**
* if a database error occurs
*/
public List<TrackDerivative> loadTrackDerivativeProperties(List<TrackDerivative> trackDerivatives) throws DatabaseException {
- for (TrackDerivative trackDerivative : trackDerivatives) {
- loadTrackDerivativeProperties(trackDerivative);
- }
- return trackDerivatives;
+ return loadProperties(trackDerivatives, "TRACK_DERIVATIVE_PROPERTIES", "TRACK_DERIVATIVE");
}
/**
* @throws DatabaseException
* if a database error occurs
*/
- public Collection<Group> loadGroupProperties(Collection<Group> groups) throws DatabaseException {
- for (Group group : groups) {
- loadGroupProperties(group);
- }
- return groups;
+ public Collection<Group> loadGroupProperties(List<Group> groups) throws DatabaseException {
+ return loadProperties(groups, "GROUP_PROPERTIES", "GROUP_ID");
}
/**
*
* @param name
* The name of the new group
+ * @param shortName
+ * The short name of the new group, or {@code null} if the group
+ * does not have a short name
* @return The new group
* @throws DatabaseException
* if a database error occurs
*/
- public Group createGroup(String name) throws DatabaseException {
+ public Group createGroup(String name, String shortName) throws DatabaseException {
Query query = new Query(Type.INSERT, "GROUPS");
String id = UUID.randomUUID().toString();
query.addValueField(new ValueField("ID", new StringParameter(id)));
query.addValueField(new ValueField("NAME", new StringParameter(name)));
+ query.addValueField(new ValueField("SHORT_NAME", new StringParameter(shortName)));
database.insert(query);
return getGroupById(id);
}
public void saveGroup(Group group) throws DatabaseException {
Query query = new Query(Type.UPDATE, "GROUPS");
query.addValueField(new ValueField("NAME", new StringParameter(group.getName())));
+ query.addValueField(new ValueField("SHORT_NAME", new StringParameter(group.getShortName())));
query.addWhereClause(new ValueFieldWhereClause(new ValueField("ID", new StringParameter(group.getId()))));
database.update(query);
/* save properties. */
* if a database error occurs
*/
public List<Party> loadPartyProperties(List<Party> parties) throws DatabaseException {
- for (Party party : parties) {
- loadPartyProperties(party);
- }
- return parties;
+ return loadProperties(parties, "PARTY_PROPERTIES", "PARTY");
}
/**
* if a database error occurs
*/
private <T extends Base> List<T> loadProperties(List<T> objects, final String table, final String type) throws DatabaseException {
+ if (objects.isEmpty()) {
+ return objects;
+ }
final Map<String, T> objectMap = new HashMap<String, T>();
final Set<String> firstObjects = new HashSet<String>();
for (T object : objects) {
*/
@Override
public Group createObject(ResultSet resultSet) throws SQLException {
- return new LazyGroup(resultSet.getString("GROUPS.ID")).setName(resultSet.getString("GROUPS.NAME"));
+ return new LazyGroup(resultSet.getString("GROUPS.ID")).setName(resultSet.getString("GROUPS.NAME")).setShortName(resultSet.getString("GROUPS.SHORT_NAME"));
}
}