package com.mossle.party.rs;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.mossle.core.page.Page;
import com.mossle.party.domain.PartyEntity;
import com.mossle.party.manager.PartyEntityManager;
import org.springframework.stereotype.Component;
@Component
@Path("partyjsonp")
public class PartyJsonpResource {
public static final int DFAULT_PAGE_SIZE = 10;
private PartyEntityManager partyEntityManager;
/**
* TODO: replace JSONWithPadding to JSONPObject
*/
@GET
@Path("search")
@Produces(MediaType.APPLICATION_JSON)
public JSONPObject getPartyEntitiesByType(
@QueryParam("callback") String callback,
@QueryParam("typeId") long typeId, @QueryParam("q") String q) {
String hql = "from PartyEntity where partyType.id=? and name like ? order by name";
Page page = partyEntityManager.pagedQuery(hql, 1, DFAULT_PAGE_SIZE,
typeId, q.replace("_", "\\_") + "%");
List<PartyEntity> partyEntities = (List<PartyEntity>) page.getResult();
List<PartyEntityDTO> partyEntityDtos = new ArrayList<PartyEntityDTO>();
for (PartyEntity partyEntity : partyEntities) {
PartyEntityDTO partyEntityDto = new PartyEntityDTO();
partyEntityDto.setId(partyEntity.getId());
partyEntityDto.setName(partyEntity.getName());
partyEntityDtos.add(partyEntityDto);
}
return new JSONPObject(callback, partyEntityDtos);
}
@Resource
public void setPartyEntityManager(PartyEntityManager partyEntityManager) {
this.partyEntityManager = partyEntityManager;
}
public static class PartyTypeDTO {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static class PartyEntityDTO {
private long id;
private String name;
private String reference;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
}
}