/*
* 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.services;
import us.mn.state.health.lims.common.util.ConfigurationProperties;
import us.mn.state.health.lims.common.util.LocaleChangeListener;
import us.mn.state.health.lims.common.util.SystemConfiguration;
import us.mn.state.health.lims.localization.valueholder.Localization;
import us.mn.state.health.lims.unitofmeasure.daoimpl.UnitOfMeasureDAOImpl;
import us.mn.state.health.lims.test.valueholder.Test;
import us.mn.state.health.lims.test.valueholder.TestSection;
import us.mn.state.health.lims.unitofmeasure.valueholder.UnitOfMeasure;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*/
public class UnitOfMeasureService implements LocaleChangeListener{
private static final UnitOfMeasureService INSTANCE = new UnitOfMeasureService( new UnitOfMeasure() );
private static String LANGUAGE_LOCALE = ConfigurationProperties.getInstance().getPropertyValue( ConfigurationProperties.Property.DEFAULT_LANG_LOCALE);
private UnitOfMeasure unitOfMeasure;
private static Map<String, String> unitOfMeasureIdToNameMap = new HashMap<String, String>();
static{
createTestIdToNameMap();
SystemConfiguration.getInstance().addLocalChangeListener( INSTANCE );
}
public UnitOfMeasureService(UnitOfMeasure unitOfMeasure){
this.unitOfMeasure = unitOfMeasure;
}
public UnitOfMeasureService(String unitOfMeasureId){
this.unitOfMeasure = new UnitOfMeasureDAOImpl().getUnitOfMeasureById(unitOfMeasureId);
}
public UnitOfMeasure getUnitOfMeasure(){
return unitOfMeasure;
}
@Override
public void localeChanged( String locale ){
LANGUAGE_LOCALE = locale;
testNamesChanged();
}
public static void refreshNames(){
testNamesChanged();
}
public static void testNamesChanged( ){
createTestIdToNameMap();
}
public String getSortOrder(){
return unitOfMeasure == null ? "0" :unitOfMeasure.getSortOrder();
}
public static String getUserLocalizedUnitOfMeasureName(UnitOfMeasure unitOfMeasure){
if( unitOfMeasure == null){
return "";
}
return getUserLocalizedUnitOfMeasureName(unitOfMeasure.getId());
}
public static String getUserLocalizedUnitOfMeasureName( String unitOfMeasureId ){
String name = unitOfMeasureIdToNameMap.get(unitOfMeasureId);
return name == null ? "" : name;
}
private static void createTestIdToNameMap() {
unitOfMeasureIdToNameMap = new HashMap<String, String>();
List<UnitOfMeasure> UnitOfMeasures = new UnitOfMeasureDAOImpl().getAllUnitOfMeasures();
for (UnitOfMeasure unitOfMeasure : UnitOfMeasures) {
unitOfMeasureIdToNameMap.put(unitOfMeasure.getId(), buildUnitOfMeasureName( unitOfMeasure ).replace("\n", " "));
}
}
private static String buildUnitOfMeasureName( UnitOfMeasure unitOfMeasure ){
// Localization localization = unitOfMeasure.getLocalization();
//
// if( LANGUAGE_LOCALE.equals( ConfigurationProperties.LOCALE.FRENCH.getRepresentation() )){
// return localization.getFrench();
// }else{
// return localization.getEnglish();
// }
// }
// public static List<Test> getTestsInSection(String id) {
// return TestService.getTestsInTestSectionById(id);
return ""; // just for compile
}
public static List<UnitOfMeasure> getAllUnitOfMeasures() {
return new UnitOfMeasureDAOImpl().getAllUnitOfMeasures();
}
}