Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package reittienEtsinta; import java.util.Scanner; import org.json.JSONObject; import reittienEtsinta.tiedostonKasittely.GeoJsonKirjoittaja; import reittienEtsinta.tietorakenteet.Reitti; import reittienEtsinta.tietorakenteet.Verkko; /** * * @author elias */ public class Kayttoliittyma { private Verkko verkko; public Kayttoliittyma(Verkko verkko) { this.verkko = verkko; } public void kaynnista() { Scanner lukija = new Scanner(System.in); System.out.println("Komennot: \n" + " koord <lon> <lat> <lon> <lat> <tiedostonimi> \n " + "hae <lahtosolmu> <maalisolmu> <tiedostonimi> \n " + "kaari <lahtosolmu> <maalisolmu>\n" + "lopeta"); while (true) { String komento = lukija.nextLine(); if (komento.substring(0, 5).equals("koord")) { Scanner komentotulkki = new Scanner(komento); double lonA = Double.parseDouble(komentotulkki.findInLine("[0-9]{6}")); double latA = Double.parseDouble(komentotulkki.findInLine("[0-9]{7}")); double lonM = Double.parseDouble(komentotulkki.findInLine("[0-9]{6}")); double latM = Double.parseDouble(komentotulkki.findInLine("[0-9]{7}")); this.haeReittiKoordinaateilla(latA, lonA, latM, lonM); String polku = komentotulkki.next(); this.tallennaReitti(polku); } else if (komento.substring(0, 3).equals("hae")) { Scanner komentotulkki = new Scanner(komento); int alku = Integer.parseInt(komentotulkki.findInLine("[0-9]{1,4}")); int maali = Integer.parseInt(komentotulkki.findInLine("[0-9]{1,4}")); this.haeReitti(alku, maali); String polku = komentotulkki.next(); this.tallennaReitti(polku); } else if (komento.substring(0, 5).equals("kaari")) { Scanner komentotulkki = new Scanner(komento); int alku = Integer.parseInt(komentotulkki.findInLine("[0-9]{1,4}")); int maali = Integer.parseInt(komentotulkki.findInLine("[0-9]{1,4}")); this.haeKaari(alku, maali); } else if (komento.equals("lopeta")) { return; } else { System.out.println("tuntematon komento"); } } } private void haeKaari(int alku, int loppu) { double haeKaari = this.verkko.haeKaari(alku, loppu); System.out.println("aika solmusta " + alku + " solmuun " + loppu + ": " + haeKaari); } private void tallennaReitti(String polku) { System.out.println("Puretaan reitti"); Reitti lyhyinReitti = verkko.lyhyinReitti(); int sekunttia = lyhyinReitti.getAika()[lyhyinReitti.getAika().length - 1]; int minuuttia = sekunttia / 60; int tuntia = minuuttia / 60; minuuttia = minuuttia % 60; sekunttia = sekunttia % 60; System.out.println("Aika arvio reitille: " + tuntia + "h:" + minuuttia + "m:" + sekunttia + "s"); String crs = "urn:ogc:def:crs:EPSG::3047"; if (!GeoJsonKirjoittaja.kirjoita(polku + "/reitti.geojson", GeoJsonKirjoittaja.muunnaJsonReitti(lyhyinReitti, crs)) || !GeoJsonKirjoittaja.kirjoita(polku + "/pisteet.geojson", GeoJsonKirjoittaja.munnaJsonPisteet(lyhyinReitti, crs))) { System.out.println("annettua kansiota ei lydy"); return; } System.out.println("Tallennetaan reitti tiedostoon " + polku + "/reitti.geojson"); System.out.println("Tallennetaan reittipisteet tiedostoon " + polku + "/pisteet.geojson"); System.out.println("valmis"); } private void haeReittiKoordinaateilla(double latA, double lonA, double latM, double lonM) { int alku = verkko.haeLahinSolmu(latA, lonA); int loppu = verkko.haeLahinSolmu(latM, lonM); this.haeReitti(alku, loppu); } private void haeReitti(int lahtosolmu, int maalisolmu) { System.out.println("Muodostetaan reitti solmusta " + lahtosolmu + " solmuun " + maalisolmu); this.verkko.alustus(lahtosolmu, maalisolmu); this.verkko.aStar(); } }