Skip to content

Commit b4aa34f

Browse files
author
Jarkko Laitinen
committed
Merge branch 'development'
2 parents 82905bb + 8eb6706 commit b4aa34f

File tree

7 files changed

+317
-3
lines changed

7 files changed

+317
-3
lines changed

fi/cosky/sdk/API.java

+8
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ private <T extends BaseData> T sendRequest(Verb verb, String url, Class<T> tClas
192192
connection.setRequestMethod(method(verb));
193193
connection.setInstanceFollowRedirects(false);
194194

195+
195196
if (tokenData != null) {
196197
connection.addRequestProperty("Authorization", tokenData.getTokenType() + " " + tokenData.getAccessToken());
197198
}
@@ -223,6 +224,13 @@ private <T extends BaseData> T sendRequest(Verb verb, String url, Class<T> tClas
223224
osw.close();
224225
}
225226
}
227+
else if (verb == verb.POST && object == null) {
228+
connection.addRequestProperty("Content-Length", "0");
229+
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
230+
osw.write("");
231+
osw.flush();
232+
osw.close();
233+
}
226234

227235
connection.connect();
228236

fi/cosky/sdk/FieldsItem.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ public class FieldsItem {
1111
private String Name;
1212
private String Uri;
1313
private List<RouteEventData> Events;
14-
14+
private KPIData KPIs;
15+
1516
public String getName() {
1617
return Name;
1718
}
@@ -24,6 +25,12 @@ public String getUri() {
2425
public void setUri(String uri) {
2526
Uri = uri;
2627
}
28+
public KPIData getKPIs() {
29+
return KPIs;
30+
}
31+
public void setKPIs(KPIData kPIs) {
32+
KPIs = kPIs;
33+
}
2734
public List<RouteEventData> getEvents() {
2835
return Events;
2936
}
@@ -35,4 +42,6 @@ public void setEvents(List<RouteEventData> events) {
3542
public String toString() {
3643
return this.Name + " " + this.Uri + " " + Events;
3744
}
45+
46+
3847
}

fi/cosky/sdk/KPIData.java

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package fi.cosky.sdk;
2+
/*
3+
* This file is subject to the terms and conditions defined in
4+
* file 'LICENSE.txt', which is part of this source code package.
5+
*/
6+
7+
public class KPIData {
8+
private double AccumulatedTravelTimeWithCargo;
9+
private double AccumulatedTravelTimeEmpty;
10+
private double AccumulatedLoadingTime;
11+
private double AccumulatedWaitingTime;
12+
private double AccumulatedWorkingTime;
13+
private double AccumulatedTravelDistance;
14+
private double AccumulatedPickups;
15+
private double AccumulatedDeliveries;
16+
private double LoadPercentage;
17+
private double HighestLoadPercentage;
18+
private double TravelTimeWithCargoPercentage;
19+
private double TravelTimeEmptyPercentage;
20+
private double LoadingTimePercentage;
21+
private double WaitingTimePercentage;
22+
23+
public double getAccumulatedTravelTimeWithCargo() {
24+
return AccumulatedTravelTimeWithCargo;
25+
}
26+
public void setAccumulatedTravelTimeWithCargo(
27+
double accumulatedTravelTimeWithCargo) {
28+
AccumulatedTravelTimeWithCargo = accumulatedTravelTimeWithCargo;
29+
}
30+
public double getAccumulatedTravelTimeEmpty() {
31+
return AccumulatedTravelTimeEmpty;
32+
}
33+
public void setAccumulatedTravelTimeEmpty(double accumulatedTravelTimeEmpty) {
34+
AccumulatedTravelTimeEmpty = accumulatedTravelTimeEmpty;
35+
}
36+
public double getAccumulatedLoadingTime() {
37+
return AccumulatedLoadingTime;
38+
}
39+
public void setAccumulatedLoadingTime(double accumulatedLoadingTime) {
40+
AccumulatedLoadingTime = accumulatedLoadingTime;
41+
}
42+
public double getAccumulatedWaitingTime() {
43+
return AccumulatedWaitingTime;
44+
}
45+
public void setAccumulatedWaitingTime(double accumulatedWaitingTime) {
46+
AccumulatedWaitingTime = accumulatedWaitingTime;
47+
}
48+
public double getAccumulatedWorkingTime() {
49+
return AccumulatedWorkingTime;
50+
}
51+
public void setAccumulatedWorkingTime(double accumulatedWorkingTime) {
52+
AccumulatedWorkingTime = accumulatedWorkingTime;
53+
}
54+
public double getAccumulatedTravelDistance() {
55+
return AccumulatedTravelDistance;
56+
}
57+
public void setAccumulatedTravelDistance(double accumulatedTravelDistance) {
58+
AccumulatedTravelDistance = accumulatedTravelDistance;
59+
}
60+
public double getAccumulatedPickups() {
61+
return AccumulatedPickups;
62+
}
63+
public void setAccumulatedPickups(double accumulatedPickups) {
64+
AccumulatedPickups = accumulatedPickups;
65+
}
66+
public double getAccumulatedDeliveries() {
67+
return AccumulatedDeliveries;
68+
}
69+
public void setAccumulatedDeliveries(double accumulatedDeliveries) {
70+
AccumulatedDeliveries = accumulatedDeliveries;
71+
}
72+
public double getLoadPercentage() {
73+
return LoadPercentage;
74+
}
75+
public void setLoadPercentage(double loadPercentage) {
76+
LoadPercentage = loadPercentage;
77+
}
78+
public double getHighestLoadPercentage() {
79+
return HighestLoadPercentage;
80+
}
81+
public void setHighestLoadPercentage(double highestLoadPercentage) {
82+
HighestLoadPercentage = highestLoadPercentage;
83+
}
84+
public double getTravelTimeWithCargoPercentage() {
85+
return TravelTimeWithCargoPercentage;
86+
}
87+
public void setTravelTimeWithCargoPercentage(
88+
double travelTimeWithCargoPercentage) {
89+
TravelTimeWithCargoPercentage = travelTimeWithCargoPercentage;
90+
}
91+
public double getTravelTimeEmptyPercentage() {
92+
return TravelTimeEmptyPercentage;
93+
}
94+
public void setTravelTimeEmptyPercentage(double travelTimeEmptyPercentage) {
95+
TravelTimeEmptyPercentage = travelTimeEmptyPercentage;
96+
}
97+
public double getLoadingTimePercentage() {
98+
return LoadingTimePercentage;
99+
}
100+
public void setLoadingTimePercentage(double loadingTimePercentage) {
101+
LoadingTimePercentage = loadingTimePercentage;
102+
}
103+
public double getWaitingTimePercentage() {
104+
return WaitingTimePercentage;
105+
}
106+
public void setWaitingTimePercentage(double waitingTimePercentage) {
107+
WaitingTimePercentage = waitingTimePercentage;
108+
}
109+
}

fi/cosky/sdk/PlanData.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
public class PlanData extends BaseData {
1010
private int VersionNumber;
1111
private List<FieldsItem> Items;
12+
private KPIData KPIs;
13+
private List<TaskData> Unassigned;
1214

1315
public int getVersionNumber() {
1416
return VersionNumber;
@@ -23,5 +25,16 @@ public void setItems(List<FieldsItem> items) {
2325
Items = items;
2426
}
2527

26-
28+
public KPIData getKPIs() {
29+
return KPIs;
30+
}
31+
public void setKPIs(KPIData kPIs) {
32+
KPIs = kPIs;
33+
}
34+
public List<TaskData> getUnassigned() {
35+
return Unassigned;
36+
}
37+
public void setUnassigned(List<TaskData> unassigned) {
38+
Unassigned = unassigned;
39+
}
2740
}

fi/cosky/sdk/RouteEventData.java

+17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class RouteEventData extends BaseData {
1616
private Date ArrivalTime;
1717
private Date DepartureTime;
1818
private String State;
19+
private KPIData KPIs;
1920

2021
int getVersionNumber() {
2122
return VersionNumber;
@@ -71,5 +72,21 @@ public String getState() {
7172
public void setState(String state) {
7273
State = state;
7374
}
75+
76+
public String getFeasibilityState() {
77+
return FeasibilityState;
78+
}
79+
80+
public void setFeasibilityState(String feasibilityState) {
81+
FeasibilityState = feasibilityState;
82+
}
83+
84+
public KPIData getKPIs() {
85+
return KPIs;
86+
}
87+
88+
public void setKPIs(KPIData kPIs) {
89+
KPIs = kPIs;
90+
}
7491

7592
}

fi/cosky/sdk/VehicleTypeData.java

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package fi.cosky.sdk;
2+
3+
import java.util.ArrayList;
4+
5+
public class VehicleTypeData extends BaseData {
6+
private ArrayList<String> VehicleTypes;
7+
8+
public ArrayList<String> getVehicleTypes() {
9+
return VehicleTypes;
10+
}
11+
12+
public void setVehicleTypes(ArrayList<String> vehicleTypes) {
13+
VehicleTypes = vehicleTypes;
14+
}
15+
}

fi/cosky/sdk/tests/SdkTests.java

+144-1
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ public void T27TestUpdatingRoutingProblemSettings() {
777777
RoutingProblemSettingsUpdateRequest updatedSettings = new RoutingProblemSettingsUpdateRequest();
778778
updatedSettings.setDefaultVehicleSpeedFactor(0.8);
779779
updatedSettings.setDefaultVehicleSpeedProfile(SpeedProfile.Max120Kmh);
780-
//##END EXAMPLE changeproblemsettings##
780+
//##END EXAMPLE##
781781
ResponseData response = api.navigate(ResponseData.class, settings.getLink("update-settings"), updatedSettings);
782782
before = settings;
783783
settings = api.navigate(RoutingProblemSettingsData.class, routingProblemData.getLink("view-settings"));
@@ -787,4 +787,147 @@ public void T27TestUpdatingRoutingProblemSettings() {
787787
}
788788
assertNotEquals(before.getDefaultVehicleSpeedProfile(), after.getDefaultVehicleSpeedProfile());
789789
}
790+
791+
@Test
792+
public void T28TestRequestingVehicleTypesFromProblem() {
793+
API api = TestHelper.authenticate();
794+
UserData user = TestHelper.getOrCreateUser(api);
795+
RoutingProblemData routingProblemData = TestHelper.createProblem(api, user);
796+
ArrayList<String> vehicleTypes = new ArrayList<String>();
797+
vehicleTypes.add("Rekka");
798+
vehicleTypes.add("Auto");
799+
800+
ArrayList<String> vehicleTypesFromServer = null;
801+
try {
802+
LocationData start = TestHelper.createLocationWithCoordinates(Location.VEHICLE_START);
803+
LocationData end = TestHelper.createLocationWithCoordinates(Location.TASK_DELIVERY);
804+
805+
ArrayList<CapacityData> capacities = new ArrayList<CapacityData>();
806+
CapacityData capa = new CapacityData("asdf", 100);
807+
capacities.add(capa);
808+
VehicleUpdateRequest vehicle1 = new VehicleUpdateRequest("auto1", capacities, start, end);
809+
vehicle1.setVehicleType(vehicleTypes.get(0));
810+
811+
VehicleUpdateRequest vehicle2 = new VehicleUpdateRequest("auto2", capacities, start, end);
812+
vehicle2.setVehicleType(vehicleTypes.get(1));
813+
ArrayList<VehicleUpdateRequest> both = new ArrayList<VehicleUpdateRequest>();
814+
both.add(vehicle1); both.add(vehicle2);
815+
VehicleSetImportRequest vehicles = new VehicleSetImportRequest();
816+
vehicles.setItems(both);
817+
818+
ResponseData response = api.navigate(ResponseData.class, routingProblemData.getLink("import-vehicles"), vehicles);
819+
820+
VehicleTypeData vehicleType = api.navigate(VehicleTypeData.class, routingProblemData.getLink("get-types"));
821+
vehicleTypesFromServer = vehicleType.getVehicleTypes();
822+
} catch (Exception e) {
823+
824+
}
825+
assertEquals(vehicleTypesFromServer.size(), vehicleTypes.size());
826+
assertEquals(vehicleTypesFromServer.get(0), vehicleTypes.get(0));
827+
assertEquals(vehicleTypesFromServer.get(1), vehicleTypes.get(1));
828+
}
829+
830+
@Test
831+
public void T29TestRequestingTasksAndVehiclesWhileOptimizing() {
832+
API api = TestHelper.authenticate();
833+
UserData user = TestHelper.getOrCreateUser(api);
834+
RoutingProblemData problem = TestHelper.createProblem(api, user);
835+
836+
VehicleSetImportRequest vehicles = new VehicleSetImportRequest();
837+
List<VehicleUpdateRequest> vehicleList = new ArrayList<VehicleUpdateRequest>();
838+
839+
for (int i = 0; i < 3; i++) {
840+
vehicleList.add(TestHelper.createVehicleUpdateRequest("vehicle"+i));
841+
}
842+
vehicles.setItems(vehicleList);
843+
844+
TaskSetImportRequest tasks = new TaskSetImportRequest();
845+
List<TaskUpdateRequest> taskList = TestHelper.createListOfTasks(10);
846+
tasks.setItems(taskList);
847+
VehicleDataSet veh = null;
848+
TaskDataSet tas = null;
849+
try {
850+
851+
ImportRequest importRequest = new ImportRequest();
852+
importRequest.setVehicles(vehicles);
853+
importRequest.setTasks(tasks);
854+
855+
ResponseData response = api.navigate(ResponseData.class, problem.getLink("import-data"), importRequest);
856+
System.out.println(response.getLocation());
857+
ImportData result = api.navigate(ImportData.class, response.getLocation());
858+
859+
response = api.navigate(ResponseData.class, result.getLink("apply-import"));
860+
System.out.println(response);
861+
problem.setState("Running");
862+
response = api.navigate(ResponseData.class, problem.getLink("toggle-optimization"), problem.toRequest());
863+
864+
problem = api.navigate(RoutingProblemData.class, response.getLocation());
865+
866+
while (problem.getProgress() < 10 ) {
867+
Thread.sleep(1500);
868+
problem = api.navigate(RoutingProblemData.class, problem.getLink("self"));
869+
}
870+
871+
veh = api.navigate(VehicleDataSet.class, problem.getLink("list-vehicles"));
872+
tas = api.navigate(TaskDataSet.class, problem.getLink("list-tasks"));
873+
874+
} catch (Exception e){
875+
System.out.println(e.getMessage());
876+
}
877+
878+
assertNotNull(veh.getItems());
879+
assertNotNull(tas.getItems());
880+
}
881+
882+
883+
@Test
884+
public void T30TestGettingKPIsThroughtTheAPI() {
885+
API api = TestHelper.authenticate();
886+
UserData user = TestHelper.getOrCreateUser(api);
887+
RoutingProblemData problem = TestHelper.createProblem(api, user);
888+
889+
RoutingProblemUpdateRequest requ = problem.toRequest();
890+
requ.setState("Running");
891+
PlanData plan = null;
892+
VehicleSetImportRequest vehicles = new VehicleSetImportRequest();
893+
List<VehicleUpdateRequest> vehicleList = new ArrayList<VehicleUpdateRequest>();
894+
895+
for (int i = 0; i < 3; i++) {
896+
vehicleList.add(TestHelper.createVehicleUpdateRequest("vehicle"+i));
897+
}
898+
vehicles.setItems(vehicleList);
899+
900+
TaskSetImportRequest tasks = new TaskSetImportRequest();
901+
List<TaskUpdateRequest> taskList = TestHelper.createListOfTasks(10);
902+
tasks.setItems(taskList);
903+
904+
try {
905+
ImportRequest importRequest = new ImportRequest();
906+
importRequest.setVehicles(vehicles);
907+
importRequest.setTasks(tasks);
908+
909+
ResponseData response = api.navigate(ResponseData.class, problem.getLink("import-data"), importRequest);
910+
System.out.println(response.getLocation());
911+
ImportData result = api.navigate(ImportData.class, response.getLocation());
912+
913+
response = api.navigate(ResponseData.class, result.getLink("apply-import"));
914+
System.out.println(response);
915+
problem.setState("Running");
916+
response = api.navigate(ResponseData.class, problem.getLink("toggle-optimization"), problem.toRequest());
917+
918+
919+
problem = api.navigate(RoutingProblemData.class, response.getLocation());
920+
while (problem.getState().equals("Running")) {
921+
Thread.sleep(1000);
922+
System.out.println(problem.getProgress());
923+
problem = api.navigate(RoutingProblemData.class, response.getLocation());
924+
}
925+
926+
plan = api.navigate(PlanData.class, problem.getLink("plan"));
927+
} catch (Exception e) {
928+
929+
}
930+
assertNotNull(plan.getKPIs());
931+
}
932+
790933
}

0 commit comments

Comments
 (0)