package edu.cmu.geolocator.resource.Map; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import edu.cmu.geolocator.GlobalParam; import edu.cmu.geolocator.io.GetReader; import edu.cmu.geolocator.resource.ResourceFactory; public class FeatureCode2Map { HashMap<String,Integer> codemap; public FeatureCode2Map() { // TODO Auto-generated constructor stub codemap = new HashMap<String,Integer>(); } public static void main(String args[]) { FeatureCode2Map fm = ResourceFactory.getFeatureCode2Map().getInstance(); int i = fm.getIndex("ppla"); int size = fm.size(); System.out.println(i); } public int size() { // TODO Auto-generated method stub return codemap.size(); } /** * The string passed into this function should be the feature name, without the single char class. * indexed ppl instead of P.PPL. * * @param string * @return */ public int getIndex(String string) { // TODO Auto-generated method stub string = string.toLowerCase(); return codemap.get(string); } private FeatureCode2Map load(String filename) { BufferedReader br = null; try { br = GetReader.getUTF8FileReader(filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String line = null; try { int count = 0; while ((line = br.readLine()) != null) { //System.out.println(line.split("\t")[0]); String code = line.split("\t")[0].split("\\.")[1].toLowerCase(); codemap.put(code,count++); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return this; } private FeatureCode2Map loadSet(String filename) { BufferedReader br = null; try { br = GetReader.getUTF8FileReader(filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String line = null; try { int count = 0; while ((line = br.readLine()) != null) { String code = line.trim().toLowerCase(); codemap.put(code,count++); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return this; } static FeatureCode2Map featurecode2map; public static FeatureCode2Map getInstance() { // TODO Auto-generated method stub if (featurecode2map == null) // featurecode2map = new FeatureCode2Map().load("GeoNames/featureCodes_en.txt"); featurecode2map = new FeatureCode2Map().load("res/geonames/featureCodes_en.txt"); return featurecode2map; } }