public void obtieneComponentes() {
   if (nuevoObjetivoestrategicoindicador.getIndicador().getFormula() != null) {
     if (!nuevoObjetivoestrategicoindicador.getIndicador().getFormula().equals("")) {
       String formula =
           nuevoObjetivoestrategicoindicador
               .getIndicador()
               .getFormula()
               .replaceAll("\\s", "")
               .trim();
       Validacion cadena = new Validacion(formula);
       if (cadena.Exp_Valida()) {
         String Exp = formula.trim();
         // Borra parentesis del inicio y fin si toda la expresion esta entre parentesis
         if (Exp.charAt(0) == '(' && Exp.charAt(Exp.length() - 1) == ')') {
           int p = 1, i = 1;
           while (p != 0) {
             if (Exp.charAt(i) == '(') {
               p++;
             }
             if (Exp.charAt(i) == ')') {
               p--;
             }
             i++;
           }
           if (i == Exp.length()) {
             Exp = Exp.substring(1, Exp.length() - 1);
           }
         }
         arbol = new Arbol(Exp);
         arbol.Formar_Arbol();
         List term = arbol.listarTerminos();
         nuevoObjetivoestrategicoindicador
             .getIndicador()
             .setComponenteformlaCollection(new ArrayList());
         for (int i = 0; i < term.size(); i++) {
           System.out.println("term " + term.get(i));
           Componenteformla c = new Componenteformla();
           c.setDescripcion((String) term.get(i));
           c.setIdindicador(nuevoObjetivoestrategicoindicador.getIndicador());
           nuevoObjetivoestrategicoindicador.getIndicador().getComponenteformlaCollection().add(c);
         }
       }
     }
   }
 }
 public void calculaIndicador() {
   boolean calucular = true;
   System.out.println("inicio");
   for (Detallehistorial d : itemsdetalle) {
     System.out.println("Valor " + d.getValor());
     if (d.getValor() == null) calucular = false;
   }
   System.out.println(calucular);
   if (calucular) {
     if (!metaSeleccionada.getIndicador().getFormula().equals("")) {
       String formula = metaSeleccionada.getIndicador().getFormula().replaceAll("\\s", "").trim();
       Validacion cadena = new Validacion(formula);
       if (cadena.Exp_Valida()) {
         String Exp = formula.trim();
         // Borra parentesis del inicio y fin si toda la expresion esta entre parentesis
         if (Exp.charAt(0) == '(' && Exp.charAt(Exp.length() - 1) == ')') {
           int p = 1, i = 1;
           while (p != 0) {
             if (Exp.charAt(i) == '(') {
               p++;
             }
             if (Exp.charAt(i) == ')') {
               p--;
             }
             i++;
           }
           if (i == Exp.length()) {
             Exp = Exp.substring(1, Exp.length() - 1);
           }
         }
         arbol = new Arbol(Exp);
         arbol.Formar_Arbol();
         arbol.reemplazarValores(itemsdetalle);
         List term = arbol.listarTerminos();
         nuevoObjetivoestrategicoindicador
             .getIndicador()
             .setComponenteformlaCollection(new ArrayList());
         nuevoVolorIndocador = Double.parseDouble(arbol.Calcular());
         for (int i = 0; i < term.size(); i++) {
           System.out.println("term " + term.get(i));
         }
       }
     }
   }
 }