All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.molr.commons.domain.dto.AgencyStateDto Maven / Gradle / Ivy

package io.molr.commons.domain.dto;

import io.molr.commons.domain.AgencyState;
import io.molr.commons.domain.ImmutableAgencyState;
import io.molr.commons.domain.Mission;
import io.molr.commons.domain.MissionInstance;

import java.util.Collections;
import java.util.Set;

import static java.util.stream.Collectors.toSet;

public class AgencyStateDto {

    public final Set availableMissions;
    public final Set activeMissions;

    public AgencyStateDto(Set availableMissions, Set activeMissions) {
        this.availableMissions = availableMissions;
        this.activeMissions = activeMissions;
    }

    public AgencyStateDto() {
        this.availableMissions = null;
        this.activeMissions = Collections.emptySet();
    }

    public static final AgencyStateDto from(AgencyState agencyState) {
        Set missions = agencyState.executableMissions().stream().map(MissionDto::from).collect(toSet());
        Set instances = agencyState.activeMissions().stream().map(MissionInstanceDto::from).collect(toSet());
        return new AgencyStateDto(missions, instances);
    }

    public AgencyState toAgencyState() {
        Set missions = this.availableMissions.stream().map(MissionDto::toMission).collect(toSet());
        Set instances = this.activeMissions.stream().map(MissionInstanceDto::toMissionInstance).collect(toSet());
        return ImmutableAgencyState.of(missions, instances);
    }

    @Override
    public String toString() {
        return "AgencyStateDto{" +
                "activeMissions=" + activeMissions +
                '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy