void validateDefaultSQL(SQLTemplateDescriptor query, ValidationResult validationResult) { if (Util.isEmptyString(query.getSql())) { // see if there is at least one adapter-specific template... for (Map.Entry<String, String> entry : query.getAdapterSql().entrySet()) { if (!Util.isEmptyString(entry.getValue())) { return; } } addFailure( validationResult, query, "SQLTemplate query '%s' has no default SQL template", query.getName()); } }
protected QueryDescriptor makeEOSQLQueryDescriptor(ObjEntity root, Map plistMap) { SQLTemplateDescriptor descriptor = QueryDescriptor.sqlTemplateDescriptor(); descriptor.setRoot(root); Object fetchLimit = plistMap.get("fetchLimit"); if (fetchLimit != null) { try { if (fetchLimit instanceof Number) { descriptor.setProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, String.valueOf(((Number) fetchLimit).intValue())); } else if (StringUtils.isNumeric(fetchLimit.toString())) { descriptor.setProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, fetchLimit.toString()); } } catch (NumberFormatException nfex) { // ignoring... } } //query // TODO: doesn't work with Stored Procedures. Map hints = (Map) plistMap.get("hints"); if (hints != null && !hints.isEmpty()) { String sqlExpression = (String) hints.get("EOCustomQueryExpressionHintKey"); if (sqlExpression != null) { descriptor.setSql(sqlExpression); } } return descriptor; }
/** * Creates new SQLTemplate query descriptor. */ public static SQLTemplateDescriptor sqlTemplateDescriptor() { return new SQLTemplateDescriptor(); }
/** * Returns SQLTemplate text for current selection. */ String getSQLTemplate(String key) { if (key == null) { return null; } SQLTemplateDescriptor query = getQuery(); if (query == null) { return null; } return (key.equals(DEFAULT_LABEL)) ? query.getSql() : query .getAdapterSql().get(key); }
if (!Util.nullSafeEquals(text, query.getSql())) { query.setSql(text); mediator.fireQueryEvent(new QueryEvent(this, query)); if (!Util.nullSafeEquals(text, query.getAdapterSql().get(key))) { query.getAdapterSql().put(key, text); mediator.fireQueryEvent(new QueryEvent(this, query));
@Override public SQLTemplate buildQuery() { SQLTemplate template = new SQLTemplate(); if (root != null) { template.setRoot(root); } template.setName(name); template.setDataMap(dataMap); template.initWithProperties(this.getProperties()); // init SQL template.setDefaultTemplate(this.getSql()); Map<String, String> adapterSql = this.getAdapterSql(); if (adapterSql != null) { for (Map.Entry<String, String> entry : adapterSql.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (key != null && value != null) { template.setTemplate(key, value); } } } return template; }
/** * Builds a Query object based on internal configuration information. */ public QueryDescriptor buildQueryDescriptor() { QueryDescriptor descriptor = QueryDescriptor.descriptor(queryType); descriptor.setName(name); descriptor.setDataMap(dataMap); descriptor.setRoot(getRoot()); descriptor.setProperties(properties); switch (queryType) { case QueryDescriptor.SELECT_QUERY: ((SelectQueryDescriptor) descriptor).setQualifier(qualifier); ((SelectQueryDescriptor) descriptor).setOrderings(orderings); ((SelectQueryDescriptor) descriptor).setPrefetches(prefetches); break; case QueryDescriptor.SQL_TEMPLATE: ((SQLTemplateDescriptor) descriptor).setSql(sql); ((SQLTemplateDescriptor) descriptor).setAdapterSql(adapterSql); break; case QueryDescriptor.EJBQL_QUERY: ((EJBQLQueryDescriptor) descriptor).setEjbql(ejbql); break; case QueryDescriptor.PROCEDURE_QUERY: ((ProcedureQueryDescriptor) descriptor).setResultEntityName(resultEntity); break; default: // no additional properties } return descriptor; }
@Override public void encodeAsXML(XMLEncoder encoder) { encoder.print("<query name=\""); encoder.print(getName()); encoder.print("\" type=\""); encoder.print(type); encodeProperties(encoder);
/** * Shows selected script in the editor. */ void displayScript() { SQLTemplateDescriptor query = getQuery(); if (query == null) { return; } String key = scripts.getSelectedValue(); if (key == null) { return; } final String text = (key.equals(DEFAULT_LABEL)) ? query.getSql() : query .getAdapterSql().get(key); for (final JCayenneTextPane textPane : panes) { if (key.equals(textPane.getName())) { textPane.setDocumentTextDirect(text); textPane.getScrollPane().setVisible(true); textPane.getPane().requestFocusInWindow(); } else { textPane.getScrollPane().setVisible(false); } } }