package org.skyscreamer.yoga.demo.dto;
import java.util.Arrays;
import java.util.Collection;
import org.skyscreamer.yoga.configuration.YogaEntityConfiguration;
import org.skyscreamer.yoga.demo.model.Album;
import org.skyscreamer.yoga.demo.model.Artist;
import org.skyscreamer.yoga.demo.model.Song;
import org.skyscreamer.yoga.selector.NamedProperty;
import org.skyscreamer.yoga.selector.Property;
public class SongConfiguration extends YogaEntityConfiguration<Song>
{
@SuppressWarnings("unchecked")
@Override
public Collection<Property<Song>> getProperties()
{
return Arrays.asList(createIdProperty(), createTitleProperty(), createArtistProperty(), createAlbumProperty());
}
private Property<Song> createArtistProperty()
{
return new NamedProperty<Song>("artist", false)
{
@Override
public Artist getValue(Song Song)
{
return Song.getArtist();
}
};
}
private Property<Song> createTitleProperty()
{
return new NamedProperty<Song>("title", true)
{
@Override
public String getValue(Song Song)
{
return Song.getTitle();
}
};
}
private Property<Song> createIdProperty()
{
return new NamedProperty<Song>("id", true)
{
@Override
public Long getValue(Song Song)
{
return Song.getId();
}
};
}
private Property<Song> createAlbumProperty()
{
return new NamedProperty<Song>("album", false)
{
@Override
public Album getValue(Song Song)
{
return Song.getAlbum();
}
};
}
}