Example usage for org.hibernate.engine.spi FilterDefinition FilterDefinition

List of usage examples for org.hibernate.engine.spi FilterDefinition FilterDefinition

Introduction

In this page you can find the example usage for org.hibernate.engine.spi FilterDefinition FilterDefinition.

Prototype

public FilterDefinition(String name, String defaultCondition, Map<String, Type> parameterTypes) 

Source Link

Document

Construct a new FilterDefinition instance.

Usage

From source file:grails.plugin.multitenant.spring.FilterDefinitionFactoryBean.java

License:Apache License

@Override
public void afterPropertiesSet() {
    this.filterDefinition = new FilterDefinition(this.filterName, this.defaultFilterCondition,
            this.parameterTypeMap);
}

From source file:org.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration.java

License:Apache License

@Override
public SessionFactory buildSessionFactory() throws HibernateException {

    // set the class loader to load Groovy classes

    // work around for HHH-2624
    Map<String, Type> empty = new HashMap<String, Type>();
    addFilterDefinition(new FilterDefinition("dynamicFilterEnabler", "1=1", empty));

    SessionFactory sessionFactory = null;

    ClassLoader appClassLoader = (ClassLoader) getProperties().get(AvailableSettings.APP_CLASSLOADER);
    Thread currentThread = Thread.currentThread();
    ClassLoader threadContextClassLoader = currentThread.getContextClassLoader();
    boolean overrideClassLoader = (appClassLoader != null && !appClassLoader.equals(threadContextClassLoader));
    if (overrideClassLoader) {
        currentThread.setContextClassLoader(appClassLoader);
    }//from ww  w  .  j  a v  a 2 s  .co m

    try {
        ConfigurationHelper.resolvePlaceHolders(getProperties());

        EventListenerIntegrator eventListenerIntegrator = new EventListenerIntegrator(hibernateEventListeners,
                eventListeners);
        BootstrapServiceRegistry bootstrapServiceRegistry = new BootstrapServiceRegistryBuilder()
                .with(eventListenerIntegrator).build();

        setSessionFactoryObserver(new SessionFactoryObserver() {
            private static final long serialVersionUID = 1;

            public void sessionFactoryCreated(SessionFactory factory) {
            }

            public void sessionFactoryClosed(SessionFactory factory) {
                ((ServiceRegistryImplementor) serviceRegistry).destroy();
            }
        });

        StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder(
                bootstrapServiceRegistry).applySettings(getProperties());
        sessionFactory = super.buildSessionFactory(standardServiceRegistryBuilder.build());
        serviceRegistry = ((SessionFactoryImplementor) sessionFactory).getServiceRegistry();
    } finally {
        if (overrideClassLoader) {
            currentThread.setContextClassLoader(threadContextClassLoader);
        }
    }

    return sessionFactory;
}

From source file:org.grails.orm.hibernate.cfg.GrailsDomainBinder.java

License:Apache License

/**
 * Binds a root class (one with no super classes) to the runtime meta model
 * based on the supplied Grails domain class
 *
 * @param entity The Grails domain class
 * @param mappings    The Hibernate Mappings object
 * @param sessionFactoryBeanName  the session factory bean name
 *//* ww w  . ja  v a  2  s .c o m*/
