package com.example.listmaker.server.dao; import com.example.listmaker.common.domain.ListWrapper; import com.example.listmaker.common.domain.NoteList; import com.example.listmaker.common.domain.User; import com.googlecode.objectify.Key; import com.googlecode.objectify.Ref; import com.turbomanage.gwt.server.servlet.AuthFilter; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import java.util.Date; import java.util.List; import java.util.logging.Logger; @Path("api/noteList") public class NoteListDao extends RestServiceDao<NoteList> { private static final Logger LOG = Logger.getLogger(NoteListDao.class.getName()); @Override @Path("all") @GET public ListWrapper<NoteList> findAll() { return super.findAll(); } @Override @Path("get") @GET public NoteList get(@QueryParam("id") Long id) { return super.get(id); } @Override @Path("save") @POST public NoteList save(NoteList list) { User loggedInUser = AuthFilter.getUser(); if (list.getId() == null) { // insert // Add new subscription to go with it list.setDateCreated(new Date()); list.setOwnerKey(Ref.create(loggedInUser)); Ref<NoteList> listKey = Ref.create(this.put(list)); LOG.info("Added list with id = " + list.getId()); return list; } else { // update return super.save(list); } } @Override @Path("deleteMany") @POST public int removeMany(List<Long> ids) { try { // could eliminate loop with IN query, but same effect for (long id : ids) { // TODO delete corresponding items also Ref<NoteList> listKey = Ref.create(Key.create(clazz, id)); // Delete list itself this.deleteKey(listKey.key()); } } catch (RuntimeException e) { LOG.throwing(this.getClass().getSimpleName(), "execute", e); throw e; } return super.removeMany(ids); } }