org.grails.datastore.mapping.model.PersistentEntity.isMultiTenant() - java examples

Here are the examples of the java api org.grails.datastore.mapping.model.PersistentEntity.isMultiTenant() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1 Examples 7

5 View Complete Implementation : MultiTenantEventListener.java
Copyright Apache License 2.0
Author : grails
@Override
public void onApplicationEvent(ApplicationEvent event) {
    if (supportsEventType(event.getClreplaced())) {
        Datastore hibernateDatastore = (Datastore) event.getSource();
        if (event instanceof PreQueryEvent) {
            PreQueryEvent preQueryEvent = (PreQueryEvent) event;
            Query query = preQueryEvent.getQuery();
            PersistentEnreplacedy enreplacedy = query.getEnreplacedy();
            if (enreplacedy.isMulreplacedenant()) {
                if (hibernateDatastore == null) {
                    hibernateDatastore = GormEnhancer.findDatastore(enreplacedy.getJavaClreplaced());
                }
                if (supportsSourceType(hibernateDatastore.getClreplaced())) {
                    ((AbstractHibernateDatastore) hibernateDatastore).enableMulreplacedenancyFilter();
                }
            }
        } else if ((event instanceof ValidationEvent) || (event instanceof PreInsertEvent) || (event instanceof PreUpdateEvent)) {
            AbstractPersistenceEvent preInsertEvent = (AbstractPersistenceEvent) event;
            PersistentEnreplacedy enreplacedy = preInsertEvent.getEnreplacedy();
            if (enreplacedy.isMulreplacedenant()) {
                TenantId tenantId = enreplacedy.getTenantId();
                if (hibernateDatastore == null) {
                    hibernateDatastore = GormEnhancer.findDatastore(enreplacedy.getJavaClreplaced());
                }
                if (supportsSourceType(hibernateDatastore.getClreplaced())) {
                    Serializable currentId;
                    if (hibernateDatastore instanceof MulreplacedenantCapableDatastore) {
                        currentId = Tenants.currentId((MulreplacedenantCapableDatastore) hibernateDatastore);
                    } else {
                        currentId = Tenants.currentId(hibernateDatastore.getClreplaced());
                    }
                    if (currentId != null) {
                        try {
                            if (currentId == ConnectionSource.DEFAULT) {
                                currentId = (Serializable) preInsertEvent.getEnreplacedyAccess().getProperty(tenantId.getName());
                            }
                            preInsertEvent.getEnreplacedyAccess().setProperty(tenantId.getName(), currentId);
                        } catch (Exception e) {
                            throw new TenantException("Could not replacedigned tenant id [" + currentId + "] to property [" + tenantId + "], probably due to a type mismatch. You should return a type from the tenant resolver that matches the property type of the tenant id!: " + e.getMessage(), e);
                        }
                    }
                }
            }
        }
    }
}