Search in sources :

Example 6 with EntityLogItem

use of io.jmix.audit.entity.EntityLogItem in project jmix by jmix-framework.

the class EntityLogImpl method registerModify.

@Override
public void registerModify(Object entity, boolean auto, @Nullable AttributeChanges changes) {
    try {
        if (doNotRegister(entity))
            return;
        String entityName = getEntityName(entity);
        Set<String> attributes = getLoggedAttributes(entityName, auto);
        if (attributes != null && attributes.contains("*")) {
            attributes = getAllAttributes(entity);
        }
        if (attributes == null) {
            return;
        }
        MetaClass metaClass = metadata.getClass(entityName);
        attributes = filterRemovedAttributes(entity, attributes);
        String storeName = metaClass.getStore().getName();
        EntityLogItem item;
        // Create a new transaction in main DB if we are saving an entity from additional data store
        if (!Stores.isMain(storeName)) {
            Set<String> finalAttributes = attributes;
            item = transaction.execute(status -> internalRegisterModify(entity, changes, metaClass, storeName, finalAttributes));
        } else {
            item = internalRegisterModify(entity, changes, metaClass, storeName, attributes);
        }
        enqueueItem(item, storeName);
    } catch (Exception e) {
        logError(entity, e);
    }
}
Also used : EntitySystemAccess(io.jmix.core.entity.EntitySystemAccess) EntityLogItem(io.jmix.audit.entity.EntityLogItem) MetaClass(io.jmix.core.metamodel.model.MetaClass) java.util(java.util) Preconditions(io.jmix.core.common.util.Preconditions) MetaPropertyPath(io.jmix.core.metamodel.model.MetaPropertyPath) TransactionDefinition(org.springframework.transaction.TransactionDefinition) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) AuditProperties(io.jmix.audit.AuditProperties) io.jmix.core(io.jmix.core) BooleanUtils(org.apache.commons.lang3.BooleanUtils) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) EntityLog(io.jmix.audit.EntityLog) TypedQuery(javax.persistence.TypedQuery) EntityValues(io.jmix.core.entity.EntityValues) EntityOp(io.jmix.core.security.EntityOp) Strings(com.google.common.base.Strings) DatatypeRegistry(io.jmix.core.metamodel.datatype.DatatypeRegistry) AuditInfoProvider(io.jmix.data.AuditInfoProvider) UserDetails(org.springframework.security.core.userdetails.UserDetails) Range(io.jmix.core.metamodel.model.Range) Nullable(javax.annotation.Nullable) AttributeChangesProvider(io.jmix.data.AttributeChangesProvider) EntityLogAttr(io.jmix.audit.entity.EntityLogAttr) Logger(org.slf4j.Logger) LoggedEntity(io.jmix.audit.entity.LoggedEntity) AttributeChanges(io.jmix.core.event.AttributeChanges) StringWriter(java.io.StringWriter) IOException(java.io.IOException) EntityManager(javax.persistence.EntityManager) PersistenceContext(javax.persistence.PersistenceContext) Datatype(io.jmix.core.metamodel.datatype.Datatype) JpaLifecycleListener(io.jmix.data.impl.JpaLifecycleListener) GuardedBy(javax.annotation.concurrent.GuardedBy) Collectors(java.util.stream.Collectors) LoggedAttribute(io.jmix.audit.entity.LoggedAttribute) EnumClass(io.jmix.core.metamodel.datatype.impl.EnumClass) org.springframework.transaction.support(org.springframework.transaction.support) Component(org.springframework.stereotype.Component) Stream(java.util.stream.Stream) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager) MetaProperty(io.jmix.core.metamodel.model.MetaProperty) MetaClass(io.jmix.core.metamodel.model.MetaClass) EntityLogItem(io.jmix.audit.entity.EntityLogItem) IOException(java.io.IOException)

Example 7 with EntityLogItem

use of io.jmix.audit.entity.EntityLogItem in project jmix by jmix-framework.

the class EntityLogImpl method internalRegisterDelete.

