提交 896cf970 编写于 作者: sq3536's avatar sq3536

deep clone

上级 d809455b
......@@ -14,6 +14,15 @@ import java.util.List;
public class EntityObj extends DataObj<String,Object> {
@JsonIgnore
@JSONField(serialize = false)
public EntityObj copy() {
EntityObj copy=new EntityObj();
this.copyTo(copy,true);
if(this.property!=null)
copy.setProperty(this.property);
return copy;
}
@JsonIgnore
@JSONField(serialize = false)
......@@ -158,11 +167,14 @@ public class EntityObj extends DataObj<String,Object> {
tmps.remove(modelObj.getRowKey());
});
});
if(tmps.size()>0)
if(tmps.size()==1)
{
tmps.values().iterator().next().setEntity(this.getProperty().getPropertyName(),this);
}
else if(tmps.size()>1)
{
tmps.values().forEach(obj->{
EntityObj copy=this.copyTo(new EntityObj(),true).setProperty(this.getProperty());
obj.setEntity(this.getProperty().getPropertyName(),copy);
obj.setEntity(this.getProperty().getPropertyName(),this.copy());
});
}
}
......
......@@ -19,6 +19,45 @@ import java.util.List;
public class ModelObj extends DataObj<String,Object> {
@JsonIgnore
@JSONField(serialize = false)
public ModelObj copy() {
ModelObj copy=new ModelObj();
if(this.dataModel!=null)
copy.setDataModel(this.dataModel);
if(copy.getDataModel()!=null)
{
copy.getDataModel().getObjectProperties().forEach(property -> {
Object obj=this.get(property.getPropertyName());
if(obj!=null&&obj instanceof EntityObj)
{
copy.setEntity(property.getPropertyName(),((EntityObj)obj).copy());
}
});
copy.getDataModel().getNestedDataModels().forEach(dm -> {
Object list=this.get(dm.getDataModelName());
if(list!=null&&list instanceof NestedArray)
{
NestedArray nestedArray=(NestedArray) list;
nestedArray.forEach(sub->{
sub.copy().setParent(copy);
});
}
});
}
if(!StringUtils.isEmpty(this.getRowKey()))
copy.setRowKey(this.getRowKey());
return copy;
}
@JsonIgnore
@JSONField(serialize = false)
private DataModel dataModel;
......@@ -273,7 +312,7 @@ public class ModelObj extends DataObj<String,Object> {
else if(tmps.size()>1)
{
tmps.values().forEach(parent -> {
ModelObj copy = this.copyTo(new ModelObj(),true).setDataModel(this.getDataModel()).setTimestamp(this.getTimestamp());
ModelObj copy = this.copy().setTimestamp(this.getTimestamp());
copy.setParent(parent);
});
}
......
......@@ -12,6 +12,7 @@ import java.util.List;
public class NestedArray extends ArrayList<ModelObj> {
@JsonIgnore
@JSONField(serialize = false)
private DataModel dataModel;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册