public static DispatcherResult buildResult()

in prototype/dispatch/order-dispatcher/src/main/java/com/aws/proto/dispatching/planner/solution/v1/SolutionConsumer.java [72:113]


    public static DispatcherResult buildResult(DispatchingSolution solution, SolverStatus solverStatus) {
        DispatcherResult result = new DispatcherResult();

        result.problemId = solution.getId();
        result.score = solution.getScore().toString();
        result.state = solverStatus.name();

        List<PlanningDriver> drivers = solution.getPlanningDrivers();

        List<DispatcherResult.AssignedOrders> assignedOrders = new ArrayList<>();
        for(PlanningDriver driver : drivers) {
            List<String> orderIds = new ArrayList<>();
            List<DispatcherResult.Visit> visits = new ArrayList<>();

            PlanningVisit visit = driver.getNextPlanningVisit();
            if(visit == null) {
                continue;
            }

            while(visit != null) {
                orderIds.add(visit.getOrder().getOrderId());
                visits.add(new DispatcherResult.Visit(visit.getLocation()));

                visit = visit.getNextPlanningVisit();
            }

            assignedOrders.add(new DispatcherResult.AssignedOrders(
              driver.getId(),
              driver.getDriverIdentity(),
              driver.getLocation(),
              orderIds,
              visits
            ));
        }


        result.assigned = assignedOrders;
        // currently we don't have a mechanism to keep orders unassigned
        result.unassigned = new ArrayList<>();

        return result;
    }