package games.strategy.triplea.delegate.dataObjects; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import games.strategy.engine.data.Route; import games.strategy.engine.data.Unit; public class MoveDescription extends AbstractMoveDescription { private static final long serialVersionUID = 2199608152808948043L; private final Route m_route; private final Collection<Unit> m_transportsThatCanBeLoaded; private final Map<Unit, Collection<Unit>> m_dependentUnits; public MoveDescription(final Collection<Unit> units, final Route route, final Collection<Unit> transportsThatCanBeLoaded, final Map<Unit, Collection<Unit>> dependentUnits) { super(units); m_route = route; m_transportsThatCanBeLoaded = transportsThatCanBeLoaded; if (dependentUnits != null && !dependentUnits.isEmpty()) { m_dependentUnits = new HashMap<>(); for (final Entry<Unit, Collection<Unit>> entry : dependentUnits.entrySet()) { m_dependentUnits.put(entry.getKey(), new HashSet<>(entry.getValue())); } } else { m_dependentUnits = null; } } public MoveDescription(final Collection<Unit> units, final Route route, final Collection<Unit> transportsThatCanBeLoaded) { super(units); m_route = route; m_transportsThatCanBeLoaded = transportsThatCanBeLoaded; m_dependentUnits = null; } public MoveDescription(final Collection<Unit> units, final Route route) { super(units); m_route = route; m_transportsThatCanBeLoaded = null; m_dependentUnits = null; } public Route getRoute() { return m_route; } @Override public String toString() { return "Move message route:" + m_route + " units:" + getUnits(); } public Collection<Unit> getTransportsThatCanBeLoaded() { if (m_transportsThatCanBeLoaded == null) { return Collections.emptyList(); } return m_transportsThatCanBeLoaded; } public Map<Unit, Collection<Unit>> getDependentUnits() { if (m_dependentUnits == null) { return new HashMap<>(); } return m_dependentUnits; } }