Package de.marcusschiesser.dbpendler.server.bahnwrapper

Source Code of de.marcusschiesser.dbpendler.server.bahnwrapper.StationParser

package de.marcusschiesser.dbpendler.server.bahnwrapper;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.codehaus.jackson.map.ObjectMapper;

import de.marcusschiesser.dbpendler.common.vo.StationVO;
import de.marcusschiesser.dbpendler.server.StationServerResource;
import de.marcusschiesser.dbpendler.server.utils.HTTPUtils;

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();
  }

}
TOP

Related Classes of de.marcusschiesser.dbpendler.server.bahnwrapper.StationParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.