protected void internalRegisterDelete(Object entity, String entityName, String storeName, Set<String> attributes) {
    EntityLogItem item;
    // Create a new transaction in main DB if we are saving an entity from additional data store
    if (!Stores.isMain(storeName)) {
        item = transaction.execute(status -> generateEntityLogItem(entity, entityName, attributes, EntityLogItem.Type.DELETE));
    } else {
        item = generateEntityLogItem(entity, entityName, attributes, EntityLogItem.Type.DELETE);
    }
    assert item != null;
    enqueueItem(item, storeName);
}
Also used : EntitySystemAccess(io.jmix.core.entity.EntitySystemAccess) EntityLogItem(io.jmix.audit.entity.EntityLogItem) MetaClass(io.jmix.core.metamodel.model.MetaClass) java.util(java.util) Preconditions(io.jmix.core.common.util.Preconditions) MetaPropertyPath(io.jmix.core.metamodel.model.MetaPropertyPath) TransactionDefinition(org.springframework.transaction.TransactionDefinition) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) AuditProperties(io.jmix.audit.AuditProperties) io.jmix.core(io.jmix.core) BooleanUtils(org.apache.commons.lang3.BooleanUtils) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) EntityLog(io.jmix.audit.EntityLog) TypedQuery(javax.persistence.TypedQuery) EntityValues(io.jmix.core.entity.EntityValues) EntityOp(io.jmix.core.security.EntityOp) Strings(com.google.common.base.Strings) DatatypeRegistry(io.jmix.core.metamodel.datatype.DatatypeRegistry) AuditInfoProvider(io.jmix.data.AuditInfoProvider) UserDetails(org.springframework.security.core.userdetails.UserDetails) Range(io.jmix.core.metamodel.model.Range) Nullable(javax.annotation.Nullable) AttributeChangesProvider(io.jmix.data.AttributeChangesProvider) EntityLogAttr(io.jmix.audit.entity.EntityLogAttr) Logger(org.slf4j.Logger) LoggedEntity(io.jmix.audit.entity.LoggedEntity) AttributeChanges(io.jmix.core.event.AttributeChanges) StringWriter(java.io.StringWriter) IOException(java.io.IOException) EntityManager(javax.persistence.EntityManager) PersistenceContext(javax.persistence.PersistenceContext) Datatype(io.jmix.core.metamodel.datatype.Datatype) JpaLifecycleListener(io.jmix.data.impl.JpaLifecycleListener) GuardedBy(javax.annotation.concurrent.GuardedBy) Collectors(java.util.stream.Collectors) LoggedAttribute(io.jmix.audit.entity.LoggedAttribute) EnumClass(io.jmix.core.metamodel.datatype.impl.EnumClass) org.springframework.transaction.support(org.springframework.transaction.support) Component(org.springframework.stereotype.Component) Stream(java.util.stream.Stream) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager) MetaProperty(io.jmix.core.metamodel.model.MetaProperty) EntityLogItem(io.jmix.audit.entity.EntityLogItem)

Aggregations

EntityLogItem (io.jmix.audit.entity.EntityLogItem)7 EntityLogAttr (io.jmix.audit.entity.EntityLogAttr)6 MetaPropertyPath (io.jmix.core.metamodel.model.MetaPropertyPath)6 Strings (com.google.common.base.Strings)5 AuditProperties (io.jmix.audit.AuditProperties)5 EntityLog (io.jmix.audit.EntityLog)5 LoggedAttribute (io.jmix.audit.entity.LoggedAttribute)5 LoggedEntity (io.jmix.audit.entity.LoggedEntity)5 io.jmix.core (io.jmix.core)5 Preconditions (io.jmix.core.common.util.Preconditions)5 EntitySystemAccess (io.jmix.core.entity.EntitySystemAccess)5 EntityValues (io.jmix.core.entity.EntityValues)5 AttributeChanges (io.jmix.core.event.AttributeChanges)5 Datatype (io.jmix.core.metamodel.datatype.Datatype)5 DatatypeRegistry (io.jmix.core.metamodel.datatype.DatatypeRegistry)5 EnumClass (io.jmix.core.metamodel.datatype.impl.EnumClass)5 MetaClass (io.jmix.core.metamodel.model.MetaClass)5 MetaProperty (io.jmix.core.metamodel.model.MetaProperty)5 Range (io.jmix.core.metamodel.model.Range)5 EntityOp (io.jmix.core.security.EntityOp)5