/src/main/com/lbslocal/cc/core/CommonRoute.java
Java | 3934 lines | 3759 code | 147 blank | 28 comment | 128 complexity | 795e479a7bac7f0b1943e127c359f444 MD5 | raw file
- package com.lbslocal.cc.core;
-
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- import java.util.Scanner;
- import java.util.regex.Pattern;
-
-
- import com.lbslocal.cc.common.Functions;
- import com.lbslocal.cc.common.SegAux;
- import com.lbslocal.cc.common.TCPClientDecarta;
- import com.lbslocal.cc.common.TollFeeAux;
- import com.lbslocal.cc.common.dataBase;
- import com.lbslocal.cc.objects.v0.common.City;
- import com.lbslocal.cc.objects.v0.common.Extent;
- import com.lbslocal.cc.objects.v0.common.MapInfo;
- import com.lbslocal.cc.objects.v0.common.MapOptions;
- import com.lbslocal.cc.objects.v0.common.MapSize;
- import com.lbslocal.cc.objects.v0.common.Point;
- import com.lbslocal.cc.objects.v0.common.ShapeDetect;
- import com.lbslocal.cc.objects.v3.route.POIDetails;
- import com.lbslocal.cc.objects.v3.route.RoadType;
- import com.lbslocal.cc.objects.v3.route.RouteArray;
- import com.lbslocal.cc.objects.v3.route.RouteProximityInfo;
- import com.lbslocal.cc.objects.v3.route.RouteProximityOptions;
- import com.lbslocal.cc.objects.v3.route.RouteStop;
- import com.lbslocal.cc.objects.v3.route.RouteSummary;
- import com.lbslocal.cc.objects.v3.route.RouteTotals;
- import com.lbslocal.cc.objects.v3.route.SegmentDescription;
- import com.lbslocal.cc.objects.v3.route.TollFeeDetails;
- import com.lbslocal.master.common.ConfigurationManager;
- import com.lbslocal.master.common.Utils;
- import com.vividsolutions.jts.geom.Coordinate;
- import com.vividsolutions.jts.geom.Geometry;
- import com.vividsolutions.jts.geom.GeometryFactory;
- import com.vividsolutions.jts.io.ParseException;
- import com.vividsolutions.jts.io.WKTReader;
- import com.vividsolutions.jts.operation.buffer.BufferOp;
-
- public class CommonRoute {
- private String _maquina;
- private String _server;
- private int _port;
- private String _output;
- private String _dns;
- private String _dataSource;
- private String _dataSourceMapa;
-
- public static int _getRoute = 15;
- public static int _getRouteDescription = 18;
- public static int _getRouteSummary = 16;
- public static int _getRouteTotals = 19;
- public static int _getRouteWithMap = 17;
-
- // estrutura do poiRoute
- String poiID;
- String poiFieldList;
- String poiSource;
- String poiSegSource;
- String poiDataBase;
-
- Extent gExt = new Extent();
-
- public CommonRoute(String maquina, String server, int port, String output, String dns, String dataSource, String dataSourceMapa) {
- this._maquina = maquina;
- this._server = server;
- this._port = port;
- this._dns = dns;
- this._output = output;
- this._dataSource = dataSource;
- this._dataSourceMapa = dataSourceMapa;
-
- File fileDir = new File(_output);
- if (!fileDir.exists())
- fileDir.mkdirs();
-
- gExt.setXMax(0);
- gExt.setXMin(0);
- gExt.setYMax(0);
- gExt.setYMin(0);
- }
-
- public CommonRoute(String maquina, String server, int port, String output, String dns, String dataSource, String dataSourceMapa,
- String outputLinux) {
- this._maquina = maquina;
- this._server = server;
- this._port = port;
- this._dns = dns;
- this._output = output;
- this._dataSource = dataSource;
- this._dataSourceMapa = dataSourceMapa;
-
- gExt.setXMax(0);
- gExt.setXMin(0);
- gExt.setYMax(0);
- gExt.setYMin(0);
- }
-
- private RouteSummary[] getSummary(SegmentDescription[] segmentDescription, RouteStop[] rs, RouteProximityOptions ro) throws Exception {
- RouteSummary[] summary = new RouteSummary[rs.length];
-
- try {
- int parada = 1;
-
- // origem
- summary[0] = new RouteSummary();
- summary[0].setDistance(0);
- summary[0].setDescription(rs[0].getDescription());
- summary[0].getPoint().setX(Functions.formatDouble(rs[0].getPoint().getX(), "0.00000"));
- summary[0].getPoint().setY(Functions.formatDouble(rs[0].getPoint().getY(), "0.00000"));
- summary[0].setTime("");
-
- String comandoFimDaRota = "Fim da rota";
-
- if (ro.getLanguage().equals("espanhol"))
- comandoFimDaRota = "Fin de la ruta";
-
- // paradas
- double distanciaAcumulada = 0;
- String LastStop = "";
- for (int x = 0; x < segmentDescription.length; x++) {
- if (segmentDescription[x].getCommand().toUpperCase().indexOf("PARADA") >= 0
- || segmentDescription[x].getCommand().toUpperCase().indexOf(comandoFimDaRota.toUpperCase()) >= 0) {
-
- if (!LastStop.equals(segmentDescription[x].getCommand())) {
- try {
- summary[parada] = new RouteSummary();
- summary[parada].setDistance(Functions.formatDouble(segmentDescription[x].getCumulativeDistance(), "0.00")
- - Functions.formatDouble(distanciaAcumulada, "0.00"));
-
- summary[parada].setDescription(segmentDescription[x].getDescription());
- summary[parada].getPoint().setX(Functions.formatDouble(segmentDescription[x].getPoint().getX(), "0.00000"));
- summary[parada].getPoint().setY(Functions.formatDouble(segmentDescription[x].getPoint().getY(), "0.00000"));
- summary[parada].setTime(getTotalTime(summary[parada].getDistance(), ro.getVehicle().getAverageSpeed()));
-
- distanciaAcumulada = Functions.formatDouble(segmentDescription[x].getCumulativeDistance(), "0.00");
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- parada++;
- LastStop = segmentDescription[x].getCommand();
- }
- }
- }
- } catch (Exception ex) {
- throw (new Exception("Problemas ao gerar o sum?rio da rota."));
- }
-
- return summary;
- }
-
- private static Comparator<RouteSummary> COMPARATOR = new Comparator<RouteSummary>() {
- // This is where the sorting happens.
- public int compare(RouteSummary o1, RouteSummary o2) {
- return (int) (o1.getDistance() - o2.getDistance());
- }
- };
-
- double totalPedagios = 0;
-
- public Object[] addPedagio(String vr, RouteProximityOptions ro, SegAux segAux, List<TollFeeAux> pedagioList, int nroParadas) throws IOException {
- Object[] obj = new Object[2];
-
- TCPClientDecarta tcpDecarta = new TCPClientDecarta(_server, _port);
-
- String dataSourcePOI = "lbslocal_pedagio";
-
- if (!Functions.IsNullOrEmpty(ro.getDataSource())) {
- if (ro.getDataSource().toUpperCase().equals("BR"))
- dataSourcePOI = "lbslocal_postos_rod_pedagio";
- }
-
- String response = tcpDecarta.Send("PNB0|%" + vr + "%RAD=m7|%M=500%PLL%S2%DS=" + dataSourcePOI + "||");
-
- if (!response.contains("No records found")) {
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- for (int w = 0; w < partMasterPOI.length; w++) {
- if (partMasterPOI[w].indexOf("POI_") >= 0) {
- TollFeeAux pedagio = new TollFeeAux();
- pedagio.xy = "#"
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf(",") + 1)
- + "~"
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("PLL") + 4, (partMasterPOI[w].indexOf("PLL") + 4)
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("PLL") + 4).indexOf(",")) + "#";
- ;
- pedagio.ID = partMasterPOI[w].substring(partMasterPOI[w].indexOf("POI_") + 6,
- (partMasterPOI[w].indexOf("POI_") + 6) + (partMasterPOI[w].indexOf("PLL") - 7) - partMasterPOI[w].indexOf("POI_"))
- .toLowerCase();
-
- if (pedagioList.size() > 0) {
- if ((pedagioList.get(pedagioList.size() - 1).ID != pedagio.ID) || nroParadas >= 3) {
- pedagioList.add(pedagio);
-
- TollFeeDetails tollFeeDetails = new TollFeeDetails();
- tollFeeDetails.setName(pedagio.ID);
- totalPedagios += tollFeeDetails.getPrice();
-
- segAux.seg.setTollFee("S");
- segAux.seg.setTollFeeDetails(tollFeeDetails);
- segAux.seg.getPoint().setX(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("#") + 1,
- (pedagio.xy.indexOf("#") + 1) + pedagio.xy.indexOf("~") - 1))));
- segAux.seg.getPoint().setY(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("~") + 1,
- (pedagio.xy.indexOf("~") + 1) + (pedagio.xy.lastIndexOf("#") - pedagio.xy.indexOf("~")) - 1))));
- }
- } else {
- pedagioList.add(pedagio);
-
- TollFeeDetails tollFeeDetails = new TollFeeDetails();
- tollFeeDetails.setName(pedagio.ID);
- totalPedagios += tollFeeDetails.getPrice();
-
- segAux.seg.setTollFee("S");
- segAux.seg.setTollFeeDetails(tollFeeDetails);
- segAux.seg.getPoint().setX(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("#") + 1,
- (pedagio.xy.indexOf("#") + 1) + pedagio.xy.indexOf("~") - 1))));
- segAux.seg.getPoint().setY(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("~") + 1,
- (pedagio.xy.indexOf("~") + 1) + (pedagio.xy.lastIndexOf("#") - pedagio.xy.indexOf("~")) - 1))));
- }
- }
- }
- }
-
- obj[0] = segAux;
- obj[1] = pedagioList;
-
- return obj;
- }
-
- public Object[] addPOI(String[] poiRoutes, String vr, RouteProximityOptions ro, SegAux segAux, List<POIDetails> poiList) throws IOException {
- Object[] obj = new Object[2];
-
- TCPClientDecarta tcpDecarta = new TCPClientDecarta(_server, _port);
-
- for (int x = 0; x < poiRoutes.length; x++) {
- if (!Functions.IsNullOrEmpty(poiRoutes[x])) {
- String response = tcpDecarta.Send("PNB0|%" + vr + "%RAD=m7|%M=500%PLL%S2%DS=" + poiRoutes[x] + "||");
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- if (!response.contains("No records found")) {
- for (int w = 0; w < partMasterPOI.length; w++) {
- if (partMasterPOI[w].indexOf("POI_") >= 0) {
- POIDetails poi = new POIDetails();
- poi.setClientID(partMasterPOI[w].substring(partMasterPOI[w].indexOf("POI_") + 4, (partMasterPOI[w].indexOf("POI_") + 4)
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("POI_") + 4).indexOf('%')));
-
- if (Functions.isNumeric(poi.getClientID().substring(0, poi.getClientID().indexOf(':')))) {
- poiList.add(poi);
- segAux.seg.setPoiRoute("S");
- segAux.seg.setPoiRouteDetails(poiList.toArray(new POIDetails[0]));
- }
- }
- }
- }
- }
- }
-
- obj[0] = segAux;
- obj[1] = poiList;
-
- return obj;
- }
-
- public Object[] addPOIsRota(String vr, RouteProximityOptions ro, SegAux segAux, List<TollFeeAux> pedagioList, List<POIDetails> poiList,
- int nroParadas, int[] poiRouteIDs) throws IOException {
- Object[] obj = new Object[3];
-
- TCPClientDecarta tcpDecarta = new TCPClientDecarta(_server, _port);
-
- String dataSourcePOI = "lbslocal_postos";
-
- if (!Functions.IsNullOrEmpty(ro.getDataSource())) {
- if (ro.getDataSource().toUpperCase().equals("BR"))
- dataSourcePOI = "lbslocal_postos_rod";
- }
-
- String response = tcpDecarta.Send("PNB0|%" + vr + "%RAD=m7|%EXTIME%M=500%PLL%S2%DS=" + dataSourcePOI + "||");
-
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- if (!response.contains("No records found")) {
- for (int w = 0; w < partMasterPOI.length; w++) {
- if (partMasterPOI[w].indexOf("POI_") >= 0) {
- if (!partMasterPOI[w].contains("POI_P:")) {
- if (ro.getRouteDetails().getPoiRoute() != null) {
- for (int i = 0; i < poiRouteIDs.length; i++) {
- POIDetails poi = new POIDetails();
- poi.setClientID(partMasterPOI[w].substring(partMasterPOI[w].indexOf("POI_") + 4,
- (partMasterPOI[w].indexOf("POI_") + 4)
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("POI_") + 4).indexOf('%')));
-
- if (poi.getClientID().substring(0, poi.getClientID().indexOf(':')) == String.valueOf(poiRouteIDs[i])) {
- if (Functions.isNumeric(poi.getClientID().substring(0, poi.getClientID().indexOf(':')))) {
- poiList.add(poi);
- segAux.seg.setPoiRoute("S");
- segAux.seg.setPoiRouteDetails(poiList.toArray(new POIDetails[0]));
- }
- }
- }
- }
- } else {
- if (ro.getVehicle().getTollFeeCat() > 0) {
- TollFeeAux pedagio = new TollFeeAux();
- pedagio.xy = "#"
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf(",") + 1)
- + "~"
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("PLL") + 4, (partMasterPOI[w].indexOf("PLL") + 4)
- + partMasterPOI[w].substring(partMasterPOI[w].indexOf("PLL") + 4).indexOf(",")) + "#";
- ;
- pedagio.ID = partMasterPOI[w]
- .substring(
- partMasterPOI[w].indexOf("POI_") + 6,
- (partMasterPOI[w].indexOf("POI_") + 6) + (partMasterPOI[w].indexOf("PLL") - 7)
- - partMasterPOI[w].indexOf("POI_")).toLowerCase();
-
- if (pedagioList.size() > 0) {
- if ((pedagioList.get(pedagioList.size() - 1).ID != pedagio.ID) || nroParadas >= 3) {
- pedagioList.add(pedagio);
-
- TollFeeDetails tollFeeDetails = new TollFeeDetails();
- tollFeeDetails.setName(pedagio.ID);
- totalPedagios += tollFeeDetails.getPrice();
-
- segAux.seg.setTollFee("S");
- segAux.seg.setTollFeeDetails(tollFeeDetails);
- segAux.seg.getPoint().setX(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("#") + 1, (pedagio.xy.indexOf("#") + 1)
- + pedagio.xy.indexOf("~") - 1))));
- segAux.seg.getPoint().setY(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("~") + 1, (pedagio.xy.indexOf("~") + 1)
- + (pedagio.xy.lastIndexOf("#") - pedagio.xy.indexOf("~")) - 1))));
- }
- } else {
- pedagioList.add(pedagio);
-
- TollFeeDetails tollFeeDetails = new TollFeeDetails();
- tollFeeDetails.setName(pedagio.ID);
- totalPedagios += tollFeeDetails.getPrice();
-
- segAux.seg.setTollFee("S");
- segAux.seg.setTollFeeDetails(tollFeeDetails);
- segAux.seg.getPoint().setX(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("#") + 1, (pedagio.xy.indexOf("#") + 1)
- + pedagio.xy.indexOf("~") - 1))));
- segAux.seg.getPoint().setY(
- Double.parseDouble((pedagio.xy.substring(pedagio.xy.indexOf("~") + 1, (pedagio.xy.indexOf("~") + 1)
- + (pedagio.xy.lastIndexOf("#") - pedagio.xy.indexOf("~")) - 1))));
- }
- }
- }
- }
- }
- }
-
- obj[0] = segAux;
- obj[1] = pedagioList;
- obj[2] = poiList;
-
- return obj;
- }
-
- private int[] getPoiRouteCurrentIDs(String[] poiRoute) {
- int[] poiRouteIDs = null;
-
- if (poiRoute != null) {
- String sql = "";
- String pois = "";
- poiRouteIDs = new int[poiRoute.length];
-
- try {
- for (int x = 0; x < poiRoute.length; x++) {
- if (!Functions.IsNullOrEmpty(poiRoute[x])) {
- if (x > 0)
- pois += ",'" + poiRoute[x] + "'";
- else
- pois += "'" + poiRoute[x] + "'";
- }
- }
-
- if (!Functions.IsNullOrEmpty(pois)) {
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
- Statement st = con.createStatement();
-
- sql = "SELECT ID ";
- sql += " FROM TB_POIROUTE";
- sql += " WHERE poiRoute in (" + pois + ")";
-
- ResultSet rr = st.executeQuery(sql.toUpperCase());
-
- int i = 0;
- while (rr.next()) {
- poiRouteIDs[i] = (rr.getInt("ID"));
- i++;
- }
- }
- } catch (Exception ex) {
- // throw (new
- // Exception("Problemas ao buscar estrutra poiRoute."));
- }
- }
-
- return poiRouteIDs;
- }
-
- @SuppressWarnings("unchecked")
- public SegmentDescription[] getSegmentDescriptionAlternative(String _response, int tollFeeCat, RouteProximityOptions ro, RouteStop[] rs,
- String dataSource, int idLicenca) throws Exception {
- List<SegAux> segmentList = new ArrayList<SegAux>();
- List<POIDetails> poiList = new ArrayList<POIDetails>();
-
- SegmentDescription[] ret = null;
- boolean proximity = false;
- String clientDataSource = "";
-
- int[] poiRouteIDs = null;
-
- if (dataSource.toLowerCase().contains("lbslocal_rodoviaria"))
- ro.setDataSource("BR");
-
- String comandoFimDaRota = "Fim da rota";
- String comandoInicio = "Início da rota";
- String comandoContinue = "Continue";
-
- if (ro.getLanguage().equals("espanhol")) {
- comandoFimDaRota = "Fin de la ruta";
- comandoInicio = "Inicio de la ruta";
- comandoContinue = "Sigue";
- }
- SegAux segTemp = new SegAux();
- segTemp.seg = new SegmentDescription();
- segTemp.seg.setDistance(0);
- segTemp.seg.setCity(new City());
- segTemp.seg.getCity().setName("");
- segTemp.seg.getCity().setState("");
- segTemp.seg.setCumulativeDistance(0);
- segTemp.segPosition = 0;
- segTemp.seg.setCommand(comandoInicio);
- segTemp.seg.setDescription(rs[0].getDescription());
- segTemp.seg.setPoint(new Point());
- segTemp.seg.getPoint().setX(Functions.formatDouble(rs[0].getPoint().getX(), "0.00000"));
- segTemp.seg.getPoint().setY(Functions.formatDouble(rs[0].getPoint().getY(), "0.00000"));
- segmentList.add(segTemp);
-
- poiRouteIDs = getPoiRouteCurrentIDs(ro.getRouteDetails().getPoiRoute());
-
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- TCPClientDecarta tcpDecarta = new TCPClientDecarta(_server, _port);
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery(" SELECT * FROM TB_DADOS_ROUTEPROXIMITY WHERE ID_LICENCA = " + idLicenca);
-
- while (rr.next()) {
- clientDataSource = rr.getString("DS_DECARTA");
- proximity = true;
-
- if (ro.getRadius() == 0)
- ro.setRadius(10);
-
- if (ro.getRouteDetails().getRouteType() == 12 || ro.getRouteDetails().getRouteType() == 13)
- proximity = false;
- }
-
- st.close();
- rr.close();
- } catch (Exception ex) {
- // throw ex;
- } finally {
- con.close();
- }
- List<String> poiRoutes = new ArrayList<String>();
-
- try {
- if (ro.getRouteDetails().getPoiRoute() != null) {
- for (int c = 0; c < ro.getRouteDetails().getPoiRoute().length; c++) {
- String poiRoute = ro.getRouteDetails().getPoiRoute()[c];
-
- con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery("SELECT * FROM TB_POIROUTE WHERE poiRoute = '" + poiRoute + "'");
-
- while (rr.next()) {
- if (!Functions.IsNullOrEmpty(ro.getDataSource())) {
- if (ro.getDataSource().toUpperCase().equals("BR"))
- poiRoutes.add(rr.getString("decartaRodSource"));
- else
- poiRoutes.add(rr.getString("decartaSource"));
- } else
- poiRoutes.add(rr.getString("decartaSource"));
- }
-
- st.close();
- rr.close();
- }
- }
- } catch (Exception ex) {
-
- } finally {
- con.close();
- }
-
- RouteStop[] rStopSelect = removeRouteStop(rs, 0);
-
- try {
- String[] partMaster = _response.split(Pattern.quote("|"));
-
- double cumulativeDistance = 0;
- int paradas = 1;
-
- List<TollFeeAux> pedagioList = new ArrayList<TollFeeAux>();
-
- for (int x = 0; x < partMaster.length; x++) {
- if (partMaster[x].indexOf("S2=") >= 0) {
- poiList.clear();
- String[] part = partMaster[x].split(Pattern.quote("%"));
-
- SegAux segAux = new SegAux();
- segAux.seg = new SegmentDescription();
-
- for (int z = 0; z < part.length; z++) {
- if (part[z].indexOf("DIST=K") >= 0) {
- cumulativeDistance += Functions.formatDouble(part[z].replace("DIST=K", ""), "0.00");
- segAux.seg.setCumulativeDistance(Functions.formatDouble(cumulativeDistance, "0.00"));
- segAux.seg.setDistance(Functions.formatDouble(part[z].replace("DIST=K", ""), "0.00"));
- segAux.seg.setDistance(segAux.seg.getDistance());
- }
- if (part[z].indexOf("TIME=") >= 0) {
- segAux.seg.setTime(part[z].replace("TIME=", ""));
- }
- if (part[z].indexOf("AC=") >= 0) {
- if (part[z].contains("21")) {
- if (Functions.IsNullOrEmpty(segAux.seg.getCity().getName())) {
- segAux.seg.setCity(new City());
- segAux.seg.getCity().setName(Functions.CamelCase(part[z + 1].replace("S2=", "").split(Pattern.quote("\\"))[1]));
- segAux.seg.getCity().setState(part[z + 1].replace("S2=", "").split(Pattern.quote("\\"))[4]);
- }
- }
-
- if (part[z].contains("71")) {
- if (Functions.IsNullOrEmpty(segAux.seg.getDescription())) {
- if (part[z + 1].indexOf("#") >= 0)
- segAux.seg.setDescription(Functions.CamelCase(part[z + 1].substring(0, part[z + 1].indexOf("#")).replace(
- "S2=", "")));
- else
- segAux.seg.setDescription(Functions.CamelCase(part[z + 1].replace("S2=", "")));
-
- try {
- segAux.seg.setRoadType(part[z + 1].split(Pattern.quote("_"))[1].replace("T:", ""));
- } catch (Exception ex) {
- segAux.seg.setRoadType(part[z + 1].substring(part[z + 1].indexOf("T:") + 2, 2).replace("_", ""));
- }
- }
- }
- }
-
- if (part[z].indexOf("TURN=") >= 0)
- segAux.seg.setCommand(Translate(part[z].replace("TURN=", ""), ro.getLanguage()));
-
- if (part[z].indexOf("LL=") >= 0) {
- if (segAux.seg.getPoint().getX() == 0) {
- segAux.seg.setPoint(new Point());
- segAux.seg.getPoint()
- .setX(Double.parseDouble(part[z].replace("LL=", "").split(Pattern.quote(","))[1].replace("|", "").replace(
- "%", "")));
- segAux.seg.getPoint()
- .setY(Double.parseDouble(part[z].replace("LL=", "").split(Pattern.quote(","))[0].replace("|", "").replace(
- "%", "")));
- }
- }
-
- if (part[z].indexOf("VR7=") >= 0) {
- segAux.vr = part[z].replace("VR7=", "").substring(part[z].replace("VR7=", "").indexOf(",") + 1);
- // if (ro.getVehicle().getTollFeeCat() > 0)
- // {
- // Object[] obj = addPedagio(part[z], ro, segAux,
- // pedagioList, rs.length);
- // segAux = (SegAux) obj[0];
- // pedagioList = (List<TollFeeAux>) obj[1];
- // }
- //
- // if (ro.getRouteDetails().getPoiRoute() != null)
- // {
- // Object[] obj = addPOI(poiRoutes.toArray(new
- // String[0]), part[z], ro, segAux, poiList);
- // segAux = (SegAux) obj[0];
- // poiList = (List<POIDetails>) obj[1];
- // }
-
- if (ro.getVehicle().getTollFeeCat() > 0 || ro.getRouteDetails().getPoiRoute() != null) {
- Object[] obj = addPOIsRota(part[z], ro, segAux, pedagioList, poiList, rs.length, poiRouteIDs);
- segAux = (SegAux) obj[0];
- pedagioList = (List<TollFeeAux>) obj[1];
- poiList = (List<POIDetails>) obj[2];
- }
-
- if (proximity) {
- if (ro.getRouteDetails().getRouteType() == 12) {
- String response = tcpDecarta.Send("PNB0|%" + part[z] + "%RAD=M2|%M=1000%LL%S2%S1%DS=telefonica_rotas||");
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- for (int w = 0; w < partMasterPOI.length; w++) {
- POIDetails poi = new POIDetails();
-
- if (partMasterPOI[w].indexOf("S1") >= 0) {
- try {
- String[] p = partMasterPOI[w].replace("%", "").replace("S2", "").replace("S1", "").replace("LL", "")
- .split(Pattern.quote("="));
- int ind = p[1].lastIndexOf("\\");
- poi.setClientID(p[2].substring(0, p[2].indexOf("\\")) + "|" + p[1].substring(ind).replace("\\", ""));
- poi.getPoint().setX(Double.parseDouble(p[3].split(Pattern.quote(","))[1]));
- poi.getPoint().setY(Double.parseDouble(p[3].split(Pattern.quote(","))[0]));
-
- poiList.add(poi);
- segAux.seg.setPoiRoute("S");
- segAux.seg.setPoiRouteDetails((POIDetails[]) poiList.toArray());
- } catch (Exception ex) {
- }
- }
- }
- } else {
- if (ro.getRouteDetails().getRouteType() == 13) {
- String response = tcpDecarta.Send("PNB0|%" + part[z] + "%RAD=M2|%M=1000%LL%S2%S1%DS=telefonica_pf||");
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- for (int w = 0; w < partMasterPOI.length; w++) {
- POIDetails poi = new POIDetails();
-
- if (partMasterPOI[w].indexOf("S1") >= 0) {
- try {
- String[] p = partMasterPOI[w].replace("%", "").replace("S2", "").replace("S1", "")
- .replace("LL", "").split(Pattern.quote("="));
- int ind = p[1].lastIndexOf("\\");
- poi.setClientID(p[2].substring(0, p[2].indexOf("\\")) + "|"
- + p[1].substring(ind).replace("\\", ""));
- poi.getPoint().setX(Double.parseDouble(p[3].split(Pattern.quote(","))[1]));
- poi.getPoint().setY(Double.parseDouble(p[3].split(Pattern.quote(","))[0]));
-
- poiList.add(poi);
- segAux.seg.setPoiRoute("S");
- segAux.seg.setPoiRouteDetails((POIDetails[]) poiList.toArray());
- } catch (Exception ex) {
- }
- }
- }
- } else {
- String response = tcpDecarta.Send("PNB0|%" + part[z] + "%RAD=m" + ro.getRadius() + "|%M=1000%LL%S2%S1%DS="
- + clientDataSource + "||");
- String[] partMasterPOI = response.split(Pattern.quote("|"));
-
- for (int w = 0; w < partMasterPOI.length; w++) {
- POIDetails poi = new POIDetails();
-
- if (partMasterPOI[w].indexOf("S1") >= 0) {
- try {
- String[] p = partMasterPOI[w].replace("%", "").replace("S2", "").replace("S1", "")
- .replace("LL", "").split(Pattern.quote("="));
- int ind = p[1].lastIndexOf("\\");
-
- try {
- poi.setClientID(p[2].substring(0, p[2].indexOf("\\")) + "|"
- + p[1].substring(ind).replace("\\", ""));
- } catch (Exception ex) {
- poi.setClientID(p[2]);
- try {
- poi.setSource(p[1].substring(ind + 1));
- } catch (Exception ex1) {
- }
- ;
- }
-
- poi.getPoint().setX(Double.parseDouble(p[3].split(Pattern.quote(","))[1]));
- poi.getPoint().setY(Double.parseDouble(p[3].split(Pattern.quote(","))[0]));
-
- poiList.add(poi);
- segAux.seg.setPoiRoute("S");
- segAux.seg.setPoiRouteDetails((POIDetails[]) poiList.toArray());
- } catch (Exception ex) {
- }
- }
- }
- }
- }
- }
- }
- }
-
- if (Functions.IsNullOrEmpty(segAux.seg.getCommand())) {
- if (rs.length > 2) {
- if (paradas < rs.length - 1) {
- if (ro.getRouteDetails().isOptimizeRoute()) {
- if (rs.length >= 10) {
- segAux.seg.setCommand(comandoContinue);
-
- SegAux seg = new SegAux();
- seg.seg = segAux.seg;
- seg.seg.setDescription(rs[paradas].getDescription());
- seg.seg.setCommand("Parada " + paradas);
- seg.seg.setDistance(0);
- seg.seg.getPoint().setX(rs[paradas].getPoint().getX());
- seg.seg.getPoint().setY(rs[paradas].getPoint().getY());
- seg.vr = "";
- seg.vrPosition = 0;
-
- paradas++;
- segmentList.add(segAux);
- segmentList.add(seg);
- } else {
- segAux.seg.setCommand(comandoContinue);
-
- SegAux seg = new SegAux();
- seg.seg.setCommand(comandoContinue);
-
- for (int z = 0; z < rStopSelect.length; z++) {
- if (String.format("0.00000", rStopSelect[z].getPoint().getX()).equals(
- String.format("0.00000", segAux.seg.getPoint().getX()))
- && String.format("0.00000", segAux.seg.getPoint().getY()).equals(
- String.format("0.00000", rStopSelect[z].getPoint().getY()))) {
- seg.seg = segAux.seg;
- seg.seg.setDescription(rStopSelect[z].getDescription());
- seg.seg.setCommand("Parada " + paradas);
- seg.seg.setDistance(0);
- seg.seg.getPoint().setX(rStopSelect[z].getPoint().getX());
- seg.seg.getPoint().setY(rStopSelect[z].getPoint().getY());
- seg.vr = "";
- seg.vrPosition = 0;
- rStopSelect = removeRouteStop(rStopSelect, z);
- break;
- }
- }
-
- if (seg.seg.getCommand().toLowerCase().indexOf("parada") < 0) {
- List<RouteSummary> rsList = new ArrayList<RouteSummary>();
-
- for (int z = 0; z < rStopSelect.length; z++) {
- RouteSummary r = new RouteSummary();
- r.setDistance(Math.sqrt(Math
- .pow((rStopSelect[z].getPoint().getX() - segAux.seg.getPoint().getX()), 2)
- + Math.pow((rStopSelect[z].getPoint().getY() - segAux.seg.getPoint().getY()), 2)));
- r.setDescription(String.valueOf(z));
-
- rsList.add(r);
- }
-
- Collections.sort(rsList, COMPARATOR);
-
- /*
- * rsList.Sort(delegate(RouteSummary
- * p1, RouteSummary p2) { return
- * (Double
- * .parseDouble(p1.distance).
- * CompareTo (
- * Double.parseDouble(p2.distance)))
- * ; });
- */
-
- seg.seg = segAux.seg;
- seg.seg.setDescription(rStopSelect[Integer.parseInt(rsList.get(0).getDescription())].getDescription());
- seg.seg.setCommand("Parada " + paradas);
- seg.seg.setDistance(0);
- seg.seg.getPoint().setX(rStopSelect[Integer.parseInt(rsList.get(0).getDescription())].getPoint().getX());
- seg.seg.getPoint().setY(rStopSelect[Integer.parseInt(rsList.get(0).getDescription())].getPoint().getY());
- seg.vr = "";
- seg.vrPosition = 0;
- rStopSelect = removeRouteStop(rStopSelect, Integer.parseInt(rsList.get(0).getDescription()));
- }
-
- paradas++;
- segmentList.add(segAux);
- segmentList.add(seg);
- }
- } else {
- segAux.seg.setCommand(comandoContinue);
-
- SegAux seg = new SegAux();
- seg.seg = segAux.seg;
- seg.seg.setDescription(rs[paradas].getDescription());
- seg.seg.setCommand("Parada " + paradas);
- seg.seg.setDistance(0);
- seg.seg.getPoint().setX(rs[paradas].getPoint().getX());
- seg.seg.getPoint().setY(rs[paradas].getPoint().getY());
- seg.vr = "";
- seg.vrPosition = 0;
-
- paradas++;
-
- segmentList.add(segAux);
- segmentList.add(seg);
- }
- } else {
- segAux.seg.setCommand(comandoContinue);
-
- if (Functions.IsNullOrEmpty(segAux.seg.getCity().getName()) && segmentList.size() > 0)
- segAux.seg.setCity(segmentList.get(segmentList.size() - 1).seg.getCity());
-
- segmentList.add(segAux);
- }
- } else {
- segAux.seg.setCommand(comandoContinue);
-
- if (Functions.IsNullOrEmpty(segAux.seg.getCity().getName()) && segmentList.size() > 0)
- segAux.seg.setCity(segmentList.get(segmentList.size() - 1).seg.getCity());
-
- segmentList.add(segAux);
- }
- } else {
- if (Functions.IsNullOrEmpty(segAux.seg.getCity().getName()) && segmentList.size() > 0)
- segAux.seg.setCity(segmentList.get(segmentList.size() - 1).seg.getCity());
-
- segmentList.add(segAux);
- }
- }
- }
-
- SegAux segFim = new SegAux();
- segFim.seg = new SegmentDescription();
- segFim.seg.setDistance(0);
- segFim.seg.setCity(new City());
- segFim.seg.getCity().setName("");
- segFim.seg.getCity().setState("");
- segFim.seg.setCumulativeDistance(segmentList.get(segmentList.size() - 1).seg.getCumulativeDistance());
- segFim.segPosition = segmentList.size() + 1;
- segFim.seg.setCommand(comandoFimDaRota);
- segFim.seg.setDescription(rs[rs.length - 1].getDescription());
- segFim.seg.setPoint(new Point());
- segFim.seg.getPoint().setX(Functions.formatDouble(rs[rs.length - 1].getPoint().getX(), "0.00000"));
- segFim.seg.getPoint().setY(Functions.formatDouble(rs[rs.length - 1].getPoint().getY(), "0.00000"));
- segmentList.add(segFim);
-
- ret = new SegmentDescription[segmentList.size()];
-
- for (int cont = 0; cont < segmentList.size(); cont++)
- ret[cont] = segmentList.get(cont).seg;
-
- cumulativeDistance = 0;
- for (int x = 0; x < ret.length; x++) {
- cumulativeDistance += ret[x].getDistance();
- ret[x].setCumulativeDistance(cumulativeDistance);
- }
-
- ret = setToolFeeDB(ret, pedagioList, tollFeeCat);
-
- if (ro.getRouteDetails().getPoiRoute() != null)
- ret = setPoiRouteDB(ret, ro.getRouteDetails().getPoiRoute());
-
- List<SegmentDescription> segList = new ArrayList<SegmentDescription>();
- segList.add(ret[0]);
- // Verificar aqui
- if (ro.getRouteDetails().getDescriptionType() == 1) {
- double totalTime = 0;
-
- // totalTime = 0;
- // for (int x = 0; x < ret.length; x++) {
- // if (!ret[x].getTime().equals(""))
- // totalTime += Double.parseDouble(ret[x].getTime().substring(0,ret[x].getTime().indexOf(' ')));
- // }
-
- for (int x = 0; x < ret.length; x++) {
- if ( ret[x].getDescription().toUpperCase().indexOf("ROD.") >= 0 ||
- ret[x].getDescription().toUpperCase().indexOf("ESTR.") >= 0
- || !Functions.IsNullOrEmpty(ret[x].getTollFee()) || ret[x].getCommand().toLowerCase().contains("parada")
- || ret[x].getCommand().toLowerCase().contains("fim da")) {
- SegmentDescription seg = new SegmentDescription();
- if (!ret[x].getTime().equals(""))
- totalTime += Double.parseDouble(ret[x].getTime().substring(0,ret[x].getTime().indexOf(' ')));
- seg = ret[x];
- seg.setTime(totalTime + " sec");
- segList.add(seg);
- totalTime = 0;
- }else
- if (!ret[x].getTime().equals(""))
- totalTime += Double.parseDouble(ret[x].getTime().substring(0,ret[x].getTime().indexOf(' ')));
-
- }
-
- segList.add(ret[ret.length - 1]);
-
- ret = new SegmentDescription[segList.size()];
- ret = segList.toArray(new SegmentDescription[0]);
-
- for (int x = 1; x < ret.length - 2; x++) {
- if (!(ret[x].getCommand().toLowerCase().indexOf("parada") >= 0))
- ret[x].setCommand("Continue");
-
- if ((ret[x].getCommand().toLowerCase().indexOf("parada") >= 0))
- ret[x].setRoadType(ret[x - 1].getRoadType());
- }
-
- int qtdSeg = ret.length;
- SegmentDescription[] retAux = new SegmentDescription[qtdSeg];
- retAux = ret;
-
- // totalTime = 0;
- // for (int x = 0; x < ret.length; x++) {
- // if (!ret[x].getTime().equals(""))
- // totalTime += Double.parseDouble(ret[x].getTime().substring(0,ret[x].getTime().indexOf(' ')));
- // }
-
- Object[] obj = removeDuplicates(12, qtdSeg, retAux, ret, ro);
-
- ret = new SegmentDescription[0];
- ret = (SegmentDescription[]) obj[1];
- // totalTime = 0;
- // for (int x = 0; x < ret.length; x++) {
- // if (!ret[x].getTime().equals(""))
- // totalTime += Double.parseDouble(ret[x].getTime().substring(0,ret[x].getTime().indexOf(' ')));
- // }
-
- qtdSeg = (Integer) obj[0] + 1;
- ret = new SegmentDescription[0];
- ret = (SegmentDescription[]) obj[1];
-
- retAux = new SegmentDescription[qtdSeg];
-
- // String lastCity = "";
-
- for (int x = 0; x < qtdSeg; x++) {
- retAux[x] = new SegmentDescription();
- retAux[x].setCity(new City());
-
- if (x == 0) {
- // if (!Functions.IsNullOrEmpty(ret[x +
- // 1].getCity().getName()))
- // lastCity = ret[x + 1].getCity().getName();
-
- retAux[x].getCity().setName(ret[x + 1].getCity().getName());
- retAux[x].getCity().setState(ret[x + 1].getCity().getState());
- }
-
- retAux[x].getCity().setName(ret[x].getCity().getName());
- retAux[x].getCity().setState(ret[x].getCity().getState());
-
- retAux[x].setCommand(ret[x].getCommand());
- retAux[x].setCumulativeDistance(ret[x].getCumulativeDistance());
-
- retAux[x].setTime(ret[x].getTime());
-
- if (ret[x].getDescription().indexOf("passando") > 0)
- retAux[x].setDescription(ret[x].getDescription().substring(0, ret[x].getDescription().indexOf("passando") - 1));
- else
- retAux[x].setDescription(ret[x].getDescription());
-
- retAux[x].setDistance(ret[x].getDistance());
-
- retAux[x].setPoint(new Point());
- retAux[x].getPoint().setX(ret[x].getPoint().getX());
- retAux[x].getPoint().setY(ret[x].getPoint().getY());
- retAux[x].setRoadType(ret[x].getRoadType());
-
- retAux[x].setTollFee(ret[x].getTollFee());
- retAux[x].setTollFeeDetails(new TollFeeDetails());
- retAux[x].getTollFeeDetails().setAddress(ret[x].getTollFeeDetails().getAddress());
- retAux[x].getTollFeeDetails().setConcession(ret[x].getTollFeeDetails().getConcession());
- retAux[x].getTollFeeDetails().setDirection(ret[x].getTollFeeDetails().getDirection());
- retAux[x].getTollFeeDetails().setName(ret[x].getTollFeeDetails().getName());
- retAux[x].getTollFeeDetails().setPhone(ret[x].getTollFeeDetails().getPhone());
- retAux[x].getTollFeeDetails().setPrice(ret[x].getTollFeeDetails().getPrice());
- retAux[x].getTollFeeDetails().setPricePerAxle(ret[x].getTollFeeDetails().getPricePerAxle());
- retAux[x].getTollFeeDetails().setState(ret[x].getTollFeeDetails().getState());
-
- retAux[x].setPoiRoute(ret[x].getPoiRoute());
-
- if (ret[x].getPoiRouteDetails() != null) {
- retAux[x].setPoiRouteDetails(new POIDetails[ret[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < ret[x].getPoiRouteDetails().length; z++) {
- retAux[x].getPoiRouteDetails()[z] = new POIDetails();
- retAux[x].getPoiRouteDetails()[z].setAddressInfo(ret[x].getPoiRouteDetails()[z].getAddressInfo());
-
- retAux[x].getPoiRouteDetails()[z].setClientID(ret[x].getPoiRouteDetails()[z].getClientID());
- retAux[x].getPoiRouteDetails()[z].setName(ret[x].getPoiRouteDetails()[z].getName());
- retAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- retAux[x].getPoiRouteDetails()[z].getPoint().setX(ret[x].getPoiRouteDetails()[z].getPoint().getX());
- retAux[x].getPoiRouteDetails()[z].getPoint().setY(ret[x].getPoiRouteDetails()[z].getPoint().getY());
- retAux[x].getPoiRouteDetails()[z].setSource(ret[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- ret = new SegmentDescription[qtdSeg];
- ret = retAux;
-
- ret[0].setRoadType("O");
- ret[ret.length - 1].setRoadType("D");
- }
-
- if (ro.getRouteDetails().getDescriptionType() == 2) {
-
- }
-
- if (ro.getRouteDetails().getDescriptionType() == 10) {
- for (int x = 0; x < ret.length; x++) {
- ret[x].setDescription(ret[x].getDescription().replace(" Pista Lateral", "").replace(" - Pista Lateral", "")
- .replace("Ac. P/ ", "").replace("Rod ", "Rod. ").replace(" -", ""));
- }
-
- SegmentDescription[] _segmentDescriptionAux = ret;
- SegmentDescription[] _segmentDescription = ret;
- int qtdSeg = ret.length;
-
- Object[] obj = removeDuplicates(1, qtdSeg, _segmentDescriptionAux, _segmentDescription, ro);
-
- qtdSeg = (Integer) obj[0] + 1;
- _segmentDescription = new SegmentDescription[0];
- _segmentDescription = (SegmentDescription[]) obj[1];
-
- _segmentDescriptionAux = new SegmentDescription[qtdSeg];
-
- for (int x = 0; x < qtdSeg; x++) {
- _segmentDescriptionAux[x] = new SegmentDescription();
- _segmentDescriptionAux[x].setCity(new City());
- _segmentDescriptionAux[x].getCity().setName(_segmentDescription[x].getCity().getName());
- _segmentDescriptionAux[x].getCity().setState(_segmentDescription[x].getCity().getState());
-
- _segmentDescriptionAux[x].setCommand(_segmentDescription[x].getCommand());
- _segmentDescriptionAux[x].setCumulativeDistance(_segmentDescription[x].getCumulativeDistance());
- _segmentDescriptionAux[x].setDescription(_segmentDescription[x].getDescription());
- _segmentDescriptionAux[x].setDistance(_segmentDescription[x].getDistance());
-
- _segmentDescriptionAux[x].setPoint(new Point());
- _segmentDescriptionAux[x].getPoint().setX(_segmentDescription[x].getPoint().getX());
- _segmentDescriptionAux[x].getPoint().setY(_segmentDescription[x].getPoint().getY());
- _segmentDescriptionAux[x].setRoadType(_segmentDescription[x].getRoadType());
-
- _segmentDescriptionAux[x].setTollFee(_segmentDescription[x].getTollFee());
- _segmentDescriptionAux[x].setTollFeeDetails(new TollFeeDetails());
- _segmentDescriptionAux[x].getTollFeeDetails().setAddress(_segmentDescription[x].getTollFeeDetails().getAddress());
- _segmentDescriptionAux[x].getTollFeeDetails().setConcession(_segmentDescription[x].getTollFeeDetails().getConcession());
- _segmentDescriptionAux[x].getTollFeeDetails().setDirection(_segmentDescription[x].getTollFeeDetails().getDirection());
- _segmentDescriptionAux[x].getTollFeeDetails().setName(_segmentDescription[x].getTollFeeDetails().getName());
- _segmentDescriptionAux[x].getTollFeeDetails().setPhone(_segmentDescription[x].getTollFeeDetails().getPhone());
- _segmentDescriptionAux[x].getTollFeeDetails().setPrice(_segmentDescription[x].getTollFeeDetails().getPrice());
- _segmentDescriptionAux[x].getTollFeeDetails().setPricePerAxle(_segmentDescription[x].getTollFeeDetails().getPricePerAxle());
- _segmentDescriptionAux[x].getTollFeeDetails().setState(_segmentDescription[x].getTollFeeDetails().getState());
-
- _segmentDescriptionAux[x].setPoiRoute(_segmentDescription[x].getPoiRoute());
-
- if (_segmentDescription[x].getPoiRouteDetails() != null) {
- _segmentDescriptionAux[x].setPoiRouteDetails(new POIDetails[_segmentDescription[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < _segmentDescription[x].getPoiRouteDetails().length; z++) {
- _segmentDescriptionAux[x].getPoiRouteDetails()[z] = new POIDetails();
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setAddressInfo(_segmentDescription[x].getPoiRouteDetails()[z]
- .getAddressInfo());
-
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setClientID(_segmentDescription[x].getPoiRouteDetails()[z]
- .getClientID());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setName(_segmentDescription[x].getPoiRouteDetails()[z].getName());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setX(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getX());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setY(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getY());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setSource(_segmentDescription[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- _segmentDescription = new SegmentDescription[qtdSeg];
- _segmentDescription = _segmentDescriptionAux;
-
- Object[] obj1 = removeDuplicates(4, qtdSeg, _segmentDescriptionAux, _segmentDescription, ro);
-
- qtdSeg = (Integer) obj1[0] + 1;
- _segmentDescription = new SegmentDescription[0];
- _segmentDescription = (SegmentDescription[]) obj1[1];
-
- _segmentDescriptionAux = new SegmentDescription[qtdSeg];
-
- for (int x = 0; x < qtdSeg; x++) {
- _segmentDescriptionAux[x] = new SegmentDescription();
- _segmentDescriptionAux[x].setCity(new City());
-
- if (_segmentDescription[x].getCity().getName().contains("_"))
- _segmentDescriptionAux[x].getCity().setName(
- _segmentDescription[x].getCity().getName().substring(0, _segmentDescription[x].getCity().getName().length() - 1));
- else
- _segmentDescriptionAux[x].getCity().setName(_segmentDescription[x].getCity().getName());
-
- _segmentDescriptionAux[x].getCity().setState(_segmentDescription[x].getCity().getState());
-
- _segmentDescriptionAux[x].setCommand(_segmentDescription[x].getCommand());
- _segmentDescriptionAux[x].setCumulativeDistance(_segmentDescription[x].getCumulativeDistance());
- _segmentDescriptionAux[x].setDescription(_segmentDescription[x].getDescription());
- _segmentDescriptionAux[x].setDistance(_segmentDescription[x].getDistance());
-
- _segmentDescriptionAux[x].setPoint(new Point());
- _segmentDescriptionAux[x].getPoint().setX(_segmentDescription[x].getPoint().getX());
- _segmentDescriptionAux[x].getPoint().setY(_segmentDescription[x].getPoint().getY());
- _segmentDescriptionAux[x].setRoadType(_segmentDescription[x].getRoadType());
-
- _segmentDescriptionAux[x].setTollFee(_segmentDescription[x].getTollFee());
- _segmentDescriptionAux[x].setTollFeeDetails(new TollFeeDetails());
- _segmentDescriptionAux[x].getTollFeeDetails().setAddress(_segmentDescription[x].getTollFeeDetails().getAddress());
- _segmentDescriptionAux[x].getTollFeeDetails().setConcession(_segmentDescription[x].getTollFeeDetails().getConcession());
- _segmentDescriptionAux[x].getTollFeeDetails().setDirection(_segmentDescription[x].getTollFeeDetails().getDirection());
- _segmentDescriptionAux[x].getTollFeeDetails().setName(_segmentDescription[x].getTollFeeDetails().getName());
- _segmentDescriptionAux[x].getTollFeeDetails().setPhone(_segmentDescription[x].getTollFeeDetails().getPhone());
- _segmentDescriptionAux[x].getTollFeeDetails().setPrice(_segmentDescription[x].getTollFeeDetails().getPrice());
- _segmentDescriptionAux[x].getTollFeeDetails().setPricePerAxle(_segmentDescription[x].getTollFeeDetails().getPricePerAxle());
- _segmentDescriptionAux[x].getTollFeeDetails().setState(_segmentDescription[x].getTollFeeDetails().getState());
-
- _segmentDescriptionAux[x].setPoiRoute(_segmentDescription[x].getPoiRoute());
-
- if (_segmentDescription[x].getPoiRouteDetails() != null) {
- _segmentDescriptionAux[x].setPoiRouteDetails(new POIDetails[_segmentDescription[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < _segmentDescription[x].getPoiRouteDetails().length; z++) {
- _segmentDescriptionAux[x].getPoiRouteDetails()[z] = new POIDetails();
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setAddressInfo(_segmentDescription[x].getPoiRouteDetails()[z]
- .getAddressInfo());
-
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setClientID(_segmentDescription[x].getPoiRouteDetails()[z]
- .getClientID());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setName(_segmentDescription[x].getPoiRouteDetails()[z].getName());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setX(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getX());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setY(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getY());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setSource(_segmentDescription[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- ret = null;
- ret = _segmentDescriptionAux;
-
- segList = new ArrayList<SegmentDescription>();
- SegmentDescription seg = new SegmentDescription();
- String rodoviaAnterior = "";
- double distanciaRodovia = 0;
- int posicaoRodovia = 0;
-
- for (int x = 0; x < ret.length; x++) {
- if ((!ret[x].getDescription().toLowerCase().contains("rod.") && !ret[x].getDescription().toLowerCase().contains("rod ") && !ret[x]
- .getDescription().toLowerCase().contains("estr."))) {
- if (ret[x].getCommand().toLowerCase().contains("início") || ret[x].getCommand().toLowerCase().contains("fim")
- || ret[x].getDescription().toLowerCase().contains("retorno") || ret[x].getCommand().toLowerCase().contains("parada")) {
- seg = ret[x];
- segList.add(seg);
- seg = new SegmentDescription();
- } else {
- if (!Functions.IsNullOrEmpty(ret[x].getTollFee())) {
- seg = ret[x];
- segList.add(seg);
- seg = new SegmentDescription();
- } else {
- // seg = ret[x];
- seg.setDescription("Perímetro Urbano");
- seg.setCumulativeDistance(ret[x].getCumulativeDistance());
- seg.setDistance(seg.getDistance() + ret[x].getDistance());
- seg.setCity(ret[x].getCity());
- seg.setCommand("Continue");
- seg.setPoint(ret[x].getPoint());
- seg.setRoadType("P");
-
- if (!Functions.IsNullOrEmpty(seg.getPoiRoute()))
- seg.setPoiRoute(ret[x].getPoiRoute());
-
- if (ret[x].getPoiRouteDetails() != null) {
- if (seg.getPoiRouteDetails() == null) {
- seg.setPoiRouteDetails(new POIDetails[ret[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < ret[x].getPoiRouteDetails().length; z++) {
- seg.getPoiRouteDetails()[z] = new POIDetails();
- seg.getPoiRouteDetails()[z].setAddressInfo(ret[x].getPoiRouteDetails()[z].getAddressInfo());
-
- seg.getPoiRouteDetails()[z].setClientID(ret[x].getPoiRouteDetails()[z].getClientID());
- seg.getPoiRouteDetails()[z].setName(ret[x].getPoiRouteDetails()[z].getName());
- seg.getPoiRouteDetails()[z].setPoint(new Point());
- seg.getPoiRouteDetails()[z].getPoint().setX(ret[x].getPoiRouteDetails()[z].getPoint().getX());
- seg.getPoiRouteDetails()[z].getPoint().setY(ret[x].getPoiRouteDetails()[z].getPoint().getY());
- seg.getPoiRouteDetails()[z].setSource(ret[x].getPoiRouteDetails()[z].getSource());
- }
- } else {
-
- }
- }
-
- if (x + 1 < ret.length) {
- if (ret[x + 1].getDescription().toLowerCase().contains("rod.")
- || ret[x + 1].getDescription().toLowerCase().contains("estr.")
- || !Functions.IsNullOrEmpty(ret[x + 1].getTollFee())
- || ret[x + 1].getCommand().toLowerCase().contains("parada")
- || ret[x + 1].getCommand().toLowerCase().contains("início")
- || ret[x + 1].getDescription().toLowerCase().contains("retorno")
- || ret[x + 1].getCommand().toLowerCase().contains("fim")) {
- segList.add(seg);
- seg = new SegmentDescription();
- }
- }
- }
- }
- } else {
- if (!Functions.IsNullOrEmpty(ret[x].getTollFee())) {
- seg = ret[x];
- segList.add(seg);
- seg = new SegmentDescription();
-
- distanciaRodovia += ret[x].getDistance();
- } else {
- if (Functions.IsNullOrEmpty(rodoviaAnterior)) {
- rodoviaAnterior = ret[x].getDescription().replace(" Pista Lateral", "").replace(" - Pista Lateral", "")
- .replace("Ac. P/ ", "");
-
- // seg = ret[x];
- seg.setCity(new City());
- seg.setDescription("#Siga pela " + rodoviaAnterior);
- seg.setCumulativeDistance(0);
- seg.setCommand("");
- seg.setPoint(ret[x].getPoint());
- seg.setDistance(ret[x].getDistance());
-
- distanciaRodovia = ret[x].getDistance();
-
- segList.add(seg);
- seg = new SegmentDescription();
- posicaoRodovia = segList.size() - 1;
-
- segList.add(ret[x]);
- } else {
- if ((rodoviaAnterior.equals(ret[x].getDescription()) || rodoviaAnterior.contains(ret[x].getDescription()) || ret[x]
- .getDescription().contains(rodoviaAnterior))) {
- distanciaRodovia += ret[x].getDistance();
- segList.add(ret[x]);
-
- if (x + 1 < ret.length) {
- if ((!ret[x + 1].getDescription().toLowerCase().contains("rod ")
- && !ret[x + 1].getDescription().toLowerCase().contains("rod.") && !ret[x + 1].getDescription()
- .toLowerCase().contains("estr."))) {
- // segList.Add(seg);
- SegmentDescription[] segAux = new SegmentDescription[segList.size()];
-
- for (int c = 0; c < segList.size(); c++)
- segAux[c] = (SegmentDescription) segList.get(c);
-
- segAux[posicaoRodovia].setDistance(distanciaRodovia);
- segList.clear();
-
- for (int w = 0; w < segAux.length; w++)
- segList.add(segAux[w]);
-
- rodoviaAnterior = "";
- distanciaRodovia = 0;
- }
- }
- } else {
- SegmentDescription[] segAux = new SegmentDescription[segList.size()];
-
- for (int c = 0; c < segList.size(); c++)
- segAux[c] = (SegmentDescription) segList.get(c);
-
- segAux[posicaoRodovia].setDistance(distanciaRodovia);
- segList.clear();
-
- for (int w = 0; w < segAux.length; w++)
- segList.add(segAux[w]);
-
- rodoviaAnterior = ret[x].getDescription().replace(" Pista Lateral", "").replace(" - Pista Lateral", "")
- .replace("Ac. P/ ", "");
-
- // seg = ret[x];
- seg.setCity(new City());
- seg.setDescription("#Siga pela " + rodoviaAnterior);
- seg.setCumulativeDistance(0);
- seg.setCommand("");
- seg.setPoint(ret[x].getPoint());
- seg.setDistance(ret[x].getDistance());
-
- distanciaRodovia = ret[x].getDistance();
-
- segList.add(seg);
- seg = new SegmentDescription();
- posicaoRodovia = segList.size() - 1;
-
- segList.add(ret[x]);
- }
- }
- }
- }
- }
-
- ret = null;
- ret = new SegmentDescription[segList.size()];
-
- for (int c = 0; c < segList.size(); c++)
- ret[c] = (SegmentDescription) segList.get(c);
- }
-
- if (ro.getRouteDetails().getDescriptionType() == 3) {
- SegmentDescription[] _segmentDescriptionAux = ret;
- SegmentDescription[] _segmentDescription = ret;
- int qtdSeg = ret.length;
-
- Object[] obj1 = removeDuplicates(1, qtdSeg, _segmentDescriptionAux, _segmentDescription, ro);
-
- qtdSeg = (Integer) obj1[0] + 1;
- _segmentDescription = new SegmentDescription[0];
- _segmentDescription = (SegmentDescription[]) obj1[1];
-
- _segmentDescriptionAux = new SegmentDescription[qtdSeg];
-
- for (int x = 0; x < qtdSeg; x++) {
- _segmentDescriptionAux[x] = new SegmentDescription();
- _segmentDescriptionAux[x].setCity(new City());
- _segmentDescriptionAux[x].getCity().setName(_segmentDescription[x].getCity().getName());
- _segmentDescriptionAux[x].getCity().setState(_segmentDescription[x].getCity().getState());
-
- _segmentDescriptionAux[x].setCommand(_segmentDescription[x].getCommand());
- _segmentDescriptionAux[x].setCumulativeDistance(_segmentDescription[x].getCumulativeDistance());
- _segmentDescriptionAux[x].setDescription(_segmentDescription[x].getDescription());
- _segmentDescriptionAux[x].setDistance(_segmentDescription[x].getDistance());
-
- _segmentDescriptionAux[x].setPoint(new Point());
- _segmentDescriptionAux[x].getPoint().setX(_segmentDescription[x].getPoint().getX());
- _segmentDescriptionAux[x].getPoint().setY(_segmentDescription[x].getPoint().getY());
- _segmentDescriptionAux[x].setRoadType(_segmentDescription[x].getRoadType());
-
- _segmentDescriptionAux[x].setTollFee(_segmentDescription[x].getTollFee());
- _segmentDescriptionAux[x].setTollFeeDetails(new TollFeeDetails());
- _segmentDescriptionAux[x].getTollFeeDetails().setAddress(_segmentDescription[x].getTollFeeDetails().getAddress());
- _segmentDescriptionAux[x].getTollFeeDetails().setConcession(_segmentDescription[x].getTollFeeDetails().getConcession());
- _segmentDescriptionAux[x].getTollFeeDetails().setDirection(_segmentDescription[x].getTollFeeDetails().getDirection());
- _segmentDescriptionAux[x].getTollFeeDetails().setName(_segmentDescription[x].getTollFeeDetails().getName());
- _segmentDescriptionAux[x].getTollFeeDetails().setPhone(_segmentDescription[x].getTollFeeDetails().getPhone());
- _segmentDescriptionAux[x].getTollFeeDetails().setPrice(_segmentDescription[x].getTollFeeDetails().getPrice());
- _segmentDescriptionAux[x].getTollFeeDetails().setPricePerAxle(_segmentDescription[x].getTollFeeDetails().getPricePerAxle());
- _segmentDescriptionAux[x].getTollFeeDetails().setState(_segmentDescription[x].getTollFeeDetails().getState());
-
- _segmentDescriptionAux[x].setPoiRoute(_segmentDescription[x].getPoiRoute());
-
- if (_segmentDescription[x].getPoiRouteDetails() != null) {
- _segmentDescriptionAux[x].setPoiRouteDetails(new POIDetails[_segmentDescription[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < _segmentDescription[x].getPoiRouteDetails().length; z++) {
- _segmentDescriptionAux[x].getPoiRouteDetails()[z] = new POIDetails();
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setAddressInfo(_segmentDescription[x].getPoiRouteDetails()[z]
- .getAddressInfo());
-
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setClientID(_segmentDescription[x].getPoiRouteDetails()[z]
- .getClientID());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setName(_segmentDescription[x].getPoiRouteDetails()[z].getName());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setX(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getX());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setY(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getY());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setSource(_segmentDescription[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- _segmentDescription = new SegmentDescription[qtdSeg];
- _segmentDescription = _segmentDescriptionAux;
-
- Object[] obj11 = removeDuplicates(4, qtdSeg, _segmentDescriptionAux, _segmentDescription, ro);
-
- qtdSeg = (Integer) obj11[0] + 1;
- _segmentDescription = new SegmentDescription[0];
- _segmentDescription = (SegmentDescription[]) obj11[1];
-
- _segmentDescriptionAux = new SegmentDescription[qtdSeg];
-
- for (int x = 0; x < qtdSeg; x++) {
- _segmentDescriptionAux[x] = new SegmentDescription();
- _segmentDescriptionAux[x].setCity(new City());
-
- if (_segmentDescription[x].getCity().getName().contains("_"))
- _segmentDescriptionAux[x].getCity().setName(
- _segmentDescription[x].getCity().getName().substring(0, _segmentDescription[x].getCity().getName().length() - 1));
- else
- _segmentDescriptionAux[x].getCity().setName(_segmentDescription[x].getCity().getName());
-
- _segmentDescriptionAux[x].getCity().setState(_segmentDescription[x].getCity().getState());
-
- _segmentDescriptionAux[x].setCommand(_segmentDescription[x].getCommand());
- _segmentDescriptionAux[x].setCumulativeDistance(_segmentDescription[x].getCumulativeDistance());
- _segmentDescriptionAux[x].setDescription(_segmentDescription[x].getDescription());
- _segmentDescriptionAux[x].setDistance(_segmentDescription[x].getDistance());
-
- _segmentDescriptionAux[x].setPoint(new Point());
- _segmentDescriptionAux[x].getPoint().setX(_segmentDescription[x].getPoint().getX());
- _segmentDescriptionAux[x].getPoint().setY(_segmentDescription[x].getPoint().getY());
- _segmentDescriptionAux[x].setRoadType(_segmentDescription[x].getRoadType());
-
- _segmentDescriptionAux[x].setTollFee(_segmentDescription[x].getTollFee());
- _segmentDescriptionAux[x].setTollFeeDetails(new TollFeeDetails());
- _segmentDescriptionAux[x].getTollFeeDetails().setAddress(_segmentDescription[x].getTollFeeDetails().getAddress());
- _segmentDescriptionAux[x].getTollFeeDetails().setConcession(_segmentDescription[x].getTollFeeDetails().getConcession());
- _segmentDescriptionAux[x].getTollFeeDetails().setDirection(_segmentDescription[x].getTollFeeDetails().getDirection());
- _segmentDescriptionAux[x].getTollFeeDetails().setName(_segmentDescription[x].getTollFeeDetails().getName());
- _segmentDescriptionAux[x].getTollFeeDetails().setPhone(_segmentDescription[x].getTollFeeDetails().getPhone());
- _segmentDescriptionAux[x].getTollFeeDetails().setPrice(_segmentDescription[x].getTollFeeDetails().getPrice());
- _segmentDescriptionAux[x].getTollFeeDetails().setPricePerAxle(_segmentDescription[x].getTollFeeDetails().getPricePerAxle());
- _segmentDescriptionAux[x].getTollFeeDetails().setState(_segmentDescription[x].getTollFeeDetails().getState());
-
- _segmentDescriptionAux[x].setPoiRoute(_segmentDescription[x].getPoiRoute());
-
- if (_segmentDescription[x].getPoiRouteDetails() != null) {
- _segmentDescriptionAux[x].setPoiRouteDetails(new POIDetails[_segmentDescription[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < _segmentDescription[x].getPoiRouteDetails().length; z++) {
- _segmentDescriptionAux[x].getPoiRouteDetails()[z] = new POIDetails();
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setAddressInfo(_segmentDescription[x].getPoiRouteDetails()[z]
- .getAddressInfo());
-
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setClientID(_segmentDescription[x].getPoiRouteDetails()[z]
- .getClientID());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setName(_segmentDescription[x].getPoiRouteDetails()[z].getName());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setX(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getX());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].getPoint().setY(
- _segmentDescription[x].getPoiRouteDetails()[z].getPoint().getY());
- _segmentDescriptionAux[x].getPoiRouteDetails()[z].setSource(_segmentDescription[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- ret = null;
- ret = _segmentDescriptionAux;
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
-
- if (!Functions.IsNullOrEmpty(ro.getDataSource())) {
- if (ro.getDataSource().toUpperCase().equals("BR")) {
- for (int x = 1; x < ret.length - 1; x++) {
- if (!(ret[x].getCommand().toLowerCase().indexOf("parada") >= 0))
- ret[x].setCommand("Continue");
-
- if ((ret[x].getCommand().toLowerCase().indexOf("parada") >= 0))
- ret[x].setRoadType(ret[x - 1].getRoadType());
- }
-
- int qtdSeg = ret.length;
- SegmentDescription[] retAux = new SegmentDescription[qtdSeg];
- retAux = ret;
-
- Object[] obj11 = removeDuplicates(10, qtdSeg, retAux, ret, ro);
-
- qtdSeg = (Integer) obj11[0] + 1;
- ret = new SegmentDescription[0];
- ret = (SegmentDescription[]) obj11[1];
-
- retAux = new SegmentDescription[qtdSeg];
-
- String lastCity = "";
-
- for (int x = 0; x < qtdSeg; x++) {
- retAux[x] = new SegmentDescription();
- retAux[x].setCity(new City());
-
- if (x == 0) {
- if (!Functions.IsNullOrEmpty(ret[x + 1].getCity().getName()))
- lastCity = ret[x + 1].getCity().getName();
-
- // retAux[x].city.name = ret[x + 1].city.name;
- // retAux[x].city.state = ret[x + 1].city.state;
- }
-
- if (x > 0) {
- if ((ret[x].getCity().getName().toLowerCase().equals(lastCity.toLowerCase()))) {
- retAux[x].getCity().setName("");
- retAux[x].getCity().setState(ret[x].getCity().getState());
- } else {
- if (!Functions.IsNullOrEmpty(ret[x].getCity().getName()))
- lastCity = ret[x].getCity().getName();
-
- retAux[x].getCity().setName(ret[x].getCity().getName());
- retAux[x].getCity().setState(ret[x].getCity().getState());
- }
- }
-
- retAux[x].setCommand(ret[x].getCommand());
- retAux[x].setCumulativeDistance(ret[x].getCumulativeDistance());
-
- if (ret[x].getDescription().indexOf("passando") > 0)
- retAux[x].setDescription(ret[x].getDescription().substring(0, ret[x].getDescription().indexOf("passando") - 1));
- else
- retAux[x].setDescription(ret[x].getDescription());
-
- retAux[x].setDistance(ret[x].getDistance());
-
- retAux[x].setPoint(new Point());
- retAux[x].getPoint().setX(ret[x].getPoint().getX());
- retAux[x].getPoint().setY(ret[x].getPoint().getY());
- retAux[x].setRoadType(ret[x].getRoadType());
-
- retAux[x].setTollFee(ret[x].getTollFee());
- retAux[x].setTollFeeDetails(new TollFeeDetails());
- retAux[x].getTollFeeDetails().setAddress(ret[x].getTollFeeDetails().getAddress());
- retAux[x].getTollFeeDetails().setConcession(ret[x].getTollFeeDetails().getConcession());
- retAux[x].getTollFeeDetails().setDirection(ret[x].getTollFeeDetails().getDirection());
- retAux[x].getTollFeeDetails().setName(ret[x].getTollFeeDetails().getName());
- retAux[x].getTollFeeDetails().setPhone(ret[x].getTollFeeDetails().getPhone());
- retAux[x].getTollFeeDetails().setPrice(ret[x].getTollFeeDetails().getPrice());
- retAux[x].getTollFeeDetails().setPricePerAxle(ret[x].getTollFeeDetails().getPricePerAxle());
- retAux[x].getTollFeeDetails().setState(ret[x].getTollFeeDetails().getState());
-
- retAux[x].setPoiRoute(ret[x].getPoiRoute());
-
- if (ret[x].getPoiRouteDetails() != null) {
- retAux[x].setPoiRouteDetails(new POIDetails[ret[x].getPoiRouteDetails().length]);
-
- for (int z = 0; z < ret[x].getPoiRouteDetails().length; z++) {
- retAux[x].getPoiRouteDetails()[z] = new POIDetails();
- retAux[x].getPoiRouteDetails()[z].setAddressInfo(ret[x].getPoiRouteDetails()[z].getAddressInfo());
-
- retAux[x].getPoiRouteDetails()[z].setClientID(ret[x].getPoiRouteDetails()[z].getClientID());
- retAux[x].getPoiRouteDetails()[z].setName(ret[x].getPoiRouteDetails()[z].getName());
- retAux[x].getPoiRouteDetails()[z].setPoint(new Point());
- retAux[x].getPoiRouteDetails()[z].getPoint().setX(ret[x].getPoiRouteDetails()[z].getPoint().getX());
- retAux[x].getPoiRouteDetails()[z].getPoint().setY(ret[x].getPoiRouteDetails()[z].getPoint().getY());
- retAux[x].getPoiRouteDetails()[z].setSource(ret[x].getPoiRouteDetails()[z].getSource());
- }
- }
- }
-
- ret = new SegmentDescription[qtdSeg];
- ret = retAux;
-
- ret[0].setRoadType("O");
- ret[ret.length - 1].setRoadType("D");
-
- for (int x = 1; x < ret.length - 1; x++)
- ret[x].setRoadType(ret[x].getRoadType() + "-" + ret[x + 1].getRoadType());
- }
- }
-
- for (int x = 1; x < ret.length - 1; x++) {
- try {
- ret[x].setDistance(Functions.formatDouble(ret[x].getDistance(), "0.00"));
- ret[x].setCumulativeDistance(Functions.formatDouble(ret[x].getCumulativeDistance(), "0.00"));
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- }
-
- return ret;
- }
-
- private Object[] removeDuplicates(int type, int qtdSeg, SegmentDescription[] _segmentDescriptionAux, SegmentDescription[] _segmentDescription,
- RouteProximityOptions ro) {
- double _cumulativeDistance = 0;
- int cont = 0;
-
- // type:
- // 1 - remove duplicados
- // 2 - ignora troca de piso
- // 3 - ignora troca de cidade
- // 4 - agrupamento de cidades
- // 10 - remove duplicados BR
-
- String fim, parada;
- parada = "parada";
- fim = "fim";
-
- if (ro.getLanguage().equals("spanish")) {
- parada = "parada";
- fim = "fin";
- }
-
- if (ro.getLanguage().equals("portuguese")) {
- parada = "parada";
- fim = "fim";
- }
-
- if (ro.getLanguage().equals("english")) {
- parada = "stop";
- fim = "arrive";
- }
- if (ro.getLanguage().equals("espanhol")) {
- parada = "parada";
- fim = "fin";
- }
- if (ro.getLanguage().equals("portugues")) {
- parada = "parada";
- fim = "fim";
- }
- if (ro.getLanguage().equals("ingles")) {
- parada = "stop";
- fim = "arrive";
- }
- if (ro.getLanguage().equals("alemao")) {
- parada = "parada";
- fim = "fim";
- }
- for (int i = 0; i < qtdSeg; i++) {
- if (type != 12) {
- _cumulativeDistance += _segmentDescriptionAux[i].getDistance();
- _segmentDescriptionAux[i].setDistance(_segmentDescriptionAux[i].getDistance());
- _segmentDescriptionAux[i].setCumulativeDistance(_cumulativeDistance);
- } else {
- _segmentDescriptionAux[i].setDistance(_segmentDescriptionAux[i].getDistance());
- _segmentDescriptionAux[i].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
- }
-
- if (_segmentDescriptionAux[i].getDescription() == null)
- _segmentDescriptionAux[i].setDescription("");
- if (_segmentDescriptionAux[i].getCity().getName() == null)
- _segmentDescriptionAux[i].getCity().setName("");
-
- if (i > 0) {
- switch (type) {
- case 1: {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getTollFee() != null && _segmentDescription[cont].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null && _segmentDescription[cont].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())
- && _segmentDescriptionAux[i].getRoadType().equals(_segmentDescription[cont].getRoadType())
- && _segmentDescriptionAux[i].getCity().getName().equals(_segmentDescription[cont].getCity().getName())) {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance() + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- _segmentDescription[cont].setPoint(_segmentDescriptionAux[i].getPoint());
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- _segmentDescription[cont].setPoint(_segmentDescriptionAux[i].getPoint());
-
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- }
- } else {
- try {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != null || _segmentDescriptionAux[i].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- } catch (Exception ex) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- break;
- case 2: {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getTollFee() != null && _segmentDescription[cont].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null && _segmentDescription[cont].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())
- && _segmentDescriptionAux[i].getCity().getName().equals(_segmentDescription[cont].getCity().getName())) {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance() + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
-
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- }
- } else {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != null || _segmentDescriptionAux[i].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- }
- break;
- case 3: {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getTollFee() != null && _segmentDescription[cont].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null && _segmentDescription[cont].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())) {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance() + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
-
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- }
- } else {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != null || _segmentDescriptionAux[i].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- }
- break;
- case 10: {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getTollFee() != null && _segmentDescription[cont].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null && _segmentDescription[cont].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())
- && _segmentDescriptionAux[i].getRoadType().equals(_segmentDescription[cont].getRoadType())
- && (_segmentDescriptionAux[i].getCity().getName().equals(_segmentDescription[cont].getCity().getName()) || (_segmentDescriptionAux[i]
- .getCity().getName().equals("") || _segmentDescription[cont].getCity().getName().equals("")))) {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance() + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
-
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- }
- } else {
- try {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != null || _segmentDescriptionAux[i].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- } catch (Exception ex) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- break;
- case 12: {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getTollFee() != null && _segmentDescription[cont].getTollFee() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null && _segmentDescription[cont].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- break;
- }
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())
- && _segmentDescriptionAux[i].getRoadType().equals(_segmentDescription[cont].getRoadType())
- && (_segmentDescriptionAux[i].getCity().getName().equals(_segmentDescription[cont].getCity().getName()) || (_segmentDescriptionAux[i]
- .getCity().getName().equals("") || _segmentDescription[cont].getCity().getName().equals("")))) {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance() + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != null) {
- _segmentDescription[cont].setTollFee(_segmentDescriptionAux[i].getTollFee());
- _segmentDescription[cont].setTollFeeDetails(_segmentDescriptionAux[i].getTollFeeDetails());
-
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- }
-
- if (_segmentDescriptionAux[i].getPoiRoute() != null) {
- _segmentDescription[cont].setPoiRoute(_segmentDescriptionAux[i].getPoiRoute());
- _segmentDescription[cont].setPoiRouteDetails(_segmentDescriptionAux[i].getPoiRouteDetails());
- }
- }
- } else {
- try {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != null || _segmentDescriptionAux[i].getPoiRoute() != null) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- } catch (Exception ex) {
- cont++;
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- break;
- case 4: {
- String cities = "";
-
- if (_segmentDescriptionAux[i].getDescription().equals(_segmentDescription[cont].getDescription())
- && _segmentDescriptionAux[i].getRoadType().equals(_segmentDescription[cont].getRoadType())) {
- if (_segmentDescriptionAux[i].getTollFee() != "" || _segmentDescriptionAux[i].getPoiRoute() != ""
- || _segmentDescription[cont].getPoiRoute() != "" || _segmentDescription[cont].getTollFee() != "") {
- cont++;
- cities = "";
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if ((cities.indexOf(_segmentDescriptionAux[i].getCity().getName()) > -1 || cities.indexOf(_segmentDescription[cont]
- .getCity().getName()) > -1)) {
- String[] info = cities.split(Pattern.quote("_"));
-
- for (int x = 0; x < info.length; x++) {
- if (!Functions.IsNullOrEmpty(_segmentDescriptionAux[i].getCity().getName())) {
- if (info[x].indexOf(_segmentDescriptionAux[i].getCity().getName().replace("_", "")) > -1) {
- double km = Double.parseDouble(info[x].split(Pattern.quote("|"))[1])
- + _segmentDescriptionAux[i].getDistance();
-
- cities = cities.replace(info[x], _segmentDescriptionAux[i].getCity().getName().replace("_", "") + "|"
- + km);
- }
- }
- }
-
- info = cities.split(Pattern.quote("_"));
-
- for (int x = 0; x < info.length; x++) {
- if (info[x].indexOf(_segmentDescription[cont].getCity().getName().replace("_", "")) > -1) {
- double km = Double.parseDouble(info[x].split(Pattern.quote("|"))[1])
- + _segmentDescription[cont].getDistance();
-
- cities = cities.replace(info[x], _segmentDescription[cont].getCity().getName().replace("_", "") + "|" + km);
- }
- }
- } else {
- if (_segmentDescriptionAux[i].getCity().getName() != _segmentDescription[cont].getCity().getName()) {
- if (_segmentDescription[cont].getCity().getName().split(Pattern.quote("_")).length > 2)
- cities += _segmentDescription[cont].getCity().getName() + _segmentDescriptionAux[i].getCity().getName() + ";"
- + _segmentDescriptionAux[i].getCity().getState() + "|" + _segmentDescriptionAux[i].getDistance()
- + "_";
- else
- cities += _segmentDescription[cont].getCity().getName() + ";"
- + _segmentDescription[cont].getCity().getState() + "|" + _segmentDescription[cont].getDistance()
- + "_" + _segmentDescriptionAux[i].getCity().getName() + ";"
- + _segmentDescriptionAux[i].getCity().getState() + "|" + _segmentDescriptionAux[i].getDistance()
- + "_";
- } else {
- if (cities != "")
- cities += _segmentDescriptionAux[i].getCity().getName() + ";"
- + _segmentDescriptionAux[i].getCity().getState() + "|"
- + (_segmentDescriptionAux[i].getDistance() + _segmentDescription[cont].getDistance()) + "_";
- }
- }
-
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- _segmentDescription[cont].setDistance(_segmentDescription[cont].getDistance()
- + _segmentDescriptionAux[i].getDistance());
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
-
- if (cities != "")
- _segmentDescription[cont].getCity().setName(cities);
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != "" || _segmentDescriptionAux[i].getPoiRoute() != "") {
- cont++;
- cities = "";
-
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- } else {
- if (_segmentDescriptionAux[i].getTollFee() != "" || _segmentDescriptionAux[i].getPoiRoute() != ""
- || _segmentDescription[cont].getPoiRoute() != "" || _segmentDescription[cont].getTollFee() != "") {
- cont++;
- cities = "";
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getDistance() > 0) {
- cont++;
- cities = "";
-
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- } else {
- if (_segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(fim) >= 0
- || _segmentDescriptionAux[i].getCommand().toLowerCase().indexOf(parada) >= 0
- || _segmentDescriptionAux[i].getTollFee() != "" || _segmentDescriptionAux[i].getPoiRoute() != "") {
- cont++;
- cities = "";
-
- _segmentDescription[cont].setCumulativeDistance(_segmentDescriptionAux[i].getCumulativeDistance());
- _segmentDescription[cont] = _segmentDescriptionAux[i];
- }
- }
- }
- }
- }
- break;
- }
- } else {
- _segmentDescription[i] = _segmentDescriptionAux[i];
- }
- }
-
- Object[] obj = new Object[2];
- obj[0] = cont;
- obj[1] = _segmentDescription;
-
- return obj;
- }
-
- RouteStop[] removeRouteStop(RouteStop[] routeStop, int index) {
- int add = 0;
- RouteStop[] rs = new RouteStop[routeStop.length - 1];
- for (int i = 0; i < routeStop.length; i++) {
- if (i != index) {
- rs[add] = routeStop[i];
- add++;
- }
- }
- return rs;
- }
-
- /*
- * public Point[] convertFromDecarta(int precision, String coords) {
- * List<Point> ptList = new List<Point>(); List<System.Drawing.Point>
- * ptListP = new List<System.Drawing.Point>();
- *
- * int y = 0;
- *
- * String format = "0.";
- *
- * for (int x = 0; x < precision; x++) format += "0";
- *
- * String[] co = coords.split(Pattern.quote(",");
- *
- * for (int z = 0; z < co.length; z++) { if ((Convert.ToInt64(co[z +
- * 1]).ToString().replace("|", "").length < (precision + 2))) { Point pt =
- * new Point(); pt.y =
- * Double.parseDouble(((Convert.ToInt64(ptList[y].y.ToString
- * (format).replace(",", "").replace(".", "")) + Convert.ToInt64(co[z])) *
- * Math.Pow(10, -precision)).ToString(format)); pt.x =
- * Double.parseDouble(((Convert
- * .ToInt64(ptList[y].x.ToString(format).replace(",", "").replace(".", ""))
- * + Convert.ToInt64(co[z + 1])) * Math.Pow(10,
- * -precision)).ToString(format));
- *
- * ptList.Add(pt);
- *
- * y++; } else { Point pt = new Point(); pt.y =
- * Double.parseDouble((Convert.ToInt64(co[z]) * Math.Pow(10,
- * -precision)).ToString(format)); pt.x =
- * Double.parseDouble((Convert.ToInt64(co[z + 1]) * Math.Pow(10,
- * -precision)).ToString(format));
- *
- * ptList.Add(pt); }
- *
- * z++; }
- *
- * return ptList.ToArray(); }
- */
-
- public String Translate(String text, String language) {
- // ActionStay = se quede en la
- // ActionGo = sigue
- // ActionStraight = delante
- // ActionBear = se quede en la
- // ActionTurn = doble a la
- // ActionMakeSharp = hace fuerte curva a la
- // ActionContinue = sigue
- // ActionBack = vuelte
- // ActionSideRight = derecha
- // ActionSideLeft = izquierda
- // ActionTakeRamp = sube la rampa
- // ActionOntoRamp = en la rampa
-
- if (language.equals("espanhol")) {
- if (text.toLowerCase().equals("make a left hand loop"))
- text = "Doble a la izquierda";
-
- if (text.toLowerCase().equals("make a u-turn"))
- text = "Coge el retorno";
-
- if (text.toLowerCase().equals("turn hard left"))
- text = "Hace fuerte curva a la izquierda";
-
- if (text.toLowerCase().equals("turn left"))
- text = "Doble a la izquierda";
-
- if (text.toLowerCase().equals("bear left"))
- text = "Se quede en la izquierda";
-
- if (text.toLowerCase().equals("continue"))
- text = "Sigue";
-
- if (text.toLowerCase().equals("bear right"))
- text = "Se quede en la derecha";
-
- if (text.toLowerCase().equals("turn right"))
- text = "Doble a la derecha";
-
- if (text.toLowerCase().equals("turn hard right"))
- text = "Hace fuerte curva a la derecha";
-
- if (text.toLowerCase().equals("make a right u-turn"))
- text = "Coge el retorno derecha";
-
- if (text.toLowerCase().equals("make a right hand loop"))
- text = "Doble a la direita";
-
- if (text.toLowerCase().equals("merge"))
- text = "Sigue en la unificaci?n";
- }
-
- if (language.equals("portugues") || Functions.IsNullOrEmpty(language)) {
- if (text.toLowerCase().equals("make a left hand loop"))
- text = "Vire à esquerda";
-
- if (text.toLowerCase().equals("make a u-turn"))
- text = "Pegue o retorno";
-
- if (text.toLowerCase().equals("turn hard left"))
- text = "Faça curva acentuada à esquerda";
-
- if (text.toLowerCase().equals("turn left"))
- text = "Vire à esquerda";
-
- if (text.toLowerCase().equals("bear left"))
- text = "Permaneça à esquerda";
-
- if (text.toLowerCase().equals("continue"))
- text = "Continue";
-
- if (text.toLowerCase().equals("bear right"))
- text = "Permaneça à direita";
-
- if (text.toLowerCase().equals("turn right"))
- text = "Vire à direita";
-
- if (text.toLowerCase().equals("turn hard right"))
- text = "Faça curva acentuada à direita";
-
- if (text.toLowerCase().equals("make a right u-turn"))
- text = "Pegue o retorno da direita";
-
- if (text.toLowerCase().equals("make a right hand loop"))
- text = "Vire à direita";
-
- if (text.toLowerCase().equals("merge"))
- text = "Siga na unificação";
- }
-
- return text;
- }
-
- /*
- * public String convertToDecarta(int precision, String coords) { String
- * coordsDecarta = "";
- *
- * if (!Functions.IsNullOrEmpty(coords)) { String[] coord;
- *
- * if (coords.substring(coords.length - 1, 1) == ";") coords =
- * coords.Remove(coords.length - 1, 1);
- *
- * coord = coords.split(Pattern.quote(";"); Int64 lngInt, latInt, lngIntNew,
- * latIntNew; double lng, lat, pow; pow = Math.Pow(10, precision); lng =
- * double.Parse(coord[0].ToString().split(Pattern.quote(" ")[0].replace('.',
- * ',")); lat =
- * double.Parse(coord[0].ToString().split(Pattern.quote(" ")[1].replace('.',
- * ',")); lngInt = Convert.ToInt64(lng * pow); latInt = Convert.ToInt64(lat
- * * pow);
- *
- * coordsDecarta = latInt + "," + lngInt;
- *
- * for (int x = 1; x < coord.length; x++) { lng =
- * double.Parse(coord[x].ToString().split(Pattern.quote(" ")[0].replace('.',
- * ',")); lat =
- * double.Parse(coord[x].ToString().split(Pattern.quote(" ")[1].replace('.',
- * ',")); lngIntNew = Convert.ToInt64(lng * pow); latIntNew =
- * Convert.ToInt64(lat * pow); coordsDecarta += "," + (latIntNew - latInt) +
- * "," + (lngIntNew - lngInt); lngInt = lngIntNew; latInt = latIntNew; } }
- *
- * return coordsDecarta; }
- */
-
- public SegmentDescription[] setToolFeeDB(SegmentDescription[] ret, List<TollFeeAux> pedagioList, int tollFeeCat) {
- totalPedagios = 0;
-
- try {
- if (pedagioList.size() > 0) {
- String pedList = "";
-
- for (int w = 0; w < pedagioList.size(); w++)
- pedList += pedagioList.get(w).getID() + ",";
-
- pedList = pedList.substring(0, pedList.length() - 1);
-
- String sql = "SELECT X, Y, ID_ESTABELECIMENTO_EXTERNO, NOME, SENTIDO, ENDERECO, CONCESSION, TELEFONE, ESTADO, VALOR, (TIPO"
- + tollFeeCat + ") as VALORCAT";
- sql += " From TB_MAPLINKRODOVIAS_TODAS_PEDAGIOS";
- sql += " WHERE ID_ESTABELECIMENTO_EXTERNO IN (" + pedList + ")";
-
- // busca no banco de dados as informa??es dos municipio, ped?gio
- // e info clientes
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery(sql.toUpperCase());
-
- while (rr.next()) {
- for (int w = 0; w < ret.length; w++) {
- if (!Functions.IsNullOrEmpty(ret[w].getTollFee())) {
- if (ret[w].getTollFeeDetails().getName().equals(rr.getString("ID_ESTABELECIMENTO_EXTERNO"))) {
- TollFeeDetails tollFeeDetails = new TollFeeDetails();
-
- tollFeeDetails.setName(rr.getString("NOME"));
- tollFeeDetails.setName(tollFeeDetails.getName().replace("=", ""));
- tollFeeDetails.setDirection(rr.getString("SENTIDO"));
- tollFeeDetails.setAddress(rr.getString("ENDERECO"));
- tollFeeDetails.setConcession(rr.getString("CONCESSION"));
- tollFeeDetails.setPhone(rr.getString("TELEFONE"));
- tollFeeDetails.setState(rr.getString("ESTADO"));
- tollFeeDetails.setPricePerAxle(Double.parseDouble(rr.getString("VALOR").replace(",", ".")));
- tollFeeDetails.setPrice(Double.parseDouble(rr.getString("VALORCAT").replace(",", ".")));
- totalPedagios += tollFeeDetails.getPrice();
-
- ret[w].setTollFeeDetails(tollFeeDetails);
- }
- }
- }
- }
-
- rr.close();
- st.close();
- } catch (SQLException e1) {
-
- } finally {
- con.close();
- }
- }
- } catch (Exception ex) {
- }
-
- return ret;
- }
-
- private boolean ValidaCitiesTaxiFare(String[] City) {
- boolean retorno = false;
- String anterior = City[0];
-
- try {
- for (int x = 0; x < City.length; x++) {
- if (City[x].equals(anterior)) {
- anterior = City[x];
- } else
- return retorno;
- }
-
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery("SELECT * FROM TB_TAXIFARE WHERE NOME IN ('" + City[0].toUpperCase() + "')");
-
- if (rr.next()) {
- retorno = true;
- }
-
- rr.close();
- st.close();
- } catch (Exception ex) {
- } finally {
- con.close();
- }
- } catch (Exception ex) {
- }
-
- return retorno;
- }
-
- private SegmentDescription[] setPoiRouteDB(SegmentDescription[] segmentDescription, String[] poiRoute) {
- String sql = "";
- List<POIDetails> poiDetailsList = new ArrayList<POIDetails>();
- boolean avaiable;
-
- try {
- for (int i = 0; i < segmentDescription.length; i++) {
- if (!Functions.IsNullOrEmpty(segmentDescription[i].getPoiRoute())) {
- poiDetailsList.clear();
- for (int x = 0; x < segmentDescription[i].getPoiRouteDetails().length; x++) {
- avaiable = false;
- getPoiRouteDBFields(segmentDescription[i].getPoiRouteDetails()[x]);
- for (int z = 0; z < poiRoute.length; z++) {
- if (poiSegSource != null) {
- if (poiSegSource.toLowerCase().indexOf(poiRoute[z].toLowerCase()) > -1) {
- avaiable = true;
- break;
- }
- }
- }
- if (poiDataBase.equals("") || poiFieldList.equals("") || poiSource.equals(""))
- avaiable = false;
-
- if (avaiable) {
- Connection con = dataBase.getConnection(poiDataBase);
-
- sql = "SELECT " + poiFieldList;
- sql += " FROM " + poiSource;
- sql += " WHERE (ID_ESTABELECIMENTO_EXTERNO in ("
- + segmentDescription[i].getPoiRouteDetails()[x].getClientID().substring(
- segmentDescription[i].getPoiRouteDetails()[x].getClientID().indexOf(':') + 1) + ")) and X is not null";
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery(sql.toUpperCase());
-
- while (rr.next()) {
- POIDetails pd = new POIDetails();
- pd.setClientID(rr.getString(1));
- pd.setName(rr.getString(2));
- pd.setAddressInfo(rr.getString(3));
- pd.getPoint().setX(rr.getDouble(4));
- pd.getPoint().setY(rr.getDouble(5));
- pd.setSource(poiSource);
-
- poiDetailsList.add(pd);
- }
-
- rr.close();
- st.close();
- } catch (Exception ex) {
- } finally {
- con.close();
- }
- }
- }
-
- segmentDescription[i].setPoiRouteDetails(poiDetailsList.toArray(new POIDetails[0]));
-
- if (segmentDescription[i].getPoiRouteDetails().length == 0)
- segmentDescription[i].setPoiRoute("");
- }
- }
- } catch (Exception ex) {
- /*
- * CommonFunctionHelper.gravarLogErro(
- * "getPoiRouteDB - IdWebservice : Interno" , "SQL-> " + sql + " | "
- * + "database-> " + poiDataBase + " | " + ex.Message.ToString() +
- * "|" + ex.StackTrace + " - Assembly : " + System
- * .Reflection.Assembly.GetExecutingAssembly().GetName().Version);
- */
- }
-
- return segmentDescription;
- }
-
- private void getPoiRouteDBFields(POIDetails poiSegment) throws Exception {
- String sql = "";
-
- try {
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- sql = "SELECT idPoi, poiRoute, poiSource, poiFields, poiDataBase";
- sql += " FROM TB_POIROUTE";
- sql += " WHERE id = " + poiSegment.getClientID().substring(0, poiSegment.getClientID().indexOf(":"));
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery(sql.toUpperCase());
-
- while (rr.next()) {
- poiID = rr.getString("IDPoi");
- poiSource = rr.getString("poiSource");
- poiSegSource = rr.getString("poiRoute");
- poiFieldList = rr.getString("poiFields");
- poiDataBase = rr.getString("poiDataBase");
- }
-
- rr.close();
- st.close();
- } catch (Exception ex) {
- } finally {
- con.close();
- }
- } catch (Exception ex) {
- Utils.LogError("CC", "getPoiRouteDBFields - IdWebservice : Interno",
- "SQL-> " + sql + " | " + "database-> dados_webservices | " + ex.getMessage() + "|" + ex.getStackTrace());
-
- throw (new Exception("Problemas ao buscar estrutra poiRoute."));
- }
- }
-
- public double[] getTaxiFare(RouteTotals rt, RouteStop[] rs) {
- double[] Value = new double[2];
- String Cities = "";
- String[] City;
-
- double TaxiStart = 0;
- double TaxiFare1 = 0;
- double TaxiFare2 = 0;
-
- Value[0] = 0;
- Value[1] = 0;
-
- try {
- ShapeDetect shp = new ShapeDetect();
-
- for (int x = 0; x < rs.length; x++) {
- try {
- shp = Functions.getCity(rs[x].getPoint(), _server, _port, _dataSource);
-
- if (x > 0)
- Cities += "|" + shp.NAME.replace("'", " ");
- else
- Cities = shp.NAME.replace("'", " ");
- } catch (Exception ex) {
- }
- }
-
- City = Cities.split(Pattern.quote("|"));
-
- if (ValidaCitiesTaxiFare(City)) {
- Connection con = dataBase.getConnection("DADOS_WEBSERVICES");
-
- try {
- Statement st = con.createStatement();
- ResultSet rr = st.executeQuery("SELECT * FROM TB_TAXIFARE WHERE NOME LIKE '%" + City[0].toUpperCase() + "%'");
-
- {
- if (rr.next()) {
- TaxiStart = Double.parseDouble(rr.getString("TaxiStart"));
- TaxiFare1 = Double.parseDouble(rr.getString("TaxiFare1"));
- TaxiFare2 = Double.parseDouble(rr.getString("TaxiFare2"));
-
- Value[0] = (rt.getTotalDistance() * TaxiFare1) + TaxiStart;
- Value[1] = (rt.getTotalDistance() * TaxiFare2) + TaxiStart;
-
- Value[0] = Functions.formatDouble(Value[0], "0.00");
- Value[1] = Functions.formatDouble(Value[1], "0.00");
- } else {
- rr.close();
- st.close();
- return Value;
- }
-
- st.close();
- rr.close();
- }
- } catch (Exception ex) {
- } finally {
- con.close();
- }
- } else {
- Value[0] = 0;
- Value[1] = 0;
- }
- } catch (Exception ex) {
- Value[0] = 0;
- Value[1] = 0;
- }
-
- return Value;
- }
-
- // calcula o n?mero de tempo da viagem
- // formato P18Y9M4DT11H9M8S (18 years, 9 months, 4 days, 11 hours, 9 minutes
- // and 8 seconds. private
- String getTotalTime(double totalDistance, double averageSpeed) throws Exception {
- String totalTime = "", strAux = "";
-
- try {
- int intTotalDays = 0, intTotalHours = 0, intTotalMinutes = 0;
-
- if (averageSpeed != 0) {
- strAux = String.valueOf(Functions.formatDouble((totalDistance / averageSpeed), "0.00"));
- intTotalHours = Integer.parseInt(strAux.substring(0, strAux.indexOf(".")));
- strAux = strAux.substring(strAux.indexOf(".") + 1);
- intTotalMinutes = Integer.parseInt(strAux);
- intTotalMinutes = (intTotalMinutes * 60) / 100;
-
- if (intTotalHours >= 24) {
- intTotalDays = intTotalHours / 24;
- intTotalHours = intTotalHours % 24;
- }
-
- if (intTotalDays > 0)
- totalTime = intTotalDays + "D";
-
- totalTime += "T";
-
- if (intTotalHours != 0)
- totalTime += intTotalHours + "H";
-
- if (intTotalMinutes != 0)
- totalTime = totalTime + intTotalMinutes + "M";
-
- totalTime = "P" + totalTime.trim();
- }
- } catch (Exception ex) {
- throw (new Exception("Problemas ao calcular o tempo da viagem."));
- }
- if (totalTime.equals("PT"))
- totalTime = "PT1M";
- return totalTime;
- }
-
- // calcula o n?mero de tempo da viagem
- // formato P18Y9M4DT11H9M8S (18 years, 9 months, 4 days, 11 hours, 9 minutes
- // and 8 seconds. private
- public static String getTotalTime(double seconds) throws Exception {
- String totalTime = "", strAux = "";
-
- try {
- int intTotalDays = 0, intTotalHours = 0, intTotalMinutes = 0;
-
- strAux = String.valueOf(Functions.formatDouble((seconds / 60 / 60), "0.00"));
- intTotalHours = Integer.parseInt(strAux.substring(0, strAux.indexOf(".")));
- intTotalMinutes = Integer.parseInt(strAux.substring(strAux.indexOf(".") + 1, strAux.length() - strAux.indexOf(".") + 1));
- intTotalMinutes = (intTotalMinutes * 60) / 100;
-
- if (intTotalHours >= 24) {
- intTotalDays = intTotalHours / 24;
- intTotalHours = intTotalHours % 24;
- }
-
- if (intTotalDays > 0)
- totalTime = intTotalDays + "D";
-
- totalTime += "T";
-
- if (intTotalHours != 0)
- totalTime += intTotalHours + "H";
-
- if (intTotalMinutes != 0)
- totalTime = totalTime + intTotalMinutes + "M";
-
- totalTime = "P" + totalTime.trim();
-
- } catch (Exception ex) {
- totalTime = "PT1M";
- // throw (new
- // Exception("Problemas ao calcular o tempo da viagem."));
- }
- if (totalTime.equals("PT"))
- totalTime = "PT1M";
- return totalTime;
- }
-
- private RouteTotals getTotals(SegmentDescription[] segmentDescription, RouteProximityOptions ro, RouteStop[] rs, double gTotalToolFeeCost) {
- RouteTotals rt = new RouteTotals();
-
- double distance;
- distance = 0;
-
- try {
- distance = segmentDescription[segmentDescription.length - 1].getCumulativeDistance();
-
- // Total com ped?gios
- rt.setTotaltollFeeCost(Functions.formatDouble(gTotalToolFeeCost, "0.00"));
-
- // dist?ncia total
- rt.setTotalDistance(Functions.formatDouble(distance, "0.00"));
-
- // calcula o tempo total da viagem
- rt.setTotalTime(getTotalTime(rt.getTotalDistance(), ro.getVehicle().getAverageSpeed()));
-
- // calcula o total do combust?vel gasto na viagem
- if (ro.getVehicle().getAverageConsumption() > 0)
- rt.setTotalFuelUsed(Functions.formatDouble((rt.getTotalDistance() / ro.getVehicle().getAverageConsumption()), "0.00"));
-
- // calcula o valor total gasto com combust?vel na viagem
- rt.setTotalfuelCost(Functions.formatDouble((rt.getTotalFuelUsed() * ro.getVehicle().getFuelPrice()), "0.00"));
-
- // calcula o valor total gasto na viagem
- rt.setTotalCost(Functions.formatDouble((gTotalToolFeeCost + rt.getTotalfuelCost()), "0.00"));
-
- // Calcula o valor de tarifas de taxi
- double[] TaxiFare = getTaxiFare(rt, rs);
- rt.setTaxiFare1(TaxiFare[0]);
- rt.setTaxiFare2(TaxiFare[1]);
- } catch (Exception ex) {
- // throw (ex);
- }
-
- return rt;
- }
-
- public RouteProximityInfo getRouteWithMap(int idLicenca, int methodID, RouteStop[] rs, RouteProximityOptions ro, MapOptions mo) throws Exception {
- RouteProximityInfo ri = new RouteProximityInfo();
-
- String response = "";
-
- Calendar lCDateTime = Calendar.getInstance();
- String routeID = _maquina + "_" + lCDateTime.getTimeInMillis();
-
- try {
- try {
- response = requestRoute(routeID, true, rs, ro, new Extent(), mo.getMapSize(), null, idLicenca, _dataSource, methodID);
- ri.setRouteId(routeID);
-
- // ri.setProximityList(getRouteProximity(response, ro.radius,
- // idLicenca, ro.routeDetails.getRouteType()));
-
- ri.setSegDescription(getSegmentDescriptionAlternative(response, ro.getVehicle().getTollFeeCat(), ro, rs, _dataSource, idLicenca));
- ri.setRouteTotals(getTotals(ri.getSegDescription(), ro, rs, totalPedagios));
- ri.setRoadType(getRoadType(ri.getSegDescription()));
- ri.setRouteSummary(getSummary(ri.getSegDescription(), rs, ro));
-
- try {
- CommonMap commonMap;
-
- commonMap = new CommonMap(_server, _port, _maquina, _output, _dns, _dataSourceMapa);
-
- gExt = Functions.doZoom(gExt, 0.1);
- ri.setMapInfo(commonMap.getZoomRadius(routeID, response, gExt, mo, idLicenca, CommonMap._getMap));
- } catch (Exception ex1) {
- throw (ex1);
- }
- } catch (Exception ex) {
- throw (ex);
- }
- } catch (Exception ex) {
- throw (ex);
- }
-
- return ri;
- }
-
- public RouteProximityInfo getRoute(int idLicenca, RouteStop[] rs, RouteProximityOptions ro, int methodID) throws Exception {
- RouteProximityInfo ri = new RouteProximityInfo();
- String response = "";
-
- String routeID = _maquina + "_" + Calendar.getInstance().getTimeInMillis();
-
- try {
-
- response = requestRoute(routeID, true, rs, ro, new Extent(), new MapSize(), null, idLicenca, _dataSource, methodID);
-
- ri.setRouteId(routeID);
-
- // ri.setProximityList(getRouteProximity(response, ro.radius,
- // idLicenca, ro.routeDetails.getRouteType()));
-
- MapInfo mapInfo = new MapInfo();
- mapInfo.setUrl("");
-
- String XMaxYMax = response.substring(response.indexOf("LLMAX=") + 6); // .substring(0,
- // response.substring(response.indexOf("LLMAX=")
- // +
- // 6).indexOf(Pattern.quote("|")));
- XMaxYMax = XMaxYMax.substring(0, XMaxYMax.indexOf("|"));
- String XMinYMin = response.substring(response.indexOf("LLMIN=") + 6); // .substring(0,
- // response.substring(response.indexOf("LLMIN=")
- // +
- // 6).indexOf(Pattern.quote("%")));
- XMinYMin = XMinYMin.substring(0, XMinYMin.indexOf("%"));
-
- mapInfo.setExtent(new Extent());
- mapInfo.getExtent().setXMax(Double.parseDouble(XMaxYMax.split(Pattern.quote(","))[1]));
- mapInfo.getExtent().setXMin(Double.parseDouble(XMinYMin.split(Pattern.quote(","))[1]));
- mapInfo.getExtent().setYMax(Double.parseDouble(XMaxYMax.split(Pattern.quote(","))[0]));
- mapInfo.getExtent().setYMin(Double.parseDouble(XMinYMin.split(Pattern.quote(","))[0]));
-
- ri.setMapInfo(mapInfo);
- ri.setSegDescription(getSegmentDescriptionAlternative(response, ro.getVehicle().getTollFeeCat(), ro, rs, _dataSource, idLicenca));
- ri.setRouteTotals(getTotals(ri.getSegDescription(), ro, rs, totalPedagios));
- ri.setRoadType(getRoadType(ri.getSegDescription()));
-
- ri.setRouteSummary(getSummary(ri.getSegDescription(), rs, ro));
- } catch (Exception ex) {
- Utils.LogError("CC", "RouteProximityInfo getRoute", "Error: " + ex.getMessage());
- throw (ex);
- }
-
- return ri;
- }
-
- public SegmentDescription[] getRouteDescription(int idLicenca, RouteStop[] rs, RouteProximityOptions ro, int methodID) throws Exception {
- String response = "";
-
- Extent ext = new Extent();
- SegmentDescription[] segRet = new SegmentDescription[0];
-
- String routeID = _maquina + "_" + Calendar.getInstance().getTimeInMillis();
-
- try {
- response = requestRoute(routeID, true, rs, ro, ext, new MapSize(), null, idLicenca, _dataSource, methodID);
- segRet = getSegmentDescriptionAlternative(response, ro.getVehicle().getTollFeeCat(), ro, rs, _dataSource, idLicenca);
- } catch (Exception ex) {
- Utils.LogError("CC", "getRouteWithMap - IdWebservice : Interno ", ex.getMessage() + "|" + ex.getStackTrace());
-
- throw (ex);
- }
-
- return segRet;
- }
-
- RoadType getRoadType(SegmentDescription[] segmentDescription) {
- RoadType roadType = new RoadType();
- double distance = 0;
-
- for (int x = 0; x < segmentDescription.length; x++) {
- distance = segmentDescription[x].getDistance();
-
- String roadTypeString = segmentDescription[x].getRoadType();
-
- if (!Functions.IsNullOrEmpty(roadTypeString)) {
- if (roadTypeString.contains("-"))
- roadTypeString = roadTypeString.split(Pattern.quote("-"))[0];
- }
-
- if (roadTypeString.equals("PD")) {
- roadType.setTwoLaneHighway(roadType.getTwoLaneHighway() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("ED")) {
- roadType.setSecondLaneUnderConstruction(roadType.getSecondLaneUnderConstruction() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("P")) {
- roadType.setOneLaneRoadway(roadType.getOneLaneRoadway() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("EP")) {
- roadType.setPavingWorkInProgress(roadType.getPavingWorkInProgress() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("T")) {
- roadType.setDirtRoad(roadType.getDirtRoad() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("CP")) {
- roadType.setRoadwayInPoorConditions(roadType.getRoadwayInPoorConditions() + distance);
- distance = 0;
- }
-
- if (roadTypeString.equals("BA")) {
- roadType.setFerry(roadType.getFerry() + distance);
- distance = 0;
- }
-
- if (distance != 0) {
- roadType.setOneLaneRoadway(roadType.getOneLaneRoadway() + distance);
- distance = 0;
- }
- }
-
- return roadType;
- }
-
- void generateFileRouteID(String routeID, String request, String response) throws IOException {
-
- // definindo o diretorio
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- // salva arquivo com as configuraçõees da rota
- Functions.writeFile(_dirLayer, routeID, request);
- // salva arquivo com resposta
- Functions.writeFile(_dirLayer, routeID + "-response", response);
- }
-
- public RouteTotals[] getRouteTotalsBatch(int idLicenca, RouteArray[] ra, RouteProximityOptions ro) throws Exception {
- RouteTotals[] rt = new RouteTotals[ra.length];
- RouteStop[] rs = new RouteStop[2];
-
- for (int i = 0; i < ra.length; i++) {
- rs[0] = ra[i].getOrigin();
- rs[1] = ra[i].getDest();
- rt[i] = getRouteTotals(idLicenca, rs, ro, _getRouteTotals);
- }
- return rt;
- }
-
- String[] requestProximity(String message, RouteStop[] rs, RouteProximityOptions ro, MapSize ms, String dataSource) throws Exception {
- String[] ret = new String[2];
- String response = message;
-
- StringBuilder request = new StringBuilder();
- TCPClientDecarta tcpDecarta = new TCPClientDecarta(_server, _port);
-
- try {
- String[] part = message.split(Pattern.quote("%"));
-
- if (message.toLowerCase().indexOf("%vr7=") > 0) {
- ret[0] = message;
- ret[0] = "";
- return ret;
- }
-
- int reqNumber = 0;
- Point ptCheck = new Point();
-
- if (response.toLowerCase().indexOf("find route") > 0) {
- ret[0] = response;
- ret[1] = request.toString();
- return ret;
- }
-
- while (reqNumber < 25 && (response.toLowerCase().indexOf("cannot") > 0)) {
- if (response.toLowerCase().indexOf("origin") > 0) {
- ptCheck.setX(rs[0].getPoint().getX());
- ptCheck.setY(rs[0].getPoint().getY());
- }
-
- if (response.toLowerCase().indexOf("destination") > 0) {
- ptCheck.setX(rs[rs.length - 1].getPoint().getX());
- ptCheck.setY(rs[rs.length - 1].getPoint().getY());
- }
-
- if (response.toLowerCase().indexOf("waypoint") > 0) {
- part = response.split(Pattern.quote("%"));
- ptCheck.setX(rs[Integer.parseInt(part[1].replace("WP=", "")) + 1].getPoint().getX());
- ptCheck.setY(rs[Integer.parseInt(part[1].replace("WP=", "")) + 1].getPoint().getY());
- }
-
- // PNB1|%LL=-23.63874,-46.62146|%S1FIELD0=?
- // *%RAD=m1000%TIMEOUT=500%DS=lbslocal_rotas%LL||
-
- request = new StringBuilder();
- request.append("PNB1");
- request.append("|");
- request.append("%LL=" + String.valueOf(ptCheck.getY()).replace(",", ".") + "," + String.valueOf(ptCheck.getX()).replace(",", "."));
- request.append("|");
- request.append("%S1FIELD0=? *%RAD=m2500");
- request.append("%TIMEOUT=500");
- request.append("%DS=" + dataSource + "%LL");
- request.append("||");
-
- String teste = tcpDecarta.Send(request.toString());
-
- if (teste.toLowerCase().indexOf("records") >= 0) {
- request = new StringBuilder();
- request.append("PNB1");
- request.append("|");
- request.append("%LL=" + String.valueOf(ptCheck.getY()).replace(",", ".") + "," + String.valueOf(ptCheck.getX()).replace(",", "."));
- request.append("|");
- request.append("%S1FIELD0=? *%RAD=k10");
- request.append("%TIMEOUT=500");
- request.append("%DS=" + dataSource + "%LL");
- request.append("||");
-
- teste = tcpDecarta.Send(request.toString());
-
- if (teste.toLowerCase().indexOf("records") >= 0) {
- request = new StringBuilder();
- request.append("PNB1");
- request.append("|");
- request.append("%LL=" + String.valueOf(ptCheck.getY()).replace(",", ".") + ","
- + String.valueOf(ptCheck.getX()).replace(",", "."));
- request.append("|");
- request.append("%S1FIELD0=? *%RAD=k100");
- request.append("%TIMEOUT=500");
- request.append("%DS=" + dataSource + "%LL");
- request.append("||");
-
- teste = tcpDecarta.Send(request.toString());
- }
-
- if (teste.toLowerCase().indexOf("records") >= 0) {
- if (response.indexOf("Cannot find path destination") > 0) {
- throw (new Exception("Não foi possível encontrar ligação com o ponto " + (rs.length) + " ("
- + rs[rs.length - 1].getDescription() + ") "));
- }
-
- if (response.indexOf("Cannot find path origin") > 0) {
- throw (new Exception("Não foi possível encontrar ligação com o ponto " + (1) + " (" + rs[0].getDescription() + ") "));
- }
-
- if (response.toLowerCase().indexOf("wp") > 0) {
- throw (new Exception("Não foi possível encontrar ligação com o ponto "
- + (Integer.parseInt(response.substring(response.indexOf("WP=") + 3,
- response.substring(response.indexOf("WP=") + 3).indexOf("%"))) + 1)
- + " ("
- + rs[Integer.parseInt(response.substring(response.indexOf("WP=") + 3,
- response.substring(response.indexOf("WP=") + 3).indexOf("%"))) + 1].getDescription() + ") "));
- }
- }
- }
-
- if (teste.indexOf("Plugin error") >= 0) {
- request = new StringBuilder();
- request.append("PNB1");
- request.append("|");
- request.append("%LL=" + String.valueOf(ptCheck.getY()).replace(",", ".") + "," + String.valueOf(ptCheck.getX()).replace(",", "."));
- request.append("|");
- request.append("%S1FIELD0=? *%RAD=m500");
- request.append("%TIMEOUT=500");
- request.append("%DS=" + dataSource + "%LL");
- request.append("||");
-
- teste = tcpDecarta.Send(request.toString());
- }
-
- if (teste.toLowerCase().indexOf("feature") >= 0) {
- request = new StringBuilder();
- request.append("PNB1");
- request.append("|");
- request.append("%LL=" + String.valueOf(ptCheck.getY()).replace(",", ".") + "," + String.valueOf(ptCheck.getX()).replace(",", "."));
- request.append("|");
- request.append("%S1FIELD0=? *%RAD=m5000");
- request.append("%TIMEOUT=500");
- request.append("%DS=" + dataSource + "%LL");
- request.append("||");
-
- teste = tcpDecarta.Send(request.toString());
- }
-
- Point newPoint = new Point();
- newPoint.setX(Double.parseDouble(teste.substring(teste.indexOf("LL=") + 3, teste.indexOf("LL=") + 3 + 21).split(Pattern.quote(","))[1]
- .replace("|", "").replace("%", "")));
- newPoint.setY(Double.parseDouble(teste.substring(teste.indexOf("LL=") + 3, teste.indexOf("LL=") + 3 + 21).split(Pattern.quote(","))[0]
- .replace("|", "").replace("%", "")));
-
- if ((ptCheck.getX() == newPoint.getX()) && (ptCheck.getY() == newPoint.getY())) {
- if (response.toLowerCase().indexOf("wp") > 0) {
- throw (new Exception("Não foi possível encontrar ligação com o ponto "
- + (Integer.parseInt(response.substring(response.indexOf("WP=") + 3, response.substring(response.indexOf("WP=") + 3)
- .indexOf("%"))) + 1)
- + " ("
- + rs[Integer.parseInt(response.substring(response.indexOf("WP=") + 3, response.substring(response.indexOf("WP=") + 3)
- .indexOf("%"))) + 1].getDescription() + ") "));
- }
- }
-
- if (response.toLowerCase().indexOf("origin") > 0) {
- rs[0].getPoint().setX(newPoint.getX());
- rs[0].getPoint().setY(newPoint.getY());
- }
-
- if (response.toLowerCase().indexOf("destination") > 0) {
- rs[rs.length - 1].getPoint().setX(newPoint.getX());
- rs[rs.length - 1].getPoint().setY(newPoint.getY());
- }
-
- if (response.toLowerCase().indexOf("waypoint") > 0) {
- rs[Integer.parseInt(part[1].replace("WP=", "")) + 1].getPoint().setX(newPoint.getX());
- rs[Integer.parseInt(part[1].replace("WP=", "")) + 1].getPoint().setY(newPoint.getY());
- }
-
- request = new StringBuilder();
-
- request.append("RMAN");
- request.append("|");
-
- request.append("%OLL=" + String.valueOf(rs[0].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[0].getPoint().getX()).replace(",", "."));
-
- for (int x = 1; x < rs.length - 1; x++) {
- request.append("%WP");
- request.append("%WDLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- request.append("%WOLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- }
-
- request.append("%DLL=" + String.valueOf(rs[rs.length - 1].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[rs.length - 1].getPoint().getX()).replace(",", "."));
-
- request.append("|%TIME");
-
- if (rs.length < 10 && ro.getRouteDetails().isOptimizeRoute())
- request.append("%OPT=1");
- else
- request.append("%OPT=0");
-
- switch (ro.getRouteDetails().getRouteType()) {
- case 0:
- request.append("%RS=F");
- break;
- case 1:
- request.append("%RS=S");
- break;
- case 2:
- request.append("%RS=P");
- break;
- /*
- * case 3: { request.append("%RS=F"); setTraffic(dataSource); }
- * break; case 4: { request.append("%RS=S");
- * setTraffic(dataSource); } break;
- */
- case 5:
- request.append("%RS=F");
- break;
- case 6: // 6 Rotas evitando balsas
- request.append("%ADJUSTCOST=FERRYBOAT,INF");
- break;
- case 7: // 7 Rotas evitando estradas de terra
- request.append("%ADJUSTCOST=TUNNEL,INF");
- break;
- case 8: // 8 Rotas evitando balsas e estradas de terra
- request.append("%ADJUSTCOST=FERRYBOAT,INF%ADJUSTCOST=TUNNEL,INF");
- break;
- case 9: // 9 Rotas evitando estradas com condi??es
- // prec?rias
- request.append("%ADJUSTCOST=SKYWAY,INF");
- break;
- case 10: // 10 Rotas evitando ped?gios
- request.append("%ADJUSTCOST=TOLLROAD,INF");
- break;
- case 12:
- request.append("%RS=F");
- break;
- case 13:
- request.append("%RS=F");
- break;
- }
-
- request.append("%S2");
- request.append("%AC");
- request.append("%TDIST=K");
- request.append("%DIST=K");
- request.append("%LLMAX");
- request.append("%LLMIN");
-
- if (ms.getHeight() != 0 || ro.getRouteDetails().getPoiRoute() != null || ro.getVehicle().getTollFeeCat() > 0)
- request.append("%RG");
-
- request.append("%VR7");
- request.append("%TURN");
- request.append("%LL");
-
- switch (ro.getRouteDetails().getRouteType()) {
- case 5:
- request.append("%DS=ccr_rotas");
- break;
- case 12:
- request.append("%DS=telefonica_rotas");
- break;
- case 13:
- request.append("%DS=telefonica_pf");
- break;
- /*
- * case 3: if (setTraffic(dataSource)) request.append("%EDS=" +
- * dataSource + "_edit"); else request.append("%DS=" +
- * dataSource); break; case 4: if (setTraffic(dataSource))
- * request.append("%EDS=" + dataSource + "_edit"); else
- * request.append("%DS=" + dataSource); break;
- */
- case 6: // 6 Rotas evitando balsas
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_balsas");
- break;
- case 7: // 7 Rotas evitando estradas de terra
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_terra");
- break;
- case 8: // 8 Rotas evitando balsas e estradas de terra
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_balsa_terra");
- break;
- case 9: // 9 Rotas evitando estradas com condi??es
- // prec?rias
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_condicoes_precarias");
- break;
- case 10: // 10 Rotas evitando ped?gios
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_pedagios");
- break;
- default:
- request.append("%DS=" + dataSource);
- break;
- }
-
- request.append("%TIMEOUT=50000");
- request.append("||");
-
- response = tcpDecarta.Send(request.toString());
-
- reqNumber++;
- }
- } catch (Exception ex) {
- throw ex;
- }
-
- ret[0] = response;
- ret[1] = request.toString();
- return ret;
- }
-
- public String requestRoute(String routeID, boolean createFile, RouteStop[] rs, RouteProximityOptions ro, Extent ex, MapSize ms,
- String barriersRoute, int idLicenca, String dataSource, int methodID) throws Exception {
-
- StringBuilder request = new StringBuilder();
- String response = "";
-
- try {
- if (!"".equals(routeID) && !createFile) {
-
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- request = new StringBuilder();
-
- FileReader file = new FileReader(_dirLayer + routeID);
- BufferedReader sr = new BufferedReader(file);
-
- String testFirstLine = sr.readLine();
- StringBuilder r = new StringBuilder("");
-
- if (testFirstLine.indexOf("%OLL") > 0) {
- request.append(testFirstLine);
- sr.close();
-
- String[] req = request.toString().split(Pattern.quote("|"));
-
- for (int x = 0; x < req.length; x++) {
- if (x == 2)
- r.append(req[x] + "%RG|");
- else
- r.append(req[x] + "|");
- }
- } else {
- String routeTypeFile = sr.readLine();
- sr.readLine();
- // String optimizeRouteFile = sr.readLine();
- String[] routeStopFile = sr.readLine().split(Pattern.quote("<"));
- sr.close();
-
- List<RouteStop> rsList = new ArrayList<RouteStop>();
-
- for (int x = 0; x < routeStopFile.length; x++) {
- if (routeStopFile[x].toUpperCase().indexOf("POINT") >= 0) {
- RouteStop rsAux = new RouteStop();
- rsAux.setPoint(new Point());
- rsAux.getPoint().setX(
- Double.parseDouble(routeStopFile[x]
- .substring(routeStopFile[x].indexOf("'"),
- routeStopFile[x].indexOf("y") - (routeStopFile[x].indexOf("'") + 2)).replace("'", "")
- .replace("/", "").replace(">", "")));
- rsAux.getPoint().setY(
- Double.parseDouble(routeStopFile[x].substring(routeStopFile[x].indexOf("y") + 3).replace("'", "")
- .replace("/", "").replace(">", "")));
- rsList.add(rsAux);
- }
- }
-
- rs = rsList.toArray(new RouteStop[0]);
-
- r = new StringBuilder("RMAN|%TIME");
- r.append("%OLL=" + String.valueOf(rs[0].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[0].getPoint().getX()).replace(",", "."));
-
- for (int x = 1; x < rs.length - 1; x++) {
- r.append("%WP");
- r.append("%WDLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- r.append("%WOLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- }
-
- r.append("%DLL=" + String.valueOf(rs[rs.length - 1].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[rs.length - 1].getPoint().getX()).replace(",", "."));
-
- r.append("|%RG%VR7");
-
- if (routeTypeFile.toLowerCase().indexOf("quickest") > 0) {
- r.append("%RS=F");
- } else
- r.append("%RS=S");
-
- r.append("%OPT=0");
-
- switch (ro.getRouteDetails().getRouteType()) {
- case 5:
- r.append("%DS=ccr_rotas");
- break;
- case 3:
- r.append("%EDS=" + dataSource + "_edit");
- break;
- case 4:
- r.append("%EDS=" + dataSource + "_edit");
- break;
- default:
- r.append("%DS=" + dataSource);
- break;
- }
- r.append("%TIMEOUT=50000||");
- }
-
- response = new TCPClientDecarta(_server, _port).Send(r.toString());
-
- if (!(response.toLowerCase().indexOf("s=ok") > 0)) {
- String[] resp = requestProximity(response, rs, ro, ms, dataSource);
- response = resp[0];
-
- if ((!"".equals(response)) && (response != null)) {
- if (!"".equals(routeID) && createFile) {
- generateFileRouteID(routeID, resp[1], response);
- createFile = false;
- }
- }
- }
- } else {
- request.append("RMAN");
- request.append("|");
-
- request.append("%CUST=" + idLicenca + ":" + methodID + "%OLL=" + String.valueOf(rs[0].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[0].getPoint().getX()).replace(",", "."));
-
- for (int x = 1; x < rs.length - 1; x++) {
- request.append("%WP");
- request.append("%WDLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- request.append("%WOLL=" + String.valueOf(rs[x].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[x].getPoint().getX()).replace(",", "."));
- }
-
- request.append("%DLL=" + String.valueOf(rs[rs.length - 1].getPoint().getY()).replace(",", ".") + ","
- + String.valueOf(rs[rs.length - 1].getPoint().getX()).replace(",", "."));
-
- request.append("|%TIME");
-
- /*
- * if (ro.routeDetails.optimizeRoute) { clsOptimize.Cities
- * cityListOpt = new Cities();
- *
- * if (rs.length < 10) { request.append("%OPT=1"); } else {
- * request = new StringBuilder();
- *
- * clsOptimize.Cities cityList = new clsOptimize.Cities(); for
- * (int i = 0; i < rs.length; i++) { cityList.Add(new
- * clsOptimize.City(rs[i].point.x, rs[i].point.y, i)); }
- * Optimize opt = new Optimize(); cityListOpt =
- * opt.Begin(cityList);
- *
- * RouteStop[] rsAux = new RouteStop[rs.length]; for (int i = 0;
- * i < rs.length; i++) { rsAux[i] = new RouteStop();
- * rsAux[i].description = rs[i].description; }
- *
- * for (int i = 0; i < cityListOpt.Count; i++) {
- * rs[i].description = rsAux[cityListOpt[i].ID].description;
- * rs[i].point.x = cityListOpt[i].Location.X; rs[i].point.y =
- * cityListOpt[i].Location.Y; }
- *
- * request.append("RMAN"); request.append("|");
- *
- * request.Append("%CUST=" + idLicenca +":" + methodID + "%OLL="
- * + cityListOpt[0].Location.Y.ToString().replace(",", ".") +
- * "," + cityListOpt[0].Location.X.ToString().replace(",",
- * "."));
- *
- * for (int x = 1; x < cityListOpt.Count - 1; x++) {
- * request.append("%WP"); request.Append("%WDLL=" +
- * cityListOpt[x].Location.Y.ToString().replace(",", ".") + ","
- * + cityListOpt[x].Location.X.ToString().replace(",", "."));
- * request.Append("%WOLL=" +
- * cityListOpt[x].Location.Y.ToString().replace(",", ".") + ","
- * + cityListOpt[x].Location.X.ToString().replace(",", ".")); }
- *
- * request.Append("%DLL=" + cityListOpt[cityListOpt.Count -
- * 1].Location.Y.ToString().replace(",", ".") + "," +
- * cityListOpt[cityListOpt.Count -
- * 1].Location.X.ToString().replace(",", "."));
- *
- * request.append("|");
- *
- * request.append("%OPT=0"); } } else
- */
- request.append("%OPT=0");
-
- switch (ro.getRouteDetails().getRouteType()) {
- case 0:
- request.append("%RS=F");
- break;
- case 1:
- request.append("%RS=S");
- break;
- case 2:
- request.append("%RS=P");
- break;
- case 3: {
- request.append("%RS=F");
- // setTraffic(dataSource);
- }
- break;
- case 4: {
- request.append("%RS=S");
- // setTraffic(dataSource);
- }
- break;
- case 5:
- request.append("%RS=F");
- break;
- case 6: // 6 Rotas evitando balsas
- request.append("%ADJUSTCOST=FERRYBOAT,INF");
- break;
- case 7: // 7 Rotas evitando estradas de terra
- request.append("%ADJUSTCOST=TUNNEL,INF");
- break;
- case 8: // 8 Rotas evitando balsas e estradas de terra
- request.append("%ADJUSTCOST=FERRYBOAT,INF%ADJUSTCOST=TUNNEL,INF");
- break;
- case 9: // 9 Rotas evitando estradas com condi??es
- // prec?rias
- request.append("%ADJUSTCOST=SKYWAY,INF");
- break;
- case 10: // 10 Rotas evitando ped?gios
- request.append("%ADJUSTCOST=TOLLROAD,INF");
- break;
- case 12:
- request.append("%RS=F");
- break;
- case 13:
- request.append("%RS=F");
- break;
- }
-
- request.append("%S2");
- request.append("%AC");
- request.append("%TDIST=K");
- request.append("%DIST=K");
- request.append("%LLMAX");
- request.append("%LLMIN");
-
- if (ms.getHeight() != 0 || ro.getRouteDetails().getPoiRoute() != null || ro.getVehicle().getTollFeeCat() > 0 || rs.length > 14)
- request.append("%RG");
-
- request.append("%VR7");
- request.append("%TURN");
- request.append("%LL");
-
- switch (ro.getRouteDetails().getRouteType()) {
- case 5:
- request.append("%DS=ccr_rotas");
- break;
- case 12:
- request.append("%DS=telefonica_rotas");
- break;
- case 13:
- request.append("%DS=telefonica_pf");
- break;
- /*
- * case 3: if(setTraffic(dataSource)) request.append("%EDS=" +
- * dataSource + "_edit"); else request.append("%DS=" +
- * dataSource); break;
- */
- /*
- * case 4: if (setTraffic(dataSource)) request.append("%EDS=" +
- * dataSource + "_edit"); else request.append("%DS=" +
- * dataSource); break;
- */
- case 6: // 6 Rotas evitando balsas
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_balsas");
- break;
- case 7: // 7 Rotas evitando estradas de terra
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_terra");
- break;
- case 8: // 8 Rotas evitando balsas e estradas de terra
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_balsa_terra");
- break;
- case 9: // 9 Rotas evitando estradas com condi??es
- // prec?rias
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_condicoes_precarias");
- break;
- case 10: // 10 Rotas evitando ped?gios
- request.append("%DS=lbslocal_rodoviaria_rotas_evitando_pedagios");
- break;
- default:
- request.append("%DS=" + dataSource);
- break;
- }
-
- request.append("%TIMEOUT=50000");
- request.append("||");
-
- response = new TCPClientDecarta(_server, _port).Send(request.toString());
-
- if (!(response.toLowerCase().indexOf("s=ok") > 0)) {
- String[] resp = requestProximity(response, rs, ro, ms, dataSource);
- response = resp[0];
-
- if (response.toLowerCase().indexOf("failed to find route") >= 0 || response.toLowerCase().indexOf("cannot find") >= 0)
- throw (new Exception("Problemas ao requisitar a rota."));
-
- if ((!"".equals(response)) && (response != null)) {
- if (!"".equals(routeID) && createFile) {
- generateFileRouteID(routeID, resp[1], response);
- createFile = false;
- }
- }
- }
-
- try {
- gExt.setXMax(Double.parseDouble(response.substring(response.indexOf("LLMAX") + 6, response.indexOf("LLMAX") + 6 + 19).split(
- Pattern.quote(","))[1].replace("|", "").replace("%", "").toLowerCase().replace("l", "")));
- gExt.setXMin(Double.parseDouble(response.substring(response.indexOf("LLMIN") + 6, response.indexOf("LLMIN") + 6 + 19).split(
- Pattern.quote(","))[1].replace("|", "").replace("%", "").toLowerCase().replace("l", "")));
- gExt.setYMax(Double.parseDouble(response.substring(response.indexOf("LLMAX") + 6, response.indexOf("LLMAX") + 6 + 19).split(
- Pattern.quote(","))[0].replace("|", "").replace("%", "").toLowerCase().replace("l", "")));
- gExt.setYMin(Double.parseDouble(response.substring(response.indexOf("LLMIN") + 6, response.indexOf("LLMIN") + 6 + 19).split(
- Pattern.quote(","))[0].replace("|", "").replace("%", "").toLowerCase().replace("l", "")));
- } catch (Exception ex1) {
- // String a = ex1.getMessage();
- }
- }
- } catch (Exception ex1) {
- Utils.LogError("CC", "requestRoute (Catch) - IdWebservice : Interno", ex1.getMessage() + "|" + ex1.getStackTrace() + " | REQUEST : "
- + request.toString() + " | Response : " + response);
-
- throw (new Exception(ex1.getMessage()));
- }
-
- if (!"".equals(routeID) && createFile) {
- generateFileRouteID(routeID, request.toString(), response);
- }
-
- return response;
- }
-
- public RouteTotals getRouteTotals(int idLicenca, RouteStop[] rs, RouteProximityOptions ro, int methodID) throws Exception {
- String barriersRoute = "";
-
- String response = requestRoute("", false, rs, ro, new Extent(), new MapSize(), barriersRoute, idLicenca, _dataSource, methodID);
-
- SegmentDescription[] segDescription = getSegmentDescriptionAlternative(response, ro.getVehicle().getTollFeeCat(), ro, rs, _dataSource,
- idLicenca);
- RouteTotals rt = getTotals(segDescription, ro, rs, totalPedagios);
-
- return rt;
- }
-
- public RouteSummary[] getRouteSummary(int idLicenca, RouteStop[] rs, RouteProximityOptions ro, int methodID) throws Exception {
- String barriersRoute = "";
-
- String response = requestRoute("", false, rs, ro, new Extent(), new MapSize(), barriersRoute, idLicenca, _dataSource, methodID);
-
- SegmentDescription[] segDescription = getSegmentDescriptionAlternative(response, ro.getVehicle().getTollFeeCat(), ro, rs, _dataSource,
- idLicenca);
- RouteSummary[] routeSummary = getSummary(segDescription, rs, ro);
-
- return routeSummary;
- }
-
- public static String getRouteFullCoords(String routeID) {
- String total = "";
- String buffer = "";
- String _dirLayer = "";
- try {
- _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- if (new File(_dirLayer + File.separator + routeID + "-response").exists()) {
- buffer = _dirLayer + File.separator;
- } else {
- buffer = _dirLayer + File.separator + "buffer" + File.separator;
- }
-
- Scanner sr = new Scanner(new File(buffer + routeID + "-response"), "UTF-8");
-
- String[] parts = sr.nextLine().split("%");
-
- sr.close();
-
- for (int x = 0; x < parts.length; x++) {
- if (parts[x].indexOf("VR=") >= 0) {
- total = parts[x].replace("VR=", "");
- total = total.substring(total.indexOf(",") + 1);
- break;
- }
-
- }
- } catch (Exception e) {
- Utils.LogError("CC", "getRouteFullCoords:", " - buffer -- " + buffer + routeID + "-response" + e.getMessage() + "|" + e.getStackTrace());
-
- return "";
- }
- return total;
- }
-
- public static Coordinate[] getRouteCoordsFence(String routeID) {
- List<Coordinate[]> ptLists = new ArrayList<Coordinate[]>();
-
- try {
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- Scanner sr = new Scanner(new File(_dirLayer + File.separator + "buffer" + File.separator + routeID + "-buffer"), "UTF-8");
-
- String[] parts = sr.nextLine().split("%");
-
- if (sr.hasNextLine()) {
- String linha;
- while (sr.hasNextLine()) {
- linha = sr.nextLine();
- if (linha.equals(""))
- break;
-
- parts = linha.split(Pattern.quote("|"));
- if (parts.length == 0)
- break;
-
- Coordinate[] pts = new Coordinate[parts.length - 1];
-
- for (int z = 0; z < parts.length - 1; z++)
- pts[z] = new Coordinate(Double.parseDouble(parts[z].split(" ")[1]), Double.parseDouble(parts[z].split(" ")[0]));
-
- ptLists.add(pts);
- }
-
- sr.close();
- }
-
- return ptLists.toArray(new Coordinate[0]);
- } catch (Exception exc) {
- Utils.LogError("CC", "RouteCoords", exc.getMessage());
- }
- return null;
-
- }
-
- public static String getRouteCoordsToFence(String routeID) {
-
- try {
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- Scanner sr = new Scanner(new File(_dirLayer + File.separator + "buffer" + File.separator + routeID + "-buffer"), "UTF-8");
-
- String linha = sr.nextLine();
- sr.close();
-
- return linha;
-
- } catch (Exception exc) {
- Utils.LogError("CC", "RouteCoords", exc.getMessage());
- }
- return "";
-
- }
-
- public static Coordinate[] setRouteCoordsToFence(String routeID) {
- List<Coordinate> ptLists = new ArrayList<Coordinate>();
-
- try {
- StringBuilder sb = new StringBuilder("");
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- Scanner sr = new Scanner(new File(_dirLayer + File.separator + routeID + "-response"), "UTF-8");
-
- String[] parts = sr.nextLine().split("%");
-
- if (sr.hasNextLine()) {
- String linha;
- while (sr.hasNextLine()) {
- linha = sr.nextLine();
- if (linha.equals(""))
- break;
-
- parts = linha.split(Pattern.quote("|"));
- if (parts.length == 0)
- break;
-
- for (int z = 0; z < parts.length - 1; z++)
- ptLists.add(new Coordinate(Double.parseDouble(parts[z].split(" ")[0]), Double.parseDouble(parts[z].split(" ")[1])));
- }
-
- sr.close();
-
- } else {
- sr.close();
- sb = new StringBuilder("");
-
- for (int x = 0; x < parts.length; x++) {
- if (parts[x].indexOf("VR7=") >= 0) {
- int y = 0;
- String[] co = parts[x].toString().replace("|", "").replace("\0", "").split(",");
- Coordinate[] pts = new Coordinate[Integer.parseInt(co[0].substring(co[0].indexOf("=") + 1))];
-
- Coordinate pt;
- for (int z = 1; z < co.length; z++) {
- if (z == 1) {
- pt = new Coordinate();
- pt.y = (Double.parseDouble(co[z]) * Math.pow(10, -7));
- pt.x = (Double.parseDouble(co[z + 1]) * Math.pow(10, -7));
- } else {
- pt = new Coordinate();
- pt.y = ((pts[y].y) + Integer.parseInt(co[z]) * Math.pow(10, -7));
- pt.x = ((pts[y].x) + Integer.parseInt(co[z + 1]) * Math.pow(10, -7));
- y++;
- }
- pts[y] = pt;
- ptLists.add(pt);
-
- sb.append(Functions.formatDoubleToString(pt.x, 7) + " " + Functions.formatDoubleToString(pt.y, 7) + "|");
- z++;
- }
- sb.append("\n");
-
- }
-
- }
- Functions.writeFile(_dirLayer, routeID + "-response", sb.toString());
-
- }
-
- InputStream in = new FileInputStream(new File(_dirLayer + File.separator + File.separator + routeID + "-response"));
- OutputStream out = new FileOutputStream(new File(_dirLayer + File.separator + File.separator + "buffer" + File.separator + routeID
- + "-response"));
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
-
- return ptLists.toArray(new Coordinate[0]);
- } catch (Exception exc) {
- Utils.LogError("CC", "RouteCoords", exc.getMessage());
- }
- return null;
-
- }
-
- public static boolean setRouteFence(String routeID, double meters) {
- double distancia = meters / 102960;
- try {
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- StringBuilder sb = new StringBuilder();
-
- Coordinate[] coordsBuffer = setRouteCoordsToFence(routeID);
-
- Geometry g = new GeometryFactory().createLineString(coordsBuffer);
- Geometry buffer = g.buffer(distancia, 3, BufferOp.CAP_ROUND);
-
- Coordinate[] coordsFull = buffer.getCoordinates();
- int total = coordsFull.length;
- for (int i = 0; i < total; i++) {
- sb.append(coordsFull[i].x + " " + coordsFull[i].y);
- if (i + 1 < total)
- sb.append(",");
- }
- File file = new File(_dirLayer + File.separator + "buffer" + File.separator + routeID + "-buffer");
- if (file.exists()) {
- file.delete();
- }
-
- Functions.writeFile(_dirLayer + File.separator + "buffer" + File.separator, routeID + "-buffer", sb.toString());
-
- } catch (Exception e) {
- return false;
- }
- return true;
- }
-
- public String getRouteCoords(String routeID, double precision, Extent ex, int idLicenca, String dataSource) {
- List<Point[]> ptLists = new ArrayList<Point[]>();
-
- try {
- StringBuilder sb = new StringBuilder("");
- String _dirLayer = ConfigurationManager.getInstance().getAppSettings("PATH_FILE_ROUTE");
-
- // _dirLayer = "\\\\" + routeID.substring(0,
- // routeID.indexOf('_')).replace('-', '.') + "\\" +
- // Functions.getNetWorkDrive(routeID.substring(0,
- // routeID.indexOf('_')).replace('-', '.'))
- // + "$" + _dirLayer;
-
- Scanner sr = new Scanner(new File(_dirLayer + File.separator + routeID + "-response"), "UTF-8");
-
- String[] parts = sr.nextLine().split("%");
-
- if (sr.hasNextLine()) {
- String linha;
- while (sr.hasNextLine()) {
- linha = sr.nextLine();
- if (linha.equals(""))
- break;
-
- parts = linha.split(Pattern.quote("|"));
- if (parts.length == 0)
- break;
-
- Point[] pts = new Point[parts.length - 1];
-
- for (int z = 0; z < parts.length - 1; z++)
- pts[z] = new Point(Double.parseDouble(parts[z].split(" ")[0]), Double.parseDouble(parts[z].split(" ")[1]));
-
- ptLists.add(pts);
- }
-
- sr.close();
-
- } else {
- sr.close();
- sb = new StringBuilder("");
-
- for (int x = 0; x < parts.length; x++) {
- if (parts[x].indexOf("VR7=") >= 0) {
- int y = 0;
- String[] co = parts[x].toString().replace("|", "").replace("\0", "").split(",");
- Point[] pts = new Point[Integer.parseInt(co[0].substring(co[0].indexOf("=") + 1))];
-
- Point pt;
- for (int z = 1; z < co.length; z++) {
- if (z == 1) {
- pt = new Point();
- pt.setY(Double.parseDouble(co[z]) * Math.pow(10, -7));
- pt.setX(Double.parseDouble(co[z + 1]) * Math.pow(10, -7));
- } else {
- pt = new Point();
- pt.setY((pts[y].getY()) + Integer.parseInt(co[z]) * Math.pow(10, -7));
- pt.setX((pts[y].getX()) + Integer.parseInt(co[z + 1]) * Math.pow(10, -7));
- y++;
- }
- pts[y] = pt;
-
- sb.append(Functions.formatDoubleToString(pt.getX(), 7) + " " + Functions.formatDoubleToString(pt.getY(), 7) + "|");
- z++;
- }
- sb.append("\n");
- ptLists.add(pts);
- }
-
- }
- Functions.writeFile(_dirLayer, routeID + "-response", sb.toString());
-
- }
-
- sb = new StringBuilder("");
-
- Point last = new Point();
- for (int w = 0; w < ptLists.size(); w++) {
- Point[] points = ptLists.get(w);
-
- for (int i = 0; i < points.length; i++) {
- if (points[i].getX() != 0 && points[i].getY() != 0) {
- if ((ex.getXMax() > points[i].getX() && ex.getXMin() < points[i].getX() && ex.getYMax() > points[i].getY() && ex.getYMin() < points[i]
- .getY())) {
- if ((i == 0) || (this.getDistanceDegree(last, points[i]) > precision)) {
- if ((int) (102960 * Math.sqrt(Math.pow((points[i].getX() - last.getX()), 2)
- + Math.pow((points[i].getY() - last.getY()), 2))) > 15000) {
- // String b = "asd";
- }
- last = points[i];
- sb.append(Functions.formatDoubleToString(points[i].getX(), 7) + " "
- + Functions.formatDoubleToString(points[i].getY(), 7) + ";");
- }
- }
- }
- }
-
- }
- return convertToDecarta(7, sb.toString());
- } catch (Exception exc) {
- Utils.LogError("CC", "RouteCoords", exc.getMessage());
- }
- return null;
-
- }
-
- double getDistanceDegree(Point p1, Point p2) {
- return Math.sqrt(Math.pow((p2.getX() - p1.getX()), 2) + Math.pow((p2.getY() - p1.getY()), 2));
- }
-
- public String convertToDecarta(int precision, String coords) {
- String coordsDecarta = "";
-
- if (!Functions.IsNullOrEmpty(coords)) {
- String[] coord;
-
- if (coords.endsWith(";"))
- coords = coords.substring(0, coords.length() - 1);
-
- coord = coords.split(";");
- Long lngInt, latInt, lngIntNew, latIntNew;
- double lng, lat, pow;
- pow = Math.pow(10, precision);
- lng = Double.parseDouble(coord[0].toString().split(" ")[0]);
- lat = Double.parseDouble(coord[0].toString().split(" ")[1]);
- lngInt = (long) (lng * pow);
- latInt = (long) (lat * pow);
-
- coordsDecarta = latInt + "," + lngInt;
-
- for (int x = 1; x < coord.length; x++) {
- lng = Double.parseDouble(coord[x].split(" ")[0]);
- lat = Double.parseDouble(coord[x].split(" ")[1]);
- lngIntNew = (long) (lng * pow);
- ;
- latIntNew = (long) (lat * pow);
- coordsDecarta += "," + (latIntNew - latInt) + "," + (lngIntNew - lngInt);
- lngInt = lngIntNew;
- latInt = latIntNew;
- }
- }
-
- return coordsDecarta;
- }
-
- String convertToDecarta(int precision, String[] coord) {
- StringBuilder sb = new StringBuilder();
- String[] co;
- for (int i = 0; i < coord.length; i++) {
- co = coord[i].split(";");
- for (int z = 1; z < co.length; z++) {
- sb.append(co[z]);
- sb.append(";");
- }
- }
- sb.delete(sb.length() - 1, 1);
-
- String coordsDecarta = "";
-
- coord = sb.toString().split(";");
- Integer lngInt, latInt, lngIntNew, latIntNew;
- Double lng, lat, pow;
-
- pow = Math.pow(10, precision);
- lng = Double.parseDouble(coord[0].toString().split(" ")[0].replace('.', ','));
- lat = Double.parseDouble(coord[0].toString().split(" ")[1].replace('.', ','));
- lngInt = Integer.parseInt(String.valueOf(lng * pow));
- latInt = Integer.parseInt(String.valueOf(lat * pow));
-
- coordsDecarta = latInt + "," + lngInt;
-
- int latdif, lngint;
- for (int x = 1; x < coord.length; x++) {
- lng = Double.parseDouble(coord[x].toString().split(" ")[0].replace('.', ','));
- lat = Double.parseDouble(coord[x].toString().split(" ")[1].replace('.', ','));
- lngIntNew = Integer.parseInt(String.valueOf(lng * pow));
- latIntNew = Integer.parseInt(String.valueOf(lat * pow));
- latdif = (int) (latIntNew - latInt);
- lngint = (int) (lngIntNew - lngInt);
-
- if (latdif != 0 && lngint != 0) {
- coordsDecarta += "," + latdif + "," + lngint;
- lngInt = lngIntNew;
- latInt = latIntNew;
- }
- }
-
- return coordsDecarta;
- }
-
- public static boolean checkFence(String routeId, Point point) {
- Geometry g = null;
- try {
- String a = getRouteCoordsToFence(routeId);
- // System.out.println(a);
- g = new WKTReader().read("POLYGON ((" + a + "))");
- } catch (ParseException e) {
- e.printStackTrace();
- }
-
- Geometry gc = new GeometryFactory().createPoint(new Coordinate(point.getX(), point.getY()));
-
- if (gc.within(g))
- return true;
- else
- return false;
-
- }
- }