View Javadoc

1   package net.sf.magicproject.chart.datasets;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import net.sf.magicproject.chart.ChartFilter;
7   import net.sf.magicproject.chart.IChartKey;
8   import net.sf.magicproject.chart.IDataProvider;
9   import net.sf.magicproject.clickable.targetable.card.CardModel;
10  
11  import org.jfree.data.category.DefaultCategoryDataset;
12  
13  /***
14   * 
15   */
16  public class BarDataset extends DefaultCategoryDataset implements Dataset {
17  
18  	/***
19  	 * Create a new instance of this class.
20  	 * 
21  	 * @param provider
22  	 *          the key provider.
23  	 * @param filter
24  	 *          the filter attached to this dataset.
25  	 */
26  	public BarDataset(IDataProvider provider, ChartFilter filter) {
27  		super();
28  		this.provider = provider;
29  		this.filter = filter;
30  		this.workingKeys = new ArrayList<IChartKey>();
31  	}
32  
33  	/***
34  	 * Add cards to all datasets.
35  	 * 
36  	 * @param cardModel
37  	 *          the card to add.
38  	 * @param amount
39  	 *          the amount of card to add.
40  	 */
41  	public void addCard(final CardModel cardModel, final int amount) {
42  		for (IChartKey key : provider.getKeys(cardModel, filter)) {
43  			if (workingKeys.contains(key)) {
44  				try {
45  					setValue(key,
46  							new Integer(getValue("My Key", key).intValue() + amount));
47  				} catch (Exception e) {
48  					e.printStackTrace();
49  				}
50  			} else {
51  				workingKeys.add(key);
52  				setValue(new Integer(amount), "My Key", key);
53  			}
54  		}
55  		fireDatasetChanged();
56  	}
57  
58  	/***
59  	 * Remove cards to all datasets.
60  	 * 
61  	 * @param cardModel
62  	 *          the card to remove.
63  	 * @param amount
64  	 *          the amount of card to remove.
65  	 */
66  	public void removeCard(final CardModel cardModel, final int amount) {
67  		try {
68  			for (IChartKey key : provider.getKeys(cardModel, filter)) {
69  				final int value = Math.max(getValue("My Key", key).intValue() - amount,
70  						0);
71  				if (value == 0) {
72  					workingKeys.remove(key);
73  					removeColumn(key);
74  				} else {
75  					setValue(key, value);
76  				}
77  			}
78  		} catch (Exception e) {
79  			e.printStackTrace();
80  		}
81  		fireDatasetChanged();
82  	}
83  
84  	public void removeAll() {
85  		for (IChartKey key : workingKeys)
86  			super.removeColumn(key);
87  		workingKeys.clear();
88  	}
89  
90  	public void setValue(IChartKey key, Integer value) {
91  		super.setValue(value, "My Key", key);
92  	}
93  
94  	private final List<IChartKey> workingKeys;
95  
96  	private final IDataProvider provider;
97  
98  	private final ChartFilter filter;
99  
100 }