package tv.dyndns.kishibe.qmaclone.server.service; import static tv.dyndns.kishibe.qmaclone.server.service.DatabaseUtil.wrap; import java.util.List; import tv.dyndns.kishibe.qmaclone.client.packet.PacketLinkData; import tv.dyndns.kishibe.qmaclone.client.service.LinkService; import tv.dyndns.kishibe.qmaclone.client.service.ServiceException; import tv.dyndns.kishibe.qmaclone.server.database.Database; import tv.dyndns.kishibe.qmaclone.server.database.DatabaseException; import com.google.common.base.Preconditions; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.google.inject.Inject; @SuppressWarnings("serial") public class LinkServletStub extends RemoteServiceServlet implements LinkService { private final Database database; @Inject public LinkServletStub(Database database) { this.database = Preconditions.checkNotNull(database); } @Override public List<PacketLinkData> get(final int start, final int count) throws ServiceException { return wrap("リンクデータの取得に失敗しました", new DatabaseAccessible<List<PacketLinkData>>() { @Override public List<PacketLinkData> access() throws DatabaseException { return database.getLinkDatas(start, count); } }); } @Override public int getNumberOfLinkData() throws ServiceException { return wrap("リンクデータ数の取得に失敗しました", new DatabaseAccessible<Integer>() { @Override public Integer access() throws DatabaseException { return database.getNumberOfLinkDatas(); } }); } @Override public void add(final PacketLinkData linkData) throws ServiceException { wrap("リンクデータの取得に失敗しました", new DatabaseAccessible<Void>() { @Override public Void access() throws DatabaseException { database.addLinkData(linkData); return null; } }); } @Override public void update(final PacketLinkData linkData) throws ServiceException { wrap("リンクデータの更新に失敗しました", new DatabaseAccessible<Void>() { @Override public Void access() throws DatabaseException { database.updateLinkData(linkData); return null; } }); } @Override public void remove(final int id) throws ServiceException { wrap("リンクデータの削除に失敗しました", new DatabaseAccessible<Void>() { @Override public Void access() throws DatabaseException { database.removeLinkData(id); return null; } }); } }