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(); }
@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); }
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; }
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; }
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(); } } }
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; }
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); } } } }