Skip to content

Commit

Permalink
style: 代码格式化
Browse files Browse the repository at this point in the history
  • Loading branch information
limaofeng committed Oct 18, 2021
1 parent 3a4fafd commit 18df738
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.jfantasy.framework.util.common.BeanUtil;
import org.jfantasy.framework.util.common.ClassUtil;
import org.jfantasy.framework.util.common.ObjectUtil;
import org.jfantasy.framework.util.common.toys.CompareResults;
import org.jfantasy.framework.util.ognl.OgnlUtil;
import org.jfantasy.framework.util.regexp.RegexpUtil;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -91,7 +92,7 @@ public boolean exists(List<PropertyFilter> filters) {
}

@Override
public Optional<T> findBy(String name, Object value) {
public Optional<T> findOneBy(String name, Object value) {
return this.findOne(PropertyFilter.builder().equal(name, value).build());
}

Expand Down Expand Up @@ -262,16 +263,39 @@ private void cleanManyToMany(
if (!ClassUtil.isList(fks)) {
continue;
}

List<Object> source = ognlUtil.getValue(field.getName(), oldEntity);
List<Object> objects = (List<Object>) fks;
List<Object> addObjects = new ArrayList<>();
for (Object fk : objects) {
Serializable fkId = HibernateUtils.getIdValue(targetEntityClass, fk);
Object fkObj = fkId != null ? getJpaRepository(targetEntityClass).getById(fkId) : null;
if (fkObj != null) {
addObjects.add(fkObj);

if (source == objects) {
continue;
}

if (source != null && !source.isEmpty()) {
Class finalTargetEntityClass = targetEntityClass;
CompareResults results =
ObjectUtil.compare(
source,
objects,
(Object o1, Object o2) -> {
Serializable fkId1 = HibernateUtils.getIdValue(finalTargetEntityClass, o1);
Serializable fkId2 = HibernateUtils.getIdValue(finalTargetEntityClass, o2);
return (fkId1 == fkId2) ? 0 : -1;
});

ObjectUtil.remove(source, (item) -> results.getExceptA().contains(item));
source.addAll((Collection<?>) results.getExceptB());
} else {
List<Object> addObjects = new ArrayList<>();
for (Object fk : objects) {
Serializable fkId = HibernateUtils.getIdValue(targetEntityClass, fk);
Object fkObj = fkId != null ? getJpaRepository(targetEntityClass).getById(fkId) : null;
if (fkObj != null) {
addObjects.add(fkObj);
}
}
ognlUtil.setValue(field.getName(), oldEntity == null ? entity : oldEntity, addObjects);
}
ognlUtil.setValue(field.getName(), oldEntity == null ? entity : oldEntity, addObjects);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public interface JpaRepository<T, PK extends Serializable>
* @param value 字段值
* @return Optional<T>
*/
Optional<T> findBy(String name, Object value);
Optional<T> findOneBy(String name, Object value);

/**
* 数据集数量
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
import java.util.stream.Stream;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.collection.internal.PersistentBag;
import org.jfantasy.framework.dao.mybatis.keygen.GUIDKeyGenerator;
import org.jfantasy.framework.error.IgnoreException;
import org.jfantasy.framework.error.ValidationException;
import org.jfantasy.framework.spring.SpELUtil;
import org.jfantasy.framework.util.common.toys.CompareResults;
import org.jfantasy.framework.util.ognl.OgnlUtil;
import org.jfantasy.framework.util.reflect.Property;
import org.springframework.beans.BeanUtils;
Expand Down Expand Up @@ -1038,30 +1038,19 @@ public static <T> T[] multipleValuesObjectsObjects(Object value) {
* @param <T>
* @return
*/
public <T> CompareResults<T> compare(
public static <T> CompareResults<T> compare(
Collection<T> first, Collection<T> second, Comparator<T> comparator) {
CompareResults<T> results = new CompareResults();
List<T> olds = new ArrayList<>(first);
for (T obj : second) {
if (exists(olds, (Predicate<T>) item -> comparator.compare(item, obj) != -1)) {
remove(olds, item -> comparator.compare(item, obj) != -1);
results.intersect.add(obj);
results.getIntersect().add(obj);
} else {
results.exceptB.add(obj);
results.getExceptB().add(obj);
}
}
results.setExceptA(olds);
return results;
}

@Data
@NoArgsConstructor
public static class CompareResults<T> {
/** B-A 多出的 */
private List<T> exceptB = new ArrayList<>();
/** 交集 */
private List<T> intersect = new ArrayList<>();
/** A - B 消失的 */
private List<T> exceptA = new ArrayList<>();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.jfantasy.framework.util.common.toys;

import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* 比较结果
*
* @author limaofeng
*/
@Data
@NoArgsConstructor
public class CompareResults<T> {
/** B-A 多出的 */
private List<T> exceptB = new ArrayList<>();
/** 交集 */
private List<T> intersect = new ArrayList<>();
/** A - B 消失的 */
private List<T> exceptA = new ArrayList<>();
}

0 comments on commit 18df738

Please sign in to comment.