001package com.hfg.math.units; 002 003 004import com.hfg.util.StringUtil; 005 006import java.util.HashMap; 007import java.util.Map; 008 009//------------------------------------------------------------------------------ 010/** 011 * Enumeration of angle measurement units. 012 * 013 * @author J. Alex Taylor, hairyfatguy.com 014 */ 015//------------------------------------------------------------------------------ 016// com.hfg XML/HTML Coding Library 017// 018// This library is free software; you can redistribute it and/or 019// modify it under the terms of the GNU Lesser General Public 020// License as published by the Free Software Foundation; either 021// version 2.1 of the License, or (at your option) any later version. 022// 023// This library is distributed in the hope that it will be useful, 024// but WITHOUT ANY WARRANTY; without even the implied warranty of 025// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 026// Lesser General Public License for more details. 027// 028// You should have received a copy of the GNU Lesser General Public 029// License along with this library; if not, write to the Free Software 030// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 031// 032// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com 033// jataylor@hairyfatguy.com 034//------------------------------------------------------------------------------ 035 036public class AngleUnits 037{ 038 private static Map<String, AngleUnits> sInstanceMap = new HashMap<>(); 039 040 public static final AngleUnits degrees = new AngleUnits("degrees", "deg"); 041 public static final AngleUnits radians = new AngleUnits("radians", "rad"); 042 043 044 private String mName; 045 private String mAbbrev; 046 047 048 //--------------------------------------------------------------------------- 049 private AngleUnits(String inName, String inAbbrev) 050 { 051 mName = inName; 052 mAbbrev = inAbbrev; 053 054 sInstanceMap.put(mName.toLowerCase(), this); 055 sInstanceMap.put(mAbbrev.toLowerCase(), this); 056 } 057 058 //--------------------------------------------------------------------------- 059 public String name() 060 { 061 return mName; 062 } 063 064 //--------------------------------------------------------------------------- 065 public String abbrev() 066 { 067 return mAbbrev; 068 } 069 070 //--------------------------------------------------------------------------- 071 @Override 072 public String toString() 073 { 074 return name(); 075 } 076 077 078 //--------------------------------------------------------------------------- 079 public static AngleUnits valueOf(String inString) 080 { 081 return StringUtil.isSet(inString) ? sInstanceMap.get(inString.toLowerCase()) : null; 082 } 083 084}