package games.strategy.triplea.printgenerator; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import games.strategy.debug.ClientLogger; import games.strategy.engine.data.GameData; import games.strategy.engine.data.PlayerID; import games.strategy.engine.data.Resource; public class PUInfo { private final Map<PlayerID, Map<Resource, Integer>> m_infoMap = new HashMap<>(); protected void saveToFile(final PrintGenerationData printData) { final GameData m_data = printData.getData(); final PrintGenerationData m_printData = printData; Iterator<PlayerID> m_playerIterator = m_data.getPlayerList().iterator(); while (m_playerIterator.hasNext()) { final PlayerID currentPlayer = m_playerIterator.next(); final Iterator<Resource> resourceIterator = m_data.getResourceList().getResources().iterator(); final Map<Resource, Integer> resourceMap = new HashMap<>(); while (resourceIterator.hasNext()) { final Resource currentResource = resourceIterator.next(); final int amountOfResource = currentPlayer.getResources().getQuantity(currentResource); resourceMap.put(currentResource, amountOfResource); } m_infoMap.put(currentPlayer, resourceMap); } FileWriter resourceWriter = null; try { final File outFile = new File(m_printData.getOutDir(), "General Information.csv"); resourceWriter = new FileWriter(outFile, true); // Print Title final int numResources = m_data.getResourceList().size(); for (int i = 0; i < numResources / 2 - 1 + numResources % 2; i++) { resourceWriter.write(","); } resourceWriter.write("Resource Chart"); for (int i = 0; i < numResources / 2 - numResources % 2; i++) { resourceWriter.write(","); } resourceWriter.write("\r\n"); // Print Resources final Iterator<Resource> resourceIterator = m_data.getResourceList().getResources().iterator(); resourceWriter.write(","); while (resourceIterator.hasNext()) { final Resource currentResource = resourceIterator.next(); resourceWriter.write(currentResource.getName() + ","); } resourceWriter.write("\r\n"); // Print Player's and Resource Amount's m_playerIterator = m_data.getPlayerList().iterator(); while (m_playerIterator.hasNext()) { final PlayerID currentPlayer = m_playerIterator.next(); resourceWriter.write(currentPlayer.getName()); final Map<Resource, Integer> resourceMap = m_infoMap.get(currentPlayer); final Iterator<Resource> resIterator = resourceMap.keySet().iterator(); while (resIterator.hasNext()) { final Resource currentResource = resIterator.next(); final int amountResource = resourceMap.get(currentResource); resourceWriter.write("," + amountResource); } resourceWriter.write("\r\n"); } resourceWriter.write("\r\n"); resourceWriter.close(); } catch (final IOException e) { ClientLogger.logQuietly(e); } } }