/*
* Copyright 2009-2014 PrimeTek.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.primefaces.showcase.view.data.datatable;
import java.io.Serializable;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.showcase.domain.Player;
import org.primefaces.showcase.domain.Sale;
@ManagedBean(name="dtGroupView")
@ViewScoped
public class GroupView implements Serializable {
private final static String[] manufacturers;
private List<Sale> sales;
private final static String[] playerNames;
private List<Integer> years;
private List<Player> players;
static {
manufacturers = new String[10];
manufacturers[0] = "Apple";
manufacturers[1] = "Samsung";
manufacturers[2] = "Microsoft";
manufacturers[3] = "Philips";
manufacturers[4] = "Sony";
manufacturers[5] = "LG";
manufacturers[6] = "Sharp";
manufacturers[7] = "Panasonic";
manufacturers[8] = "HTC";
manufacturers[9] = "Nokia";
}
static {
playerNames = new String[10];
playerNames[0] = "Lionel Messi";
playerNames[1] = "Cristiano Ronaldo";
playerNames[2] = "Arjen Robben";
playerNames[3] = "Franck Ribery";
playerNames[4] = "Ronaldinho";
playerNames[5] = "Luis Suarez";
playerNames[6] = "Sergio Aguero";
playerNames[7] = "Zlatan Ibrahimovic";
playerNames[8] = "Neymar Jr";
playerNames[9] = "Andres Iniesta";
}
@PostConstruct
public void init() {
sales = new ArrayList<Sale>();
for(int i = 0; i < 10; i++) {
sales.add(new Sale(manufacturers[i], getRandomAmount(), getRandomAmount(), getRandomPercentage(), getRandomPercentage()));
}
years = new ArrayList<Integer>();
years.add(2010);
years.add(2011);
years.add(2012);
years.add(2013);
years.add(2014);
players = new ArrayList<Player>();
for(int i = 0; i < 10; i++) {
players.add(new Player(playerNames[i], generateRandomGoalStatsData()));
}
}
public List<Sale> getSales() {
return sales;
}
private int getRandomAmount() {
return (int) (Math.random() * 100000);
}
private int getRandomPercentage() {
return (int) (Math.random() * 100);
}
public String getLastYearTotal() {
int total = 0;
for(Sale sale : getSales()) {
total += sale.getLastYearSale();
}
return new DecimalFormat("###,###.###").format(total);
}
public String getThisYearTotal() {
int total = 0;
for(Sale sale : getSales()) {
total += sale.getThisYearSale();
}
return new DecimalFormat("###,###.###").format(total);
}
public List<Integer> getYears() {
return years;
}
public int getYearCount() {
return years.size();
}
public List<Player> getPlayers() {
return players;
}
private Map<Integer,Integer> generateRandomGoalStatsData() {
Map<Integer,Integer> stats = new LinkedHashMap<Integer, Integer>();
for (int i = 0; i < 5; i++) {
stats.put(years.get(i), getRandomGoals());
}
return stats;
}
private int getRandomGoals() {
return (int) (Math.random() * 50);
}
}