fixes a tree display issue in transaction details view

This commit is contained in:
Eyck Jentzsch 2023-02-24 11:28:40 +01:00
parent 2885cb9602
commit 85d9c92f21
2 changed files with 17 additions and 9 deletions

View File

@ -81,4 +81,8 @@ public class TxAttribute implements ITxAttribute, Serializable {
return value; return value;
} }
@Override
public String toString() {
return "FtxAttr: " + attributeType.toString() + "=" + value;
}
} }

View File

@ -1,11 +1,13 @@
package com.minres.scviewer.e4.application.parts.txTableTree; package com.minres.scviewer.e4.application.parts.txTableTree;
import java.util.AbstractMap; import java.util.AbstractMap;
import java.util.AbstractMap.SimpleEntry;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.minres.scviewer.database.tx.ITx; import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxAttribute;
import com.minres.scviewer.e4.application.Messages; import com.minres.scviewer.e4.application.Messages;
/** /**
@ -59,19 +61,21 @@ public class TransactionTreeNode implements Comparable<TransactionTreeNode>{
public Object[] getAttributeListForHier() { public Object[] getAttributeListForHier() {
if(childs==null) { if(childs==null) {
Map<String, Object> res = element.getAttributes().stream() Map<String, Object> res = element.getAttributes().stream()
.filter(txAttr -> txAttr.getName().startsWith(hier_path)) .filter(txAttr -> hier_path.length()== 0 || txAttr.getName().startsWith(hier_path+'.'))
.map(txAttr -> { .map(txAttr -> mapElemet(txAttr))
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue(), (first, second) -> first));
childs = new TreeMap<String, Object>(res).values().toArray();
}
return childs;
}
private SimpleEntry<String, ? extends Object> mapElemet(ITxAttribute txAttr) {
String target = hier_path.length()==0?txAttr.getName():txAttr.getName().replace(hier_path+'.', ""); String target = hier_path.length()==0?txAttr.getName():txAttr.getName().replace(hier_path+'.', "");
String[] tokens = target.split("\\."); String[] tokens = target.split("\\.");
if(tokens.length==1) if(tokens.length==1)
return new AbstractMap.SimpleEntry<>(tokens[0], txAttr); return new AbstractMap.SimpleEntry<>(tokens[0], txAttr);
else else
return new AbstractMap.SimpleEntry<>(tokens[0], new TransactionTreeNode(element, hier_path.length()>0?hier_path+"."+tokens[0]:tokens[0])); return new AbstractMap.SimpleEntry<>(tokens[0], new TransactionTreeNode(element, hier_path.length()>0?hier_path+"."+tokens[0]:tokens[0]));
})
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue(), (first, second) -> first));
childs = new TreeMap<String, Object>(res).values().toArray();
}
return childs;
} }
private Object[] childs=null; private Object[] childs=null;