package uk.ac.cam.echo.server.resources; import org.hibernate.criterion.Restrictions; import uk.ac.cam.echo.data.Conversation; import uk.ac.cam.echo.data.Tag; import uk.ac.cam.echo.data.resources.TagResource; import uk.ac.cam.echo.server.HibernateUtil; import uk.ac.cam.echo.server.models.TagModel; import javax.ws.rs.core.Response; import java.util.Collection; import java.util.List; public class TagResourceImpl implements TagResource { private Conversation conversation; public TagResourceImpl(Conversation conversation) { this.conversation = conversation; } public Collection<Tag> getAll() { return conversation.getTags(); } public Tag get(long id) { return (Tag) HibernateUtil.getTransaction().get(TagModel.class, id); } public Response update(Tag m) { HibernateUtil.getTransaction().update(m); return Response.ok().build(); } @Override public Tag create(Tag data) { List<TagModel> result = HibernateUtil.getTransaction().createCriteria(TagModel.class) .add(Restrictions.eq("name", data.getName())) .list(); TagModel tag; if (result.size() > 0) tag = result.get(0); else tag = (TagModel) data; HibernateUtil.getTransaction().save(tag); conversation.getTags().add(tag); HibernateUtil.getTransaction().save(conversation); return tag; } public Response delete(long id) { Tag u = get(id); conversation.getTags().remove(u); HibernateUtil.getTransaction().save(conversation); return Response.ok().build(); } }