HHH-6605 - Removed some duplication in mappers code
This commit is contained in:
parent
726571b270
commit
43a602b100
|
@ -25,6 +25,8 @@ package org.hibernate.envers.entities;
|
||||||
import org.hibernate.envers.ModificationStore;
|
import org.hibernate.envers.ModificationStore;
|
||||||
import org.hibernate.envers.configuration.metadata.MetadataTools;
|
import org.hibernate.envers.configuration.metadata.MetadataTools;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds information on a property that is audited.
|
* Holds information on a property that is audited.
|
||||||
* @author Adam Warski (adam at warski dot org)
|
* @author Adam Warski (adam at warski dot org)
|
||||||
|
@ -96,7 +98,11 @@ public class PropertyData {
|
||||||
return usingModifiedFlag;
|
return usingModifiedFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getModifiedFlagPropertyName() {
|
public void addModifiedFlag(Map<String, Object> data, boolean flagValue) {
|
||||||
|
data.put(getModifiedFlagPropertyName(), flagValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getModifiedFlagPropertyName() {
|
||||||
return MetadataTools.getModifiedFlagPropertyName(name);
|
return MetadataTools.getModifiedFlagPropertyName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class ComponentPropertyMapper implements PropertyMapper, CompositeMapperB
|
||||||
@Override
|
@Override
|
||||||
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(),
|
propertyData.addModifiedFlag(data,
|
||||||
delegate.mapToMapFromEntity(session, new HashMap<String, Object>(), newObj, oldObj));
|
delegate.mapToMapFromEntity(session, new HashMap<String, Object>(), newObj, oldObj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ public class ComponentPropertyMapper implements PropertyMapper, CompositeMapperB
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), hasModifiedCollection);
|
propertyData.addModifiedFlag(data, hasModifiedCollection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class SinglePropertyMapper implements PropertyMapper, SimpleMapperBuilder
|
||||||
@Override
|
@Override
|
||||||
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), !Tools.objectsEqual(newObj, oldObj));
|
propertyData.addModifiedFlag(data, !Tools.objectsEqual(newObj, oldObj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
* Boston, MA 02110-1301 USA
|
* Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
package org.hibernate.envers.entities.mapper.relation;
|
package org.hibernate.envers.entities.mapper.relation;
|
||||||
|
|
||||||
import org.hibernate.collection.spi.PersistentCollection;
|
import org.hibernate.collection.spi.PersistentCollection;
|
||||||
import org.hibernate.engine.spi.SessionImplementor;
|
import org.hibernate.engine.spi.SessionImplementor;
|
||||||
import org.hibernate.envers.RevisionType;
|
import org.hibernate.envers.RevisionType;
|
||||||
|
@ -39,7 +38,13 @@ import org.hibernate.property.Setter;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Adam Warski (adam at warski dot org)
|
* @author Adam Warski (adam at warski dot org)
|
||||||
|
@ -135,11 +140,11 @@ public abstract class AbstractCollectionMapper<T> implements PropertyMapper {
|
||||||
PropertyData propertyData = commonCollectionMapperData.getCollectionReferencingPropertyData();
|
PropertyData propertyData = commonCollectionMapperData.getCollectionReferencingPropertyData();
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
if(isFromNullToEmptyOrFromEmptyToNull((PersistentCollection) newObj, (Serializable) oldObj)){
|
if(isFromNullToEmptyOrFromEmptyToNull((PersistentCollection) newObj, (Serializable) oldObj)){
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), true);
|
propertyData.addModifiedFlag(data, true);
|
||||||
} else {
|
} else {
|
||||||
List<PersistentCollectionChangeData> changes = mapCollectionChanges(commonCollectionMapperData.getCollectionReferencingPropertyData().getName(),
|
List<PersistentCollectionChangeData> changes = mapCollectionChanges(commonCollectionMapperData.getCollectionReferencingPropertyData().getName(),
|
||||||
(PersistentCollection) newObj, (Serializable) oldObj, null);
|
(PersistentCollection) newObj, (Serializable) oldObj, null);
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), !changes.isEmpty());
|
propertyData.addModifiedFlag(data, !changes.isEmpty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +162,7 @@ public abstract class AbstractCollectionMapper<T> implements PropertyMapper {
|
||||||
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
||||||
PropertyData propertyData = commonCollectionMapperData.getCollectionReferencingPropertyData();
|
PropertyData propertyData = commonCollectionMapperData.getCollectionReferencingPropertyData();
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), propertyData.getName().equals(collectionPropertyName));
|
propertyData.addModifiedFlag(data, propertyData.getName().equals(collectionPropertyName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,8 +69,7 @@ public class OneToOneNotOwningMapper implements PropertyMapper {
|
||||||
@Override
|
@Override
|
||||||
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(),
|
propertyData.addModifiedFlag(data, collectionPropertyName.equals(propertyData.getName()));
|
||||||
collectionPropertyName.equals(propertyData.getName()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,14 +78,14 @@ public class ToOneIdMapper implements PropertyMapper {
|
||||||
@Override
|
@Override
|
||||||
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
public void mapModifiedFlagsToMapFromEntity(SessionImplementor session, Map<String, Object> data, Object newObj, Object oldObj) {
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), checkModified(session, newObj, oldObj));
|
propertyData.addModifiedFlag(data, checkModified(session, newObj, oldObj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyName, Map<String, Object> data) {
|
||||||
if (propertyData.isUsingModifiedFlag()) {
|
if (propertyData.isUsingModifiedFlag()) {
|
||||||
data.put(propertyData.getModifiedFlagPropertyName(), collectionPropertyName.equals(propertyData.getName()));
|
propertyData.addModifiedFlag(data, collectionPropertyName.equals(propertyData.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue