package qa.qcri.aidr.trainer.api.controller;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import qa.qcri.aidr.dbmanager.dto.CollectionDTO;
import qa.qcri.aidr.dbmanager.dto.NominalLabelDTO;
import qa.qcri.aidr.trainer.api.service.CrisisService;
import qa.qcri.aidr.trainer.api.template.CrisisJsonModel;
import qa.qcri.aidr.trainer.api.template.CrisisNominalAttributeModel;
/**
* Created with IntelliJ IDEA.
* User: jilucas
* Date: 9/11/13
* Time: 2:49 PM
* To change this template use File | Settings | File Templates.
*/
@RequestMapping("/crisis")
@RestController
public class CrisisController {
protected static Logger logger = Logger.getLogger(CrisisController.class);
@Autowired
private CrisisService crisisService;
@RequestMapping("/id/{crisisid}")
public CrisisJsonModel getCrisisByID(@PathVariable("crisisid") Long crisisid){
logger.info("received request for crisisId = " + crisisid);
try {
return crisisService.findByOptimizedCrisisID(crisisid);
} catch (Exception e) {
logger.error("Error in getting crisisID for crisis ID = " + crisisid,e);
}
return null;
}
@RequestMapping("/getallactive")
public List getAllActiveCrisis(){
return crisisService.findAllActiveCrisis();
}
@RequestMapping("/get/active")
public List<CollectionDTO> getActiveCrisis(){
return crisisService.findActiveCrisisInfo();
}
@RequestMapping("/getnominalAttribute")
public List<CrisisNominalAttributeModel> getAllActiveCrisisNominalAttribute(){
return crisisService.getAllActiveCrisisNominalAttribute();
}
@RequestMapping("/getnominalLabels/{crisisid}/{nominalAttributeID}")
public String getAllActiveCrisisNominalAttribute(@PathVariable("crisisid") Long crisisID, @PathVariable("nominalAttributeID") Long nominalAttributeID){
JSONArray labelJsonArrary = new JSONArray();
Set<NominalLabelDTO> nominalLabels = crisisService.getNominalLabelByCrisisID(crisisID, nominalAttributeID) ;
if(nominalLabels != null){
for (NominalLabelDTO o : nominalLabels) {
JSONObject qa = new JSONObject();
qa.put("qa", o.getNominalLabelCode());
labelJsonArrary.add(qa);
}
}
return labelJsonArrary.toJSONString();
}
}