/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) ITECH, University of Washington, Seattle WA. All Rights Reserved.
*/
package us.mn.state.health.lims.common.provider.query;
import org.apache.commons.validator.GenericValidator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import us.mn.state.health.lims.common.services.LocalizationService;
import us.mn.state.health.lims.common.services.TestService;
import us.mn.state.health.lims.common.services.TypeOfSampleService;
import us.mn.state.health.lims.common.servlet.validation.AjaxServlet;
import us.mn.state.health.lims.localization.valueholder.Localization;
import us.mn.state.health.lims.test.valueholder.Test;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
public class AllTestsForSampleTypeProvider extends BaseQueryProvider {
protected AjaxServlet ajaxServlet = null;
@Override
public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sampleTypeId = request.getParameter("sampleTypeId");
String jResult;
JSONObject jsonResult = new JSONObject();
String jString;
if (GenericValidator.isBlankOrNull(sampleTypeId) ){
jResult = INVALID;
jString = "Internal error, please contact Admin and file bug report";
} else {
jResult = createJsonGroupedTestNames(sampleTypeId, jsonResult);
StringWriter out = new StringWriter();
try{
jsonResult.writeJSONString( out );
jString = out.toString();
}catch( IOException e ){
e.printStackTrace();
jResult = INVALID;
jString = "Internal error, please contact Admin and file bug report";
}catch( IllegalStateException e ){
e.printStackTrace();
jResult = INVALID;
jString = "Internal error, please contact Admin and file bug report";
}
}
ajaxServlet.sendData(jString, jResult, request, response);
}
@SuppressWarnings("unchecked")
private String createJsonGroupedTestNames(String sampleTypeId, JSONObject jsonResult)throws IllegalStateException{
List<Test> tests = TypeOfSampleService.getAllTestsBySampleTypeId(sampleTypeId);
JSONArray testArray = new JSONArray();
for(Test test:tests){
JSONObject testObject = new JSONObject();
testObject.put("name" , LocalizationService.getLocalizedValue(test.getLocalizedTestName()));
testObject.put("id", test.getId());
testObject.put("isActive", test.getIsActive());
testArray.add(testObject);
}
jsonResult.put("tests", testArray);
return VALID;
}
@Override
public void setServlet(AjaxServlet as) {
this.ajaxServlet = as;
}
@Override
public AjaxServlet getServlet() {
return this.ajaxServlet;
}
}