package cz.agents.dbtokmlexporter.darptestbed;
import java.awt.Color;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cz.agents.dbtokmlexporter.kmlitem.builder.SimpleKmlItemBuilder;
import org.apache.log4j.Logger;
import cz.agents.agentpolis.tools.geovisio.database.connection.DatabaseConnection;
import cz.agents.agentpolis.tools.geovisio.database.connection.DatabaseConnectionSettings;
import cz.agents.agentpolis.tools.geovisio.database.h2.H2InMemoryConnection;
import cz.agents.agentpolis.tools.geovisio.database.postgres.postgis.PostgisConnection;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.ActivePassengersKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.PassengerTaxiDriverPairKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.RequestHeatMapKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.RequestNotificationKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.RequestNumbersScreenOverlayKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.TaxiDriverKmlItemBuilder;
import cz.agents.dbtokmlexporter.darptestbed.kmlitembuilder.TaxiPassengerPairKmlItemBuilder;
import cz.agents.dbtokmlexporter.kmlitem.builder.KmlItemBuilder;
/**
*
* @author Marek Cuchy
*
*/
public class DarpTestbedKmlVisualisator {
private static final Logger logger = Logger.getLogger(DarpTestbedKmlVisualisator.class);
private final DatabaseConnectionSettings settings;
private final int interval;
private final String schemaName;
private final String outputFolder;
private final boolean interpolate;
private final String additionalResourcesFolderPath;
public DarpTestbedKmlVisualisator(DatabaseConnectionSettings settings, int interval, String schemaName,
String outputFolder, boolean interpolate, String additionalResourcesFolderPath) {
super();
this.settings = settings;
this.interval = interval;
this.schemaName = schemaName;
this.outputFolder = outputFolder;
this.interpolate = interpolate;
this.additionalResourcesFolderPath = additionalResourcesFolderPath;
}
public void visualize() {
DatabaseConnection conn = new H2InMemoryConnection(settings);
try {
conn.connect();
logger.info("Preparing KML visualization...");
List<SimpleKmlItemBuilder> itemBuilders = new ArrayList<>();
itemBuilders.add(new RequestNumbersScreenOverlayKmlItemBuilder(conn, schemaName, interval));
itemBuilders.add(new ActivePassengersKmlItemBuilder(conn, schemaName, interval, Color.CYAN, interpolate));
itemBuilders.add(new TaxiDriverKmlItemBuilder(conn, schemaName, interval, Color.YELLOW, interpolate));
// itemBuilders.add(new TaxiPassengerPairKmlItemBuilder(conn, schemaName, interval, Color.MAGENTA));
itemBuilders.add(new PassengerTaxiDriverPairKmlItemBuilder(conn, schemaName, interval));
itemBuilders.add(RequestNotificationKmlItemBuilder.createSuccessNotificationKmlItemBuilder(conn,
schemaName, interval, interval * 10));
itemBuilders.add(RequestNotificationKmlItemBuilder.createFailNotificationKmlItemBuilder(conn, schemaName,
interval, interval * 10));
itemBuilders.add(RequestHeatMapKmlItemBuilder.createSuccessRequestHeatMapKmlItemBuilder(conn, schemaName,
interval));
itemBuilders.add(RequestHeatMapKmlItemBuilder.createFailRequestHeatMapKmlItemBuilder(conn, schemaName,
interval));
KmlItemBuilder.saveBuiltKmlItemsToSeparateFiles(itemBuilders, outputFolder, additionalResourcesFolderPath);
conn.close();
} catch (ClassNotFoundException | SQLException | IOException e) {
logger.error("Export to kml cant't be done.",e);
}
}
}