package com.cheng.mvvmstudy.albumrobobinding.api.impl; import com.cheng.mvvmstudy.albumrobobinding.api.i.IAlbumStore; import com.cheng.mvvmstudy.albumrobobinding.model.bean.Album; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Cheng Wei * @version $Revision: 1.0 $ * @since 1.0 */ public class MemoryAlbumStore implements IAlbumStore { private List<Album> albums; public MemoryAlbumStore() { albums = new ArrayList<Album>(); } @Override public Album get(long albumId) { for (Album album : albums) { if (album.getId() == albumId) return album; } throw new IllegalArgumentException("No such album for id: " + albumId); } @Override public Album getByIndex(int position) { return albums.get(position); } @Override public List<Album> getAll() { return Collections.unmodifiableList(albums); } @Override public void save(Album album) { if (album.isNew()) { album.setId(nextId()); albums.add(album); } int index = albums.indexOf(album); albums.remove(index); albums.add(index, album); } private long nextId() { return albums.size() + 1; } @Override public void delete(Album album) { albums.remove(album); } @Override public void clear() { albums.clear(); } }