001/******************************************************************************* 002 * Crown Copyright (c) 2006 - 2014, Copyright (c) 2006 - 2014 Kestral Computing P/L. 003 * All rights reserved. This program and the accompanying materials 004 * are made available under the terms of the Eclipse Public License v1.0 005 * which accompanies this distribution, and is available at 006 * http://www.eclipse.org/legal/epl-v10.html 007 * 008 * Contributors: 009 * Kestral Computing P/L - initial implementation 010 *******************************************************************************/ 011 012package org.fhir.ucum.special; 013 014import java.util.HashMap; 015import java.util.Map; 016 017import org.fhir.ucum.Decimal; 018 019public class Registry { 020 021 Map<String, SpecialUnitHandler> handlers = new HashMap<String, SpecialUnitHandler>(); 022 023 public Registry() { 024 super(); 025 init(); 026 } 027 028 private void register(SpecialUnitHandler handler) { 029 handlers.put(handler.getCode(), handler); 030 } 031 032 private void init() { 033 register(new CelsiusHandler()); 034 register(new FahrenheitHandler()); 035 register(new HoldingHandler("[p'diop]", "deg")); 036 register(new HoldingHandler("%[slope]", "deg")); 037 register(new HoldingHandler("[hp_X]", "1")); 038 register(new HoldingHandler("[hp_C]", "1")); 039 register(new HoldingHandler("[pH]", "mol/l")); 040 register(new HoldingHandler("Np", "1")); 041 register(new HoldingHandler("B", "1")); 042 register(new HoldingHandler("B[SPL]", "10*-5.Pa", new Decimal(2))); 043 register(new HoldingHandler("B[V]", "V")); 044 register(new HoldingHandler("B[mV]", "mV")); 045 register(new HoldingHandler("B[uV]", "uV")); 046 register(new HoldingHandler("B[W]", "W")); 047 register(new HoldingHandler("B[kW]", "kW")); 048 register(new HoldingHandler("bit_s", "1")); 049 } 050 051 public boolean exists(String code) { 052 return handlers.containsKey(code); 053 } 054 055 public SpecialUnitHandler get(String code) { 056 return handlers.get(code); 057 } 058 059 060 061 062}