/** * Copyright (C) 2002-2012 The FreeCol Team * * This file is part of FreeCol. * * FreeCol is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * FreeCol is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FreeCol. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.freecol.common.model; import java.util.ArrayList; import java.util.List; public class ProductionInfo { /** * The maximum production possible given unlimited input. */ private List<AbstractGoods> maximumProduction = new ArrayList<AbstractGoods>(); /** * The actual production. */ private List<AbstractGoods> production = new ArrayList<AbstractGoods>(); /** * The maximum consumption possible given unlimited input. */ private List<AbstractGoods> maximumConsumption = new ArrayList<AbstractGoods>(); /** * The actual consumption. */ private List<AbstractGoods> consumption = new ArrayList<AbstractGoods>(); /** * Get the <code>Consumption</code> value. * * @return a <code>List<AbstractGoods></code> value */ public final List<AbstractGoods> getConsumption() { return consumption; } /** * Set the <code>Consumption</code> value. * * @param newConsumption The new Consumption value. */ public final void setConsumption(final List<AbstractGoods> newConsumption) { this.consumption = newConsumption; } /** * Describe <code>addConsumption</code> method here. * * @param goods an <code>AbstractGoods</code> value */ public void addConsumption(AbstractGoods goods) { consumption.add(goods); } /** * Get the <code>Production</code> value. * * @return a <code>List<AbstractGoods></code> value */ public final List<AbstractGoods> getProduction() { return production; } /** * Set the <code>Production</code> value. * * @param newProduction The new Production value. */ public final void setProduction(final List<AbstractGoods> newProduction) { this.production = newProduction; } /** * Describe <code>addProduction</code> method here. * * @param goods an <code>AbstractGoods</code> value */ public void addProduction(AbstractGoods goods) { production.add(goods); } /** * Describe <code>addProduction</code> method here. * * @param goods an <code>AbstractGoods</code> value */ public void addProduction(List<AbstractGoods> goods) { production.addAll(goods); } /** * Get the <code>MaximumProduction</code> value. * * @return a <code>List<AbstractGoods></code> value */ public final List<AbstractGoods> getMaximumProduction() { return maximumProduction; } /** * Set the <code>MaximumProduction</code> value. * * @param newMaximumProduction The new MaximumProduction value. */ public final void setMaximumProduction(final List<AbstractGoods> newMaximumProduction) { this.maximumProduction = newMaximumProduction; } /** * Describe <code>addMaximumProduction</code> method here. * * @param goods an <code>AbstractGoods</code> value */ public void addMaximumProduction(AbstractGoods goods) { maximumProduction.add(goods); } /** * Returns true if production equals maximum production. * * @return a <code>boolean</code> value */ public boolean hasMaximumProduction() { if (maximumProduction.isEmpty()) { return true; } for (int index = 0; index < production.size(); index++) { if (maximumProduction.size() < index) { return true; } else if (maximumProduction.get(index).getAmount() > production.get(index).getAmount()) { return false; } } return true; } /** * Get the <code>MaximumConsumption</code> value. * * @return a <code>List<AbstractGoods></code> value */ public final List<AbstractGoods> getMaximumConsumption() { return maximumConsumption; } /** * Set the <code>MaximumConsumption</code> value. * * @param newMaximumConsumption The new MaximumConsumption value. */ public final void setMaximumConsumption(final List<AbstractGoods> newMaximumConsumption) { this.maximumConsumption = newMaximumConsumption; } /** * Describe <code>addMaximumConsumption</code> method here. * * @param goods an <code>AbstractGoods</code> value */ public void addMaximumConsumption(AbstractGoods goods) { maximumConsumption.add(goods); } public String toString() { StringBuilder result = new StringBuilder(); append(result, "Production", production); append(result, "Consumption", consumption); append(result, "Maximum Production", maximumProduction); append(result, "Maximum Consumption", maximumConsumption); return result.toString(); } private void append(StringBuilder result, String key, List<AbstractGoods> list) { if (!list.isEmpty()) { result.append(key + ": "); for (AbstractGoods goods : list) { result.append(goods.toString()); if (goods.getType().getStoredAs() != goods.getType()) { result.append(" [" + goods.getType().getStoredAs().getId() + "]"); } result.append(", "); } int length = result.length(); result.replace(length - 2, length, "\n"); } } }