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.hl7.fhir.utilities.ucum.special;
013
014import java.util.HashMap;
015import java.util.Map;
016
017import org.hl7.fhir.utilities.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}