public void construirGrafico(String metrica) { if (metrica != null && getMetricas().contains(metrica)) { try { this.powerLow = new CartesianChartModel(); ChartSeries cs = new ChartSeries(); cs.setLabel(metrica); List<Object[]> o = new ArrayList<Object[]>(); for (Classe c : sistema.getClasses()) { if (metrica.equals(Metricas.LOC)) { o.add(new Object[] {c.getId(), c.getLoc()}); } else if (metrica.equals(Metricas.CBC)) { o.add(new Object[] {c.getId(), c.getCbc()}); } else if (metrica.equals(Metricas.FIN)) { o.add(new Object[] {c.getId(), c.getFin()}); } else if (metrica.equals(Metricas.FOUT)) { o.add(new Object[] {c.getId(), c.getFout()}); } else if (metrica.equals(Metricas.HNL)) { o.add(new Object[] {c.getId(), c.getHnl()}); } else if (metrica.equals(Metricas.LCM)) { o.add(new Object[] {c.getId(), c.getLcm()}); } else if (metrica.equals(Metricas.NOA)) { o.add(new Object[] {c.getId(), c.getNoa()}); } else if (metrica.equals(Metricas.NOAH)) { o.add(new Object[] {c.getId(), c.getNoia()}); } else if (metrica.equals(Metricas.NOC)) { o.add(new Object[] {c.getId(), c.getNoc()}); } else if (metrica.equals(Metricas.NOM)) { o.add(new Object[] {c.getId(), c.getNom()}); } else if (metrica.equals(Metricas.NOMH)) { o.add(new Object[] {c.getId(), c.getNoih()}); } else if (metrica.equals(Metricas.NOMO)) { o.add(new Object[] {c.getId(), c.getNomo()}); } else if (metrica.equals(Metricas.PRIA)) { o.add(new Object[] {c.getId(), c.getNopria()}); } else if (metrica.equals(Metricas.PRIM)) { o.add(new Object[] {c.getId(), c.getNoprim()}); } else if (metrica.equals(Metricas.PUBA)) { o.add(new Object[] {c.getId(), c.getNopuba()}); } else if (metrica.equals(Metricas.PUBM)) { o.add(new Object[] {c.getId(), c.getNopubm()}); } else if (metrica.equals(Metricas.RFC)) { o.add(new Object[] {c.getId(), c.getRfc()}); } else if (metrica.equals(Metricas.TNOC)) { o.add(new Object[] {c.getId(), c.getTnoc()}); } else if (metrica.equals(Metricas.WMC)) { o.add(new Object[] {c.getId(), c.getWmc()}); } else if (metrica.equals(Metricas.WOC)) { o.add(new Object[] {c.getId(), c.getWoc()}); } } Collections.sort( o, new Comparator<Object[]>() { @Override public int compare(Object[] o1, Object[] o2) { if (Long.parseLong(o1[1].toString()) > Long.parseLong(o2[1].toString())) { return 1; } else if (Long.parseLong(o1[1].toString()) < Long.parseLong(o2[1].toString())) { return -1; } else { return 0; } } }); int sum = 0; Long maior = Long.parseLong(o.get(o.size() - 1)[1].toString()); Long blocos = maior / 10; Long cont = blocos; for (Object[] o1 : o) { sum++; if (Long.parseLong(o1[1].toString()) >= cont) { cs.set("" + (cont), sum); cont += blocos; sum = 0; } } this.powerLow.addSeries(cs); } catch (Exception e) { FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", e.getLocalizedMessage()); FacesContext.getCurrentInstance().addMessage(null, msg); } return; } FacesMessage msg = new FacesMessage( FacesMessage.SEVERITY_INFO, "Indisponível", "Grafico para metrica selecionada indisponível"); FacesContext.getCurrentInstance().addMessage(null, msg); }