package doc.walkthru;

import java.util.List;

import org.benow.java.resource.Publish;
import org.benow.repository.NoSuchObjectException;
import org.benow.repository.mapping.JSQLQuery;

@Publish
public class AlbumServiceImpl implements AlbumService {

  @Override
  public AlbumTrack addTrack(Album album, Track track) {
    AlbumImpl a = (AlbumImpl) album;
    AlbumTrack at = a.addTrack(track);
    a.update();
    return at;
  }

  @Override
  public Album createAlbum(String title, Performer performer) {
    AlbumImpl a = new AlbumImpl(title, performer);
    a.update();
    return a;
  }

  @Override
  public boolean deleteAlbum(Album album) {
    return ((AlbumImpl) album).remove();
  }

  @Override
  public List<Album> getAlbums() {
    return JSQLQuery.getAllObjectsQuery(AlbumImpl.class).getObjects();
  }

  @Override
  public AlbumTrack insertTrack(Object key, Track track, int pos) {
    //    
    // AlbumTrack at = a.addTrack(track, pos);
    // a.update();
    // return at;
    return null;
  }


  public Album getAlbumByKey(Object key) throws NoSuchObjectException {
    AlbumImpl album = (AlbumImpl) JSQLQuery.getObjectByKeyQuery(AlbumImpl.class, key).getObject();
    album.getTracks();
    album.getArtist();
    return album;
  } 
          

  @Override
  public Album createAlbum(Album album) {
    // ensure to check for security concerns in complex object submission
    // there are none here
    ((AlbumImpl) album).update();
    return album;
  }
}


