package games.strategy.engine.data.changefactory; import java.util.Map; import games.strategy.engine.data.BattleRecordsList; import games.strategy.engine.data.Change; import games.strategy.engine.data.GameData; import games.strategy.triplea.delegate.dataObjects.BattleRecords; class RemoveBattleRecordsChange extends Change { private static final long serialVersionUID = 3286634991233029854L; private final BattleRecords m_recordsToRemove; private final int m_round; RemoveBattleRecordsChange(final BattleRecords battleRecords, final int round) { m_round = round; // do not make a copy, this is only called from AddBattleRecordsChange, and we make a copy when we // perform, so no need for another copy. m_recordsToRemove = battleRecords; } @Override protected void perform(final GameData data) { final Map<Integer, BattleRecords> currentRecords = data.getBattleRecordsList().getBattleRecordsMap(); // make a copy else we will get a concurrent modification error BattleRecordsList.removeRecords(currentRecords, m_round, new BattleRecords(m_recordsToRemove)); } @Override public Change invert() { return new AddBattleRecordsChange(m_recordsToRemove, m_round); } @Override public String toString() { // This only occurs when serialization went badly, or something cannot be serialized. if (m_recordsToRemove == null) { throw new IllegalStateException( "Records cannot be null (most likely caused by improper or impossible serialization): " + m_recordsToRemove); } return "Adding Battle Records: " + m_recordsToRemove; } }