Пример #1
0
  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);
  }