// Path: openbahn-api/src/de/marcusschiesser/dbpendler/common/vo/StationVO.java
// @JsonIgnoreProperties(ignoreUnknown=true)
// public class StationVO implements Serializable {
// 
// 	/**
// 	 * 
// 	 */
// 	private static final long serialVersionUID = -4162834891520852561L;
// 
// 	private String value;
// 	private String typeStr;
// 	private String type;
// 	private String weight;
// 	
// 	public StationVO() {}
// 	
// 	public StationVO(String value) {
// 		super();
// 		this.value = value;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((value == null) ? 0 : value.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		StationVO other = (StationVO) obj;
// 		if (value == null) {
// 			if (other.value != null)
// 				return false;
// 		} else if (!value.equals(other.value))
// 			return false;
// 		return true;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public String getTypeStr() {
// 		return typeStr;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public void setTypeStr(String typeStr) {
// 		this.typeStr = typeStr;
// 	}
// 
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 
// 	public String getType() {
// 		return type;
// 	}
// 
// 	public void setWeight(String weight) {
// 		this.weight = weight;
// 	}
// 
// 	public String getWeight() {
// 		return weight;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "StationVO [value=" + value + "]";
// 	}
// 	
// 	
// }
// 
// Path: openbahn-api/src/de/marcusschiesser/dbpendler/server/bahnwrapper/StationParser.java
// public class StationParser {
// 
// 	public static final Logger log = Logger.getLogger(StationParser.class.getName());
// 	private static StationParser instance = new StationParser();
// 	private Pattern pattern;
// 
// 	public StationParser() {
// 		pattern = Pattern.compile("\\[.*\\]");
// 	}
// 
// 	public static StationParser getInstance() {
// 		return instance;
// 	}
// 	
// 	public List<StationVO> getStations(String contains)  {
// 		try {
// 			contains = URLEncoder.encode(contains, "utf-8");
// 			String response = HTTPUtils.getMethod(new URL("http://reiseauskunft.bahn.de/bin/ajax-getstop.exe/dn?start=1&tpl=sls&REQ0JourneyStopsB=12&REQ0JourneyStopsS0A=1&getstop=1&noSession=yes&iER=yes&S=" + contains + "?&js=true"));
// 	
// 			Matcher matcher = pattern.matcher(response);
// 			if(matcher.find()) {
// 				String filter = matcher.group();
// 				ObjectMapper m = new ObjectMapper();
// 				try {
// 					StationVO stations[] = m.readValue(filter, StationVO[].class);
// 					return Arrays.asList(stations);
// 				} catch (Exception e) {
// 					StationServerResource.log.severe("could not parse object to stationvo: " + e.toString());
// 				}
// 			} else {
// 				StationServerResource.log.severe("bahn.de changed the format. can not match: " + response);
// 			}
// 		} catch (MalformedURLException e) {
// 			StationServerResource.log.severe("error getting station object: " + e.toString());
// 		} catch (IOException e) {
// 			StationServerResource.log.severe("error getting station object: " + e.toString());
// 		}
// 		return Collections.emptyList();
// 	}
// 
// }


import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import javax.cache.CacheException;
import javax.cache.CacheFactory;
import javax.cache.CacheManager;
import com.google.appengine.api.memcache.stdimpl.GCacheFactory;
import de.marcusschiesser.dbpendler.common.vo.StationVO;
import de.marcusschiesser.dbpendler.server.bahnwrapper.StationParser;

package de.marcusschiesser.dbpendler.server.storage;





public class StationStorage {
	private static StationStorage instance = new StationStorage();
	private StationParser parser;
	private Map<String, List<StationVO>> cache;

	public static final Logger log = Logger.getLogger(StationStorage.class.getName());

	@SuppressWarnings("unchecked")
	private StationStorage() {

// Path: openbahn-api/src/de/marcusschiesser/dbpendler/common/vo/StationVO.java
// @JsonIgnoreProperties(ignoreUnknown=true)
// public class StationVO implements Serializable {
// 
// 	/**
// 	 * 
// 	 */
// 	private static final long serialVersionUID = -4162834891520852561L;
// 
// 	private String value;
// 	private String typeStr;
// 	private String type;
// 	private String weight;
// 	
// 	public StationVO() {}
// 	
// 	public StationVO(String value) {
// 		super();
// 		this.value = value;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((value == null) ? 0 : value.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		StationVO other = (StationVO) obj;
// 		if (value == null) {
// 			if (other.value != null)
// 				return false;
// 		} else if (!value.equals(other.value))
// 			return false;
// 		return true;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public String getTypeStr() {
// 		return typeStr;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public void setTypeStr(String typeStr) {
// 		this.typeStr = typeStr;
// 	}
// 
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 
// 	public String getType() {
// 		return type;
// 	}
// 
// 	public void setWeight(String weight) {
// 		this.weight = weight;
// 	}
// 
// 	public String getWeight() {
// 		return weight;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "StationVO [value=" + value + "]";
// 	}
// 	
// 	
// }
// 
// Path: openbahn-api/src/de/marcusschiesser/dbpendler/server/bahnwrapper/StationParser.java
// public class StationParser {
// 
// 	public static final Logger log = Logger.getLogger(StationParser.class.getName());
// 	private static StationParser instance = new StationParser();
// 	private Pattern pattern;
// 
// 	public StationParser() {
// 		pattern = Pattern.compile("\\[.*\\]");
// 	}
// 
// 	public static StationParser getInstance() {
// 		return instance;
// 	}
// 	
// 	public List<StationVO> getStations(String contains)  {
// 		try {
// 			contains = URLEncoder.encode(contains, "utf-8");
// 			String response = HTTPUtils.getMethod(new URL("http://reiseauskunft.bahn.de/bin/ajax-getstop.exe/dn?start=1&tpl=sls&REQ0JourneyStopsB=12&REQ0JourneyStopsS0A=1&getstop=1&noSession=yes&iER=yes&S=" + contains + "?&js=true"));
// 	
// 			Matcher matcher = pattern.matcher(response);
// 			if(matcher.find()) {
// 				String filter = matcher.group();
// 				ObjectMapper m = new ObjectMapper();
// 				try {
// 					StationVO stations[] = m.readValue(filter, StationVO[].class);
// 					return Arrays.asList(stations);
// 				} catch (Exception e) {
// 					StationServerResource.log.severe("could not parse object to stationvo: " + e.toString());
// 				}
// 			} else {
// 				StationServerResource.log.severe("bahn.de changed the format. can not match: " + response);
// 			}
// 		} catch (MalformedURLException e) {
// 			StationServerResource.log.severe("error getting station object: " + e.toString());
// 		} catch (IOException e) {
// 			StationServerResource.log.severe("error getting station object: " + e.toString());
// 		}
// 		return Collections.emptyList();
// 	}
// 
// }


// Path: openbahn-api/src/de/marcusschiesser/dbpendler/server/storage/StationStorage.java
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import javax.cache.CacheException;
import javax.cache.CacheFactory;
import javax.cache.CacheManager;
import com.google.appengine.api.memcache.stdimpl.GCacheFactory;
import de.marcusschiesser.dbpendler.common.vo.StationVO;
import de.marcusschiesser.dbpendler.server.bahnwrapper.StationParser;

package de.marcusschiesser.dbpendler.server.storage;





public class StationStorage {
	private static StationStorage instance = new StationStorage();
	private StationParser parser;
	private Map<String, List<StationVO>> cache;

	public static final Logger log = Logger.getLogger(StationStorage.class.getName());

	@SuppressWarnings("unchecked")
	private StationStorage() {

		parser = StationParser.getInstance();
