Search in sources :

Example 1 with OgnlSqlFormat

use of com.manydesigns.elements.text.OgnlSqlFormat in project Portofino by ManyDesigns.

the class ModelSelectionProviderSupport method createSQLOptionProvider.

@NotNull
protected OptionProvider createSQLOptionProvider(DatabaseSelectionProvider selectionProvider, Class[] fieldTypes, String name, String databaseName, String sql) {
    return new MemoizingOptionProvider(() -> {
        Session session = persistence.getSession(databaseName);
        OgnlSqlFormat sqlFormat = OgnlSqlFormat.create(sql);
        String formatString = sqlFormat.getFormatString();
        Object[] parameters = sqlFormat.evaluateOgnlExpressions(this);
        QueryStringWithParameters cacheKey = new QueryStringWithParameters(formatString, parameters);
        Collection<Object[]> objects = getFromQueryCache(selectionProvider, cacheKey);
        if (objects == null) {
            logger.debug("Query not in cache: {}", formatString);
            try {
                objects = QueryUtils.runSql(session, formatString, parameters);
            } catch (Exception e) {
                logger.error("Exception in populating selection provider " + name, e);
                return null;
            }
            putInQueryCache(selectionProvider, cacheKey, objects);
        }
        return objects.stream().map(o -> SelectionProviderLogic.getOption(fieldTypes, o)).collect(Collectors.toList());
    });
}
Also used : Persistence(com.manydesigns.portofino.persistence.Persistence) StringUtils(org.apache.commons.lang.StringUtils) java.util(java.util) QueryStringWithParameters(com.manydesigns.elements.text.QueryStringWithParameters) LoggerFactory(org.slf4j.LoggerFactory) Session(org.hibernate.Session) Multimap(com.google.common.collect.Multimap) ShortName(com.manydesigns.elements.annotations.ShortName) HashMultimap(com.google.common.collect.HashMultimap) ElementsThreadLocals(com.manydesigns.elements.ElementsThreadLocals) TableAccessor(com.manydesigns.portofino.reflection.TableAccessor) TextFormat(com.manydesigns.elements.text.TextFormat) OgnlTextFormat(com.manydesigns.elements.text.OgnlTextFormat) OgnlSqlFormat(com.manydesigns.elements.text.OgnlSqlFormat) SelectionProviderReference(com.manydesigns.portofino.resourceactions.crud.configuration.database.SelectionProviderReference) QueryUtils(com.manydesigns.portofino.persistence.QueryUtils) Logger(org.slf4j.Logger) com.manydesigns.elements.options(com.manydesigns.elements.options) com.manydesigns.portofino.model.database(com.manydesigns.portofino.model.database) CrudProperty(com.manydesigns.portofino.resourceactions.crud.configuration.CrudProperty) Collectors(java.util.stream.Collectors) Nullable(org.jetbrains.annotations.Nullable) Stream(java.util.stream.Stream) SelectionProviderLogic(com.manydesigns.portofino.logic.SelectionProviderLogic) NotNull(org.jetbrains.annotations.NotNull) QueryStringWithParameters(com.manydesigns.elements.text.QueryStringWithParameters) OgnlSqlFormat(com.manydesigns.elements.text.OgnlSqlFormat) Session(org.hibernate.Session) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

HashMultimap (com.google.common.collect.HashMultimap)1 Multimap (com.google.common.collect.Multimap)1 ElementsThreadLocals (com.manydesigns.elements.ElementsThreadLocals)1 ShortName (com.manydesigns.elements.annotations.ShortName)1 com.manydesigns.elements.options (com.manydesigns.elements.options)1 OgnlSqlFormat (com.manydesigns.elements.text.OgnlSqlFormat)1 OgnlTextFormat (com.manydesigns.elements.text.OgnlTextFormat)1 QueryStringWithParameters (com.manydesigns.elements.text.QueryStringWithParameters)1 TextFormat (com.manydesigns.elements.text.TextFormat)1 SelectionProviderLogic (com.manydesigns.portofino.logic.SelectionProviderLogic)1 com.manydesigns.portofino.model.database (com.manydesigns.portofino.model.database)1 Persistence (com.manydesigns.portofino.persistence.Persistence)1 QueryUtils (com.manydesigns.portofino.persistence.QueryUtils)1 TableAccessor (com.manydesigns.portofino.reflection.TableAccessor)1 CrudProperty (com.manydesigns.portofino.resourceactions.crud.configuration.CrudProperty)1 SelectionProviderReference (com.manydesigns.portofino.resourceactions.crud.configuration.database.SelectionProviderReference)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 StringUtils (org.apache.commons.lang.StringUtils)1