package open.dolphin.rest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import open.dolphin.converter.LetterModuleConverter;
import open.dolphin.converter.LetterModuleListConverter;
import open.dolphin.infomodel.LetterModule;
import open.dolphin.infomodel.LetterModuleList;
import open.dolphin.session.LetterServiceBean;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
/**
* REST Web Service
*
* @author Kazushi Minagawa, Digital Globe, Inc.
*/
@Path("/odletter")
public class LetterResource extends AbstractResource {
@Inject
private LetterServiceBean letterServiceBean;
/** Creates a new instance of KarteResource */
public LetterResource() {
}
@PUT
@Path("/letter")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String putLetter(String json) throws IOException {
ObjectMapper mapper = new ObjectMapper();
// 2013/06/24
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
LetterModule model = mapper.readValue(json, LetterModule.class);
Logger.getLogger("open.dolphin").log(Level.INFO, "LinkID : {0}, PatID : {1}", new Object[]{String.valueOf(model.getLinkId()), model.getPatientId()});
Long pk = letterServiceBean.saveOrUpdateLetter(model);
String pkStr = String.valueOf(pk);
debug(pkStr);
return pkStr;
}
@GET
@Path("/list/{param}")
@Produces(MediaType.APPLICATION_JSON)
public LetterModuleListConverter getLetterList(@PathParam("param") String param) {
debug(param);
String[] params = param.split(CAMMA);
long karteId = Long.parseLong(params[0]);
List<LetterModule> result = letterServiceBean.getLetterList(karteId);
LetterModuleList list = new LetterModuleList();
if (result!=null && result.size()>0) {
list.setList(result);
} else {
list.setList(new ArrayList<LetterModule>());
}
LetterModuleListConverter conv = new LetterModuleListConverter();
conv.setModel(list);
return conv;
}
@GET
@Path("/letter/{param}")
@Produces(MediaType.APPLICATION_JSON)
public LetterModuleConverter getLetter(@PathParam("param") String param) {
long pk = Long.parseLong(param);
LetterModule result = (LetterModule)letterServiceBean.getLetter(pk);
LetterModuleConverter conv = new LetterModuleConverter();
conv.setModel(result);
return conv;
}
@DELETE
@Path("/letter/{param}")
public void delete(@PathParam("param") String param) {
long pk = Long.parseLong(param);
letterServiceBean.delete(pk);
}
}