コード例 #1
0
  private String getCriteriasSQLWhere(final List<Object> params) {
    final String joinClause = isJoinClauseAnd() ? " AND " : " OR ";
    final StringBuilder where = new StringBuilder();

    final Collection<IInfoQueryCriteria> criterias = criteriasBySelectClause.values();
    for (final IInfoQueryCriteria criteria : criterias) {
      final List<Object> criteriaParams = new ArrayList<Object>();
      final String[] whereClauses = criteria.getWhereClauses(criteriaParams);
      if (whereClauses != null && whereClauses.length > 0) {
        for (final String criteriaWhere : whereClauses) {
          if (IInfoQueryCriteria.WHERECLAUSE_CLEAR_PREVIOUS == criteriaWhere) {
            where.delete(0, where.length());
            params.clear();
            continue;
          } else if (IInfoQueryCriteria.WHERECLAUSE_STOP == criteriaWhere) {
            params.addAll(criteriaParams);
            return where.toString();
          } else if (!Check.isEmpty(criteriaWhere, true)) {
            if (where.length() > 0) {
              where.append("\n").append(joinClause);
            }
            where.append(" ( " + criteriaWhere + " ) ");
          }
        }

        params.addAll(criteriaParams);
      }
    }

    return where.toString();
  }
コード例 #2
0
 @Override
 public Object getContextVariable(final String name) {
   final IInfoQueryCriteria criteria = criteriasBySelectClause.get(name);
   if (criteria != null) {
     return criteria.getParameterValue(0, false);
   }
   return attributes.get(name);
 }
コード例 #3
0
 private Component getEditorComponentOrNull(
     final IInfoQueryCriteria parameter, final int i) {
   Component editor = (Component) parameter.getParameterComponent(i);
   if (editor == null) {
     editor = (Component) parameter.getParameterToComponent(i);
   }
   return editor;
 }
コード例 #4
0
 public final IInfoQueryCriteria getParameterByColumnNameOrNull(final String columnName) {
   Check.assumeNotEmpty(columnName, "columnName not null");
   for (final IInfoQueryCriteria param : displayedParameters) {
     final I_AD_InfoColumn infoColumn = param.getAD_InfoColumn();
     final String infoColumnName = infoColumn.getColumnName();
     if (columnName.equals(infoColumnName)) {
       return param;
     }
   }
   return null;
 }
コード例 #5
0
        private void windowOpened0(final IInfoQueryCriteria parameter) {
          final I_AD_InfoColumn infoColumn = parameter.getAD_InfoColumn();
          if (infoColumn == null) {
            return; // shall not happen...
          }

          final String defaultValue = infoColumn.getDefaultValue();

          // search for first not null component
          for (int i = 0; i < parameter.getParameterCount(); i++) {
            final Component editor = getEditorComponentOrNull(parameter, i);
            if (editor == null) {
              continue;
            }

            // add general listeners on parameter components
            editor.addKeyListener(
                new KeyAdapter() {
                  @Override
                  public void keyReleased(final KeyEvent e) {
                    if (KeyEvent.VK_ENTER == e.getKeyCode()) {
                      // each field shall execute query on enter
                      executeQuery();
                    }
                  }
                });

            // we are focusing on field which as "SearchText" as default value
            if (defaultValue == null || defaultValue.indexOf(ATTR_SearchText) < 0) {
              return;
            }

            editor.requestFocus();

            final String text = parameter.getText();
            if (!Check.isEmpty(text, true)) {
              executeQueryOnInit();
            }
          }
        }
コード例 #6
0
  private IInfoQueryCriteria getInfoQueryCriteria(
      final I_AD_InfoColumn infoColumn, final boolean getDefaultIfNotFound) {
    final int infoColumnId = infoColumn.getAD_InfoColumn_ID();
    if (criteriasById.containsKey(infoColumnId)) {
      return criteriasById.get(infoColumnId);
    }

    final IInfoQueryCriteria criteria;
    final String classname = infoColumn.getClassname();
    if (Check.isEmpty(classname, true)) {
      if (getDefaultIfNotFound) {
        criteria = new InfoQueryCriteriaGeneral();
      } else {
        return null;
      }
    } else {
      criteria = Util.getInstance(IInfoQueryCriteria.class, classname);
    }

    criteria.init(this, infoColumn, searchText);
    criteriasById.put(infoColumnId, criteria);

    return criteria;
  }
コード例 #7
0
  private void initParameters() {
    final List<I_AD_InfoColumn> paramInfoColumns = adInfoWindowDAO.retrieveQueryColumns(infoWindow);
    for (final I_AD_InfoColumn col : paramInfoColumns) {
      if (!Check.isEmpty(col.getParameterDisplayLogic(), true)) {
        final ILogicExpression expression =
            expressionFactory.compileOrDefault(
                col.getParameterDisplayLogic(), ILogicExpression.FALSE, ILogicExpression.class);

        // don't fail on missing parameter because we want to be compatible with old
        // org.compiere.util.Evaluator.evaluateLogic(Evaluatee, String) method
        final boolean ignoreUnparsable = true;
        if (!expression.evaluate(ctx, ignoreUnparsable)) {
          // this parameter will never-ever be displayed
          continue;
        }
      }

      if (col.isParameterNextLine() && !criteriasBySelectClause.isEmpty()) {
        addComponentToParameters(null, true);
      }
      //
      final String selectSql = col.getSelectClause();

      final IInfoQueryCriteria criteria =
          getInfoQueryCriteria(col, true); // retrieve default if not found
      // Add criteria to map
      {
        String name = selectSql;
        final int i = 1;
        while (criteriasBySelectClause.containsKey(name)) {
          name = selectSql + "#" + i;
        }
        criteriasBySelectClause.put(name, criteria);
      }

      //
      // Add criteria to Displayed Parameters
      displayedParameters.add(criteria);

      //
      // Iterate criterias and add editor fields to Parameters panel
      for (int i = 0; i < criteria.getParameterCount(); i++) {
        final Component editor = (Component) criteria.getParameterComponent(i);
        if (editor instanceof VLookup) {
          final VLookup lookup = (VLookup) editor;
          lookup.enableLookupAutocomplete();
        }

        //
        // Label
        final String labelText = criteria.getLabel(i);
        if (!Check.isEmpty(labelText)) {
          addComponentToParameters(labelText, false);
        }

        //
        // Parameter
        addComponentToParameters(editor, false);

        //
        // Parameter To
        final Component editor2 = (Component) criteria.getParameterToComponent(i);
        if (col.isRange() && editor2 != null) {
          addComponentToParameters(" - ", false);
          addComponentToParameters(editor2, false);
        }
      }
    }
  }