CollectionPropertyDelta.javaprojectforge-business/src/main/java/de/micromata/hibernate/history/delta/CollectionPropertyDelta.java, содержащий Java-код для слоя компонентов.Пакет: de.micromata.hibernate.history.delta
Классы: CollectionPropertyDelta
Расширяет: PropertyDelta
Методы (5): calculateAdditionsAndRemovals, toString, getNewObjectValue, splitElements, getOldObjectValue
Импорты: 4 пакета
package de.micromata.hibernate.history.delta;
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Session;
import java.util.*;
/**
* Устаревший код для XML-персистентности БД.
*
* @author Wolfgang Jung (w.jung@micromata.de)
*
*/
public class CollectionPropertyDelta extends PropertyDelta
{
private transient Set<Object> additions = new HashSet<>();
private transient Set<Object> removals = new HashSet<>();
protected CollectionPropertyDelta()
{
// ничего не делать
}
public CollectionPropertyDelta(String propertyName, Class<?> propertyType, Collection<Object> oldValue,
Collection<Object> newValue)
{
this.propertyName = propertyName;
this.propertyType = ClassUtils.getShortClassName(propertyType);
calculateAdditionsAndRemovals(oldValue, newValue);
this.oldValue = StringUtils.join(removals.iterator(), ",");
this.newValue = StringUtils.join(additions.iterator(), ",");
}
private void calculateAdditionsAndRemovals(Collection<Object> oldValue, Collection<Object> newValue)
{
// //////////////////////////////////////////////////////////////////////
// Сначала определяем добавления
if (newValue != null) {
additions.addAll(newValue);
}
if (oldValue != null) {
additions.removeAll(oldValue);
}
// //////////////////////////////////////////////////////////////////////
// Затем определяем удаления
if (oldValue != null) {
removals.addAll(oldValue);
}
if (newValue != null) {
removals.removeAll(newValue);
}
}
@Override
public String toString()
{
return "изменения " + propertyName + " новое=" + newValue + " старое=" + oldValue;
}
@Override
public Object getNewObjectValue(final Session session)
{
return splitElements(getNewValue(), session);
}
private List<Object> splitElements(final String keyList, final Session session)
{
List<Object> entityList = new ArrayList<>();
if (!StringUtils.isEmpty(keyList)) {
for (String key : keyList.split(",")) {
if (StringUtils.isEmpty(key)) {
continue;
}
entityList.add(loadItem(propertyType, key, session));
}
}
return entityList;
}
@Override
public Object getOldObjectValue(final Session session)
{
return splitElements(getOldValue(), session);
}
}
868d6abb7 2025 → 2026 63081666f Заголовки файлов исходного кода: 2024 → 2025. b6092df09 Авторские права 2023 → 2024 ab45d51fa Авторские права 2001-2022 → 2001-2023. 5f7ef41b8 Авторские права 2021 → 2022