protected void logExecution(EntityListenerType type, Entity entity) { if (log.isDebugEnabled()) { StringBuilder sb = new StringBuilder(); sb.append("Executing ").append(type).append(" entity listener for ") .append(entity.getClass().getName()).append(" id=").append(entity.getId()); if (type != EntityListenerType.BEFORE_DETACH && type != EntityListenerType.BEFORE_ATTACH) { Set<String> dirty = persistence.getTools().getDirtyFields(entity); if (!dirty.isEmpty()) { sb.append(", changedProperties: "); for (Iterator<String> it = dirty.iterator(); it.hasNext(); ) { String field = it.next(); sb.append(field); if (it.hasNext()) sb.append(","); } } } log.debug(sb.toString()); } }
protected boolean justDeleted(SoftDelete entity) { return entity.isDeleted() && persistence.getTools().getDirtyFields((Entity) entity).contains("deleteTs"); }
Set<String> dirty = persistence.getTools().getDirtyFields(entity); for (String s : dirty) { if (ownProperties.contains(s)) {
protected Object getOldCategoryAttributeValue(CategoryAttributeValue attributeValue, EntityAttributeChanges changes) { CategoryAttribute categoryAttribute = attributeValue.getCategoryAttribute(); PersistenceTools persistenceTools = persistence.getTools(); String fieldName = null; switch (categoryAttribute.getDataType()) { case DATE: fieldName = "dateValue"; break; case ENUMERATION: case STRING: fieldName = "stringValue"; break; case INTEGER: fieldName = "intValue"; break; case DOUBLE: fieldName = "doubleValue"; break; case BOOLEAN: fieldName = "booleanValue"; break; } if (fieldName != null) { return changes != null ? changes.getOldValue(fieldName) : persistenceTools.getOldValue(attributeValue, fieldName); } return null; }
protected void internalRegisterModifyAttributeValue(CategoryAttributeValue entity, @Nullable EntityAttributeChanges changes, Set<String> attributes) { String propertyName = DynamicAttributesUtils.encodeAttributeCode(entity.getCode()); if (!attributes.contains(propertyName)) { return; } Date ts = timeSource.currentTimestamp(); EntityManager em = persistence.getEntityManager(); Set<String> dirty = changes == null ? persistence.getTools().getDirtyFields(entity) : changes.getOwnAttributes(); boolean registerDeleteOp = dirty.contains("deleteTs") && entity.isDeleted(); boolean hasChanges = dirty.stream().anyMatch(s -> s.endsWith("Value")); if (hasChanges) { EntityLogItem item = metadata.create(EntityLogItem.class); item.setEventTs(ts); item.setUser(findUser(em)); item.setType(EntityLogItem.Type.MODIFY); item.setEntity(getEntityName(entity)); item.setObjectEntityId(entity.getObjectEntityId()); item.setAttributes(createDynamicLogAttribute(entity, changes, registerDeleteOp)); enqueueItem(item); } }
@Override public void postUpdate(DescriptorEvent event) { String storeName = support.getStorageName(event.getSession()); Entity entity = (Entity) event.getSource(); if (entity instanceof SoftDelete && persistence.getTools().isDirty(entity, "deleteTs") && ((SoftDelete) entity).isDeleted()) { manager.fireListener(entity, EntityListenerType.AFTER_DELETE, storeName); } else { manager.fireListener(entity, EntityListenerType.AFTER_UPDATE, storeName); } }
@Override public void onBeforeUpdate(Group entity, EntityManager entityManager) { if (!persistence.getTools().getDirtyFields(entity).contains("parent")) return; EntityManager em = persistence.getEntityManager(); for (GroupHierarchy oldHierarchy : entity.getHierarchyList()) { em.remove(oldHierarchy); } createNewHierarchy(entity, entity.getParent()); TypedQuery<GroupHierarchy> q = em.createQuery( "select h from sec$GroupHierarchy h join fetch h.group " + "where h.parent.id = ?1", GroupHierarchy.class); q.setParameter(1, entity.getId()); List<GroupHierarchy> list = q.getResultList(); for (GroupHierarchy hierarchy : list) { Group dependentGroup = hierarchy.getGroup(); for (GroupHierarchy depHierarchy : dependentGroup.getHierarchyList()) { em.remove(depHierarchy); } em.remove(hierarchy); createNewHierarchy(dependentGroup, dependentGroup.getParent()); } } }
@Override public void onBeforeDetach(Report entity, EntityManager entityManager) { if (persistence.getTools().isLoaded(entity, "xml") && StringUtils.isNotBlank(entity.getXml())) { Report reportFromXml = reportingApi.convertToReport(entity.getXml()); entity.setBands(reportFromXml.getBands()); entity.setInputParameters(reportFromXml.getInputParameters()); entity.setReportScreens(reportFromXml.getReportScreens()); entity.setRoles(reportFromXml.getRoles()); entity.setValuesFormats(reportFromXml.getValuesFormats()); entity.setValidationOn(reportFromXml.getValidationOn()); entity.setValidationScript(reportFromXml.getValidationScript()); setRelevantReferencesToReport(entity); sortRootChildrenBands(entity); } }