/** * Store.java * * Copyright � 1998-2011 Research In Motion Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Note: For the sake of simplicity, this sample application may not leverage * resource bundles and resource strings. However, it is STRONGLY recommended * that application developers make use of the localization features available * within the BlackBerry development platform to ensure a seamless application * experience across a variety of languages and geographies. For more information * on localizing your application, please refer to the BlackBerry Java Development * Environment Development Guide associated with this release. */ package com.rim.samples.server.gpsdemo; import java.io.*; import java.util.*; /** * Store save the gps information sent by the device to a file for drawing the graphs and plots * The file is called data.txt and lives in the working directory, typically SDK/samples. */ public class Store { private final String _filename = "data.txt"; /*package*/ TreeMap _map; //referenced by GPSServer public Store() { _map = new TreeMap(); loadData(); } private void loadData() { long time = 0; double latitude = 0.0; double longitude = 0.0; double altitude = 0.0; double distance = 0.0; double speed = 0.0; try { BufferedReader in = new BufferedReader(new FileReader(_filename)); String str; while ((str = in.readLine()) != null) { StringTokenizer tokenizer = new StringTokenizer(str,";"); longitude = Double.parseDouble(tokenizer.nextToken()); latitude = Double.parseDouble(tokenizer.nextToken()); altitude = Double.parseDouble(tokenizer.nextToken()); distance = Double.parseDouble(tokenizer.nextToken()); speed = Double.parseDouble(tokenizer.nextToken()); time = Long.parseLong(tokenizer.nextToken()); _map.put(new Long(time), new Point(time, latitude, longitude, altitude, distance, speed)); } in.close(); } catch (IOException e) { System.err.println(e); } } public void save(Vector points){ try { PrintWriter out = new PrintWriter(new FileOutputStream(_filename, true)); Iterator it = points.iterator(); while(it.hasNext()) { out.println((String)it.next()); } out.close(); } catch (IOException e) { System.err.println(e); } } } /** * A simple class for dealing with a single location */ /*package*/ class Point{ long time; double latitude; double longitude; double altitude; double distance; double speed; public Point(long time, double latitude, double longitude, double altitude, double distance, double speed) { this.time = time; this.latitude = latitude; this.longitude = longitude; this.altitude = altitude; this.distance = distance; this.speed = speed; } }