/*
* 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.JSONObject;
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.panel.daoimpl.PanelDAOImpl;
import us.mn.state.health.lims.panel.valueholder.Panel;
import us.mn.state.health.lims.typeofsample.daoimpl.TypeOfSampleDAOImpl;
import us.mn.state.health.lims.typeofsample.valueholder.TypeOfSample;
import us.mn.state.health.lims.renametestsection.daoimpl.RenameTestSectionDAOImpl;
import us.mn.state.health.lims.renametestsection.valueholder.RenameTestSection;
import us.mn.state.health.lims.unitofmeasure.daoimpl.UnitOfMeasureDAOImpl;
import us.mn.state.health.lims.unitofmeasure.valueholder.UnitOfMeasure;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.StringWriter;
public class EntityNamesProvider extends BaseQueryProvider {
public static final String PANEL = "panel";
public static final String SAMPLE_TYPE = "sampleType";
public static final String TEST_SECTION = "testSection";
public static final String UNIT_OF_MEASURE = "unitOfMeasure";
protected AjaxServlet ajaxServlet = null;
@Override
public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("entityId");
String entityName = request.getParameter("entityName");
String jResult;
JSONObject jsonResult = new JSONObject();
String jString;
if (GenericValidator.isBlankOrNull(id) || GenericValidator.isBlankOrNull(entityName)){
jResult = INVALID;
jString = "Internal error, please contact Admin and file bug report";
} else {
jResult = createJsonTestNames( id, entityName, 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 createJsonTestNames(String id, String entityName, JSONObject jsonResult)throws IllegalStateException{
Localization localization = null;
if( PANEL.equals(entityName)){
localization = getLocalizationForPanel(id);
}else if(SAMPLE_TYPE.equals(entityName)){
localization = getLocalizationForSampleType(id);
}else if(TEST_SECTION.equals(entityName)){
localization = getLocalizationForRenameTestSection(id);
}else if(UNIT_OF_MEASURE.equals(entityName)){
localization = getLocalizationForUnitOfMeasure(id);
}//add entity types as needed
if( localization != null){
JSONObject nameObject = new JSONObject();
nameObject.put("english", localization.getEnglish());
nameObject.put("french", localization.getFrench());
jsonResult.put("name", nameObject);
return VALID;
}
return INVALID;
}
private Localization getLocalizationForPanel(String id) {
Panel panel = new PanelDAOImpl().getPanelById( id );
return panel != null ? panel.getLocalization() : null;
}
private Localization getLocalizationForSampleType(String id) {
TypeOfSample typeOfSample = new TypeOfSampleDAOImpl().getTypeOfSampleById(id);
return typeOfSample != null ? typeOfSample.getLocalization() : null;
}
private Localization getLocalizationForRenameTestSection(String id) {
RenameTestSection testSection = new RenameTestSectionDAOImpl().getTestSectionById(id);
return testSection != null ? testSection.getLocalization() : null;
}
private Localization getLocalizationForUnitOfMeasure(String id) {
UnitOfMeasure unitOfMeasure = new UnitOfMeasureDAOImpl().getUnitOfMeasureById(id);
return unitOfMeasure != null ? unitOfMeasure.getLocalization() : null;
}
@Override
public void setServlet(AjaxServlet as) {
this.ajaxServlet = as;
}
@Override
public AjaxServlet getServlet() {
return this.ajaxServlet;
}
}