package net.java.sampo.usgov.fips;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class State implements Serializable, Comparable<State> {
private int seq;
private String fipsCode;
private String alphaCode;
private String name;
private State(int seq, String fipsCode, String alphaCode, String name) {
this.seq = seq;
this.fipsCode = fipsCode;
this.alphaCode = alphaCode;
this.name = name;
}
public int getSequenceNumber() {
return seq;
}
public String getFipsCode() {
return fipsCode;
}
public String getAlphaCode() {
return alphaCode;
}
public String getName() {
return name;
}
public int compareTo(State other) {
return seq - other.seq;
}
// http://www.itl.nist.gov/fipspubs/fip55-3.htm
public static final State AL = new State( 1, "01", "AL", "Alabama");
public static final State AK = new State( 2, "02", "AK", "Alaska");
public static final State AZ = new State( 3, "04", "AZ", "Arizona");
public static final State AR = new State( 4, "05", "AR", "Arkansas");
public static final State CA = new State( 5, "06", "CA", "California");
public static final State CO = new State( 6, "08", "CO", "Colorado");
public static final State CT = new State( 7, "09", "CT", "Connecticut"); // ?
public static final State DE = new State( 8, "10", "DE", "Delaware");
public static final State DC = new State( 9, "11", "DC", "District of Columbia");
public static final State FL = new State(10, "12", "FL", "Florida");
public static final State GA = new State(11, "13", "GA", "Georgia");
public static final State HI = new State(12, "15", "HI", "Hawaii");
public static final State ID = new State(13, "16", "ID", "Idaho");
public static final State IL = new State(14, "17", "IL", "Illinois");
public static final State IN = new State(15, "18", "IN", "Indiana");
public static final State IA = new State(16, "19", "IA", "Iowa");
public static final State KS = new State(17, "20", "KS", "Kansas");
public static final State KY = new State(18, "21", "KY", "Kentucky");
public static final State LA = new State(19, "22", "LA", "Louisiana");
public static final State ME = new State(20, "23", "ME", "Maine");
public static final State MD = new State(21, "24", "MD", "Maryland");
public static final State MA = new State(22, "25", "MA", "Massachusetts");
public static final State MI = new State(23, "26", "MI", "Michigan");
public static final State MN = new State(24, "27", "MN", "Minnesota");
public static final State MS = new State(25, "28", "MS", "Mississippi");
public static final State MO = new State(26, "29", "MO", "Missouri");
public static final State MT = new State(27, "30", "MT", "Montana");
public static final State NE = new State(28, "31", "NE", "Nebraska");
public static final State NV = new State(29, "32", "NV", "Nevada");
public static final State NH = new State(30, "33", "NH", "New Hampshire");
public static final State NJ = new State(31, "34", "NJ", "New Jersey");
public static final State NM = new State(32, "35", "NM", "New Mexico");
public static final State NY = new State(33, "36", "NY", "New York");
public static final State NC = new State(34, "37", "NC", "North Carolina");
public static final State ND = new State(35, "38", "ND", "North Dakota");
public static final State OH = new State(36, "39", "OH", "Ohio");
public static final State OK = new State(37, "40", "OK", "Oklahoma");
public static final State OR = new State(38, "41", "OR", "Oregon");
public static final State PA = new State(39, "42", "PA", "Pennsylvania");
public static final State RI = new State(40, "44", "RI", "Rhode Island");
public static final State SC = new State(41, "45", "SC", "South Carolina");
public static final State SD = new State(42, "46", "SD", "South Dakota");
public static final State TN = new State(43, "47", "TN", "Tennessee");
public static final State TX = new State(44, "48", "TX", "Texas");
public static final State UT = new State(45, "49", "UT", "Utah");
public static final State VT = new State(46, "50", "VT", "Vermont");
public static final State VA = new State(47, "51", "VA", "Virginia");
public static final State WA = new State(48, "53", "WA", "Washington");
public static final State WV = new State(49, "54", "WV", "West Virginia");
public static final State WI = new State(50, "55", "WI", "Wisconsin");
public static final State WY = new State(51, "56", "WY", "Wyoming");
//
public static final State AS = new State(52, "60", "AS", "American Samoa");
public static final State GU = new State(54, "66", "GU", "Guam");
public static final State MP = new State(56, "69", "MP", "Northern Mariana Islands");
public static final State PR = new State(58, "72", "PR", "Puerto Rico");
public static final State UM = new State(59, "74", "UM", "U.S. Minor Outlying Islands");
public static final State VI = new State(60, "78", "VI", "Virgin Islands of the U.S.");
//
public static final State FM = new State(53, "64", "FM", "Federated States of Micronesia");
public static final State MH = new State(55, "68", "MH", "Marshall Islands");
public static final State PW = new State(57, "70", "PW", "Palau");
private static final State[] allStates = new State[] {
AL, AK, AZ, AR, CA, CO, CT, DE, DC, FL,
GA, HI, ID, IL, IN, IA, KS, KY, LA, ME,
MD, MA, MI, MN, MS, MO, MT, NE, NV, NH,
NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI,
SC, SD, TN, TX, UT, VT, VA, WA, WV, WI,
WY, AS, FM, GU, MH, MP, PW, PR, UM, VI
};
public static State[] getAllStates() {
return allStates;
}
private static State[] fipsStates = new State[79];
private static Map<String,State> alphaMap = new HashMap<String,State>();
static {
for (State state : allStates) {
fipsStates[getIntFipsCode(state.getFipsCode())] = state;
alphaMap.put(state.getAlphaCode(), state);
}
}
private static int getIntFipsCode(String fipsCode) {
if (fipsCode == null || fipsCode.length() != 2) {
return -1;
}
int m = fipsCode.charAt(0) - '0';
if (m < 0 || m > 9) {
return -1;
}
int n = fipsCode.charAt(1) - '0';
if (n < 0 || n > 9) {
return -1;
}
return m * 10 + n;
}
public static State getStateByFipsCode(String fipsCode) {
int n = getIntFipsCode(fipsCode);
if (n < 1 || n >= fipsStates.length) {
return null;
}
return fipsStates[n];
}
public static State getStateByAlphaCode(String alphaCode) {
return alphaMap.get(alphaCode);
}
} |