public void bindRoot(HibernatePersistentEntity entity, InFlightMetadataCollector mappings,
        String sessionFactoryBeanName) {
    if (mappings.getEntityBinding(entity.getName()) != null) {
        LOG.info("[GrailsDomainBinder] Class [" + entity.getName() + "] is already mapped, skipping.. ");
        return;
    }

    RootClass root = new RootClass(this.metadataBuildingContext);
    root.setAbstract(entity.isAbstract());
    final MappingContext mappingContext = entity.getMappingContext();

    final java.util.Collection<PersistentEntity> children = mappingContext.getDirectChildEntities(entity);
    if (children.isEmpty()) {
        root.setPolymorphic(false);
    }
    bindClass(entity, root, mappings);

    Mapping m = getMapping(entity);

    bindRootPersistentClassCommonValues(entity, root, mappings, sessionFactoryBeanName);

    if (!children.isEmpty()) {
        boolean tablePerSubclass = m != null && !m.getTablePerHierarchy();
        if (!tablePerSubclass) {
            // if the root class has children create a discriminator property
            bindDiscriminatorProperty(root.getTable(), root, mappings);
        }
        // bind the sub classes
        bindSubClasses(entity, root, mappings, sessionFactoryBeanName);
    }

    if (entity.isMultiTenant()) {
        TenantId tenantId = entity.getTenantId();
        if (tenantId != null) {
            String filterCondition = getMultiTenantFilterCondition(sessionFactoryBeanName, entity);
            root.addFilter(GormProperties.TENANT_IDENTITY, filterCondition, true,
                    Collections.<String, String>emptyMap(), Collections.<String, String>emptyMap());
            mappings.addFilterDefinition(new FilterDefinition(GormProperties.TENANT_IDENTITY, filterCondition,
                    Collections.singletonMap(GormProperties.TENANT_IDENTITY,
                            root.getProperty(tenantId.getName()).getType())));
        }

    }
    mappings.addEntityBinding(root);
}

From source file:org.jspresso.framework.application.backend.persistence.hibernate.JspressoLocalSessionFactoryBean.java

License:Open Source License

/**
 * Registers the default Jspresso Filter.
 * <p>//  w  ww  .  j  a  va  2  s.c  o m
 * {@inheritDoc}
 */
@Override
protected SessionFactory buildSessionFactory(LocalSessionFactoryBuilder sfb) {
    Map<String, Type> filterParameters = new HashMap<>();
    filterParameters.put(HibernateBackendController.JSPRESSO_SESSION_GLOBALS_LOGIN,
            sfb.getTypeResolver().heuristicType("string"));
    filterParameters.put(HibernateBackendController.JSPRESSO_SESSION_GLOBALS_LANGUAGE,
            sfb.getTypeResolver().heuristicType("string"));
    sfb.addFilterDefinition(
            new FilterDefinition(HibernateBackendController.JSPRESSO_SESSION_GLOBALS, null, filterParameters));
    return super.buildSessionFactory(sfb);
}

From source file:org.openeos.hibernate.internal.configurators.FilterConfigurator.java

License:Apache License

private void addFilterDefinitions(FilterProvider provider, ConfigurationProvider configurationProvider) {
    Configuration conf = configurationProvider.getConfiguration();
    conf.buildMappings();/*from  w w  w .  j  a v a2  s .c o  m*/
    Map<?, ?> filterDefinitions = conf.getFilterDefinitions();
    TypeResolver resolver = conf.getTypeResolver();
    for (BasicFilterDefinition filterDef : provider.getFilterDefinitions()) {
        Map<String, Type> paramMapConverted = new HashMap<String, Type>();
        for (Entry<String, String> paramEntry : filterDef.getParameterTypeMap().entrySet()) {
            Type type = resolver.heuristicType(paramEntry.getValue());
            paramMapConverted.put(paramEntry.getKey(), type);
        }
        FilterDefinition definition = new FilterDefinition(filterDef.getName(), filterDef.getDefaultCondition(),
                paramMapConverted);
        LOG.debug("Registering new filter definition with name '{}'", definition.getFilterName());
        if (filterDefinitions.containsKey(definition.getFilterName())) {
            LOG.warn("The configuration already has filter definition with name '{}',  overwriting.",
                    definition.getFilterName());
        }
        conf.addFilterDefinition(definition);
        filterProviderMap.put(definition.getFilterName(), provider);
        Iterator<PersistentClass> classIterator = conf.getClassMappings();
        while (classIterator.hasNext()) {
            PersistentClass persistentClass = classIterator.next();
            provider.addFilterToClassIfNecesary(persistentClass, filterDef);
        }
    }
    configurationProvider.invalidate();
}