/src/main/com/lbslocal/cc/core/CommonRoute.java
Java | 3934 lines | 3759 code | 147 blank | 28 comment | 128 complexity | 795e479a7bac7f0b1943e127c359f444 MD5 | raw file
Large files files are truncated, but you can click here to view the full 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].getDescript…
Large files files are truncated, but you can click here to view the full file