/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.components.jsprit.tabledefinitions; import static com.opendoorlogistics.api.components.PredefinedTags.*; import com.opendoorlogistics.api.tables.ODLDatastoreAlterable; import com.opendoorlogistics.api.tables.ODLTableDefinitionAlterable; import com.opendoorlogistics.api.tables.TableFlags; import com.opendoorlogistics.components.jsprit.VRPConfig; import com.opendoorlogistics.components.jsprit.VRPBuilder.TravelCostType; public class RouteDetailsTableDfn extends TableDfn{ public final int []capacity; public final int []capacityViolation; public final int deliveriesCount; public final int []deliveredQuantities; public final int endTime; public final int endTimeWindow; public final int [] pickedUpQuantities; public final int pickupsCount; public final int [] startQuantities; public final int startTime; public final int startTimeWindow; public final int stopCount; public final int time; public final int timeWindowViolation; public final int [] travelCosts = new int[TravelCostType.values().length]; public final int vehicleId; public final int vehicleName; public final int waitingTime; public final int hasViolation; public final int skills; public final int speedMultiplier; public RouteDetailsTableDfn(ODLDatastoreAlterable<? extends ODLTableDefinitionAlterable> ds, VRPConfig config) { super(ds, "Route-Details"); vehicleName = addStrColumn(VEHICLE_NAME); vehicleId = addStrColumn(VEHICLE_ID); skills = addStrColumn("skills"); speedMultiplier = addDblColumn("speed-multiplier"); table.setColumnFlags(vehicleId, table.getColumnFlags(vehicleId) | TableFlags.FLAG_IS_REPORT_KEYFIELD); stopCount = addLngColumn(STOPS_COUNT); startTime = addTimeColumn(START_TIME); endTime = addTimeColumn(END_TIME); hasViolation = addLngColumn("has-violation"); capacity = addQuantities(CAPACITY, config); capacityViolation = addQuantities("capacity-violation", config); deliveriesCount = addLngColumn(DELIVERIES_COUNT); deliveredQuantities = addQuantities("delivered-quantity", config); endTimeWindow = addTimeColumn(END_TIME_WINDOW); pickedUpQuantities = addQuantities("picked-up-quantity", config); pickupsCount = addLngColumn(PICKUPS_COUNT); startQuantities = addQuantities("start-quantity", config); startTimeWindow = addTimeColumn(START_TIME_WINDOW); time = addTimeColumn(TIME); timeWindowViolation = addTimeColumn(TIME_WINDOW_VIOLATION); travelCosts[TravelCostType.COST.ordinal()] = addDblColumn(TRAVEL_COST); travelCosts[TravelCostType.DISTANCE_KM.ordinal()] = addDblColumn(TRAVEL_KM); travelCosts[TravelCostType.TIME.ordinal()] = addTimeColumn(TRAVEL_TIME); waitingTime = addTimeColumn(WAITING_TIME); } }