JOptionPane.showMessageDialog(AbstractFrame.this,
"XML non parsato", SORRY,
JOptionPane.ERROR_MESSAGE);
return;
}
DataSetCreator datasetCreator = new DataSetCreator();
if (DIREZIONI_CONFERMATE) {
ArrayList<Skier> skiersList = editPanel.getSkiersList();
// prepare direction graph data
// per ogni MATCH prendo tutte le radioEntrate e calcolo
// per
// ognuna
// quanti escono dalle radioUscite
HashMap<Integer, ArrayList<Skier>> skierEntranceMap = new HashMap<Integer, ArrayList<Skier>>();
HashMap<Integer, ArrayList<Skier>> skierExitMap = new HashMap<Integer, ArrayList<Skier>>();
ArrayList<DirectionData> directions = new ArrayList<DirectionData>();
for (Integer intein : enters) {
DirectionData dd = new DirectionData(intein);
ArrayList<Skier> temp = new ArrayList<Skier>();
ArrayList<Skier> entrate = new ArrayList<Skier>();
ClickPolygon pEnter = editPanel.getPolygonMap()
.get(intein);
for (Skier s : skiersList) {
Point2D pN = pN(s.getPixmapX().get(0), s
.getPixmapY().get(0));
if (pEnter.contains(pN)) {
entrate.add(s);
temp.add(s);
}
}
skierEntranceMap.put(intein, entrate);
for (Integer inteout : exits) {
ExitDirectionData edd = new ExitDirectionData(
inteout);
ArrayList<Skier> uscite = new ArrayList<Skier>();
ArrayList<Skier> fnl = new ArrayList<Skier>();
ClickPolygon pExit = editPanel.getPolygonMap()
.get(inteout);
// conto per questo poligono quanti skiers
// escono
for (Skier s : skiersList) {
Point2D pN = pN(
s.getPixmapX().get(
s.getPixmapX().size() - 1),
s.getPixmapY().get(
s.getPixmapX().size() - 1));
if (pExit.contains(pN)) {
uscite.add(s);
}
}
// aggiungo ID poligono e numero di skiers che
// sono usciti nella mappa delle radioUscite
skierExitMap.put(inteout, uscite);
for (Skier s : temp) {
Point2D pN = pN(
s.getPixmapX().get(
s.getPixmapX().size() - 1),
s.getPixmapY().get(
s.getPixmapX().size() - 1));
if (pExit.contains(pN)) {
fnl.add(s);
}
}
edd.setListOfTraks(fnl);
dd.getListOfTo().add(edd);
}
directions.add(dd);
}
double f = Double.parseDouble(skiersList
.get(skiersList.size() - 1).getFrame().get(0));
int tokens = ((int) f / 15000) + 1;
/* PROVENIENZA SCIATORI */
// calcolo la lista di matchdata radioEntrate
ArrayList<MatchData> entersMatch = new ArrayList<MatchData>();
for (Integer id : skierEntranceMap.keySet())
entersMatch.add(computeMatchTokens(id, tokens,
skierEntranceMap.get(id), TOKEN_SIZE));
// creo il dataset
String[] labels = new String[enters.size()];
for (int i = 0; i < enters.size(); i++) {
labels[i] = enters.get(i).toString();
}
DefaultCategoryDataset enterDirectionDataset = datasetCreator
.createDirectionDataset(false, new int[] {},
computeReg(entersMatch), labels,
"entrati da ");
// creao il grafico
ProvenienzaChartCreator enterDirectionFactory = new ProvenienzaChartCreator(
enterDirectionDataset, "Provenienza sciatori");
JFreeChart enterDirectionChart = enterDirectionFactory
.createChart();
enterDirectionPanel = new ChartPanel(
enterDirectionChart);
enterDirectionPanel.setBorder(BorderFactory
.createLineBorder(Color.RED));
CategoryPlot cp = enterDirectionChart.getCategoryPlot();
BarRenderer renderer = (BarRenderer) cp.getRenderer();
// for (int c = 0; c < matchList.size(); c++) {
// renderer.setSeriesPaint(c, matchList.get(c)
// .getColor());
// }
enterDirectionPanel.setPreferredSize(new Dimension(400,
300));
enterDirectionPanel.setRangeZoomable(false);
/* DIREZIONI SCIATORI RIPARTITI DA PISTA */
// calcolo la lista di matchdata radioUscite
ArrayList<MatchData> exitsMatch = new ArrayList<MatchData>();
for (Integer id : skierExitMap.keySet())
exitsMatch.add(computeMatchTokens(id, tokens,
skierExitMap.get(id), TOKEN_SIZE));
// creo il dataset
labels = new String[exits.size()];
for (int i = 0; i < exits.size(); i++) {
labels[i] = exits.get(i).toString();
}
DefaultCategoryDataset exitDirectionDataset = datasetCreator
.createDirectionDataset(false,
computeStopped(exitsMatch),
computeReg(exitsMatch), labels,
"verso ");
// creao il grafico
DirectionChartCreator exitDirectionFactory = new DirectionChartCreator(
exitDirectionDataset,
"Direzione sciatori ripartiti da pista");
JFreeChart exitDirectionChart = exitDirectionFactory
.createChart();
exitDirectionPanel = new ChartPanel(exitDirectionChart);
exitDirectionPanel.setPreferredSize(new Dimension(400,
300));
exitDirectionPanel.setRangeZoomable(false);
exitDirectionPanel.setBorder(BorderFactory
.createLineBorder(Color.RED));
/* DIREZIONI SCIATORI PROVENDIENTI DA */
// calcolo la lista di datamatch
ArrayList<DirectionMatchData> directionmatchlist = new ArrayList<DirectionMatchData>();
listOfMatch = new ArrayList<ChartPanel>();
for (DirectionData data : directions) {
DirectionMatchData direction = new DirectionMatchData();
direction.setFrom(data.getFrom());
for (ExitDirectionData extdata : data.getListOfTo()) {
direction.add(computeMatchTokens(
extdata.getTo(), tokens,
extdata.getListOfTraks(), TOKEN_SIZE));
}
directionmatchlist.add(direction);
}
// creo il dataset
for (DirectionMatchData dirmatch : directionmatchlist) {
labels = new String[dirmatch.listOfTo.size()];
for (int i = 0; i < dirmatch.getListOfTo().size(); i++) {
labels[i] = String.valueOf(dirmatch
.getListOfTo().get(i).getId());
}
DefaultCategoryDataset directionDataset = datasetCreator
.createDirectionDataset(false,
computeStopped(dirmatch
.getListOfTo()),
computeReg(dirmatch.getListOfTo()),
labels, "verso ");
// creao il grafico
DirectionChartCreator directionFactory = new DirectionChartCreator(
directionDataset,
"Direzione sciatori proveniente da "
+ dirmatch.getFrom());
JFreeChart directionChart = directionFactory
.createChart();
ChartPanel directionPanel = new ChartPanel(
directionChart);
directionPanel.setBorder(BorderFactory
.createLineBorder(Color.RED));
directionPanel.setPreferredSize(new Dimension(400,
300));
directionPanel.setRangeZoomable(false);
listOfMatch.add(directionPanel);
}
}
CategoryDataset speedPercData = datasetCreator
.createSpeedPercentDataset(false,
new ArrayList<Skier>(skiersMap.values()));
CategoryDataset speedMaxData = datasetCreator
.createMaxSpeedPercentDataset(false,
new ArrayList<Skier>(skiersMap.values()));
new ArrayList<Skier>(skiersMap.values());
XYDataset densityData = datasetCreator
.createDensityDataset(parser.getTimeTokenListList());
SpeedPercentChartCreator percSpeedFactory = new SpeedPercentChartCreator(
speedPercData);
SpeedMaxChartCreator maxSpeedFactory = new SpeedMaxChartCreator(