org.hibernate.envers.configuration.internal.metadata.reader.ClassAuditingData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-envers Show documentation
Show all versions of hibernate-envers Show documentation
Hibernate's entity version (audit/history) support
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.envers.configuration.internal.metadata.reader;
import java.util.Map;
import java.util.stream.Collectors;
import org.hibernate.envers.AuditTable;
import static org.hibernate.envers.internal.tools.Tools.newHashMap;
/**
* @author Adam Warski (adam at warski dot org)
* @author Sebastian Komander
* @author Hern&aacut;n Chanfreau
* @author Chris Cranford
*/
public class ClassAuditingData implements AuditedPropertiesHolder {
private final Map properties;
private final Map secondaryTableDictionary;
private AuditTable auditTable;
/**
* True if the class is audited globally (this helps to cover the cases when there are no fields in the class,
* but it's still audited).
*/
private boolean defaultAudited;
public ClassAuditingData() {
properties = newHashMap();
secondaryTableDictionary = newHashMap();
}
@Override
public boolean isEmpty() {
return properties.isEmpty();
}
@Override
public void addPropertyAuditingData(String propertyName, PropertyAuditingData auditingData) {
properties.put( propertyName, auditingData );
}
@Override
public PropertyAuditingData getPropertyAuditingData(String propertyName) {
return properties.get( propertyName );
}
public Iterable getPropertyNames() {
return properties.keySet();
}
public Map getSecondaryTableDictionary() {
return secondaryTableDictionary;
}
public AuditTable getAuditTable() {
return auditTable;
}
public void setAuditTable(AuditTable auditTable) {
this.auditTable = auditTable;
}
public void setDefaultAudited(boolean defaultAudited) {
this.defaultAudited = defaultAudited;
}
public boolean isAudited() {
return defaultAudited || properties.size() > 0;
}
@Override
public boolean contains(String propertyName) {
return properties.containsKey( propertyName );
}
public Iterable getNonSyntheticPropertyNames() {
return properties.entrySet().stream()
.filter( e -> !e.getValue().isSyntheic() )
.map( Map.Entry::getKey )
.collect( Collectors.toList() );
}
public Iterable getSyntheticProperties() {
return properties.values().stream()
.filter( p -> p.isSyntheic() )
.collect( Collectors.toList() );
}
}