diff --git a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/AbstractTxStream.java b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/AbstractTxStream.java index 2ae238a..310407b 100644 --- a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/AbstractTxStream.java +++ b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/AbstractTxStream.java @@ -153,8 +153,11 @@ abstract class AbstractTxStream extends HierNode implements IWaveform { switch(evt.getKind()) { case END: //TODO: might throw NPE in concurrent execution Long txId = txEvt.getTransaction().getId(); - txEvt.setConcurrencyIndex(rowByTxId.get(txId)); - rowByTxId.remove(txId); + Integer row = rowByTxId.get(txId); + if(row!=null) { + txEvt.setConcurrencyIndex(row); + rowByTxId.remove(txId); + } break; case SINGLE: for (; rowIdx < rowEndTime.size() && rowEndTime.get(rowIdx)>tx.getBeginTime(); rowIdx++); diff --git a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/FtrDbLoader.java b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/FtrDbLoader.java index a257df0..85ab7c7 100644 --- a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/FtrDbLoader.java +++ b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/FtrDbLoader.java @@ -238,6 +238,8 @@ public class FtrDbLoader implements IWaveformDbLoader { genId = cborDecoder.readInt(); long startTime = cborDecoder.readInt()*time_scale_factor; long endTime = cborDecoder.readInt()*time_scale_factor; + if(endTime state = new HashMap<>(); saveWaveformViewerState(state); + setSelection(null); waveformPane.getStreamList().clear(); + waveformPane.update(); if(database.isLoaded()) database.close(); database = dbFactory.getDatabase(); diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/AbstractTransactionTreeContentProvider.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/AbstractTransactionTreeContentProvider.java index 6b7d13e..df34739 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/AbstractTransactionTreeContentProvider.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/AbstractTransactionTreeContentProvider.java @@ -5,6 +5,7 @@ import java.util.Vector; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; +import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.tx.ITx; import com.minres.scviewer.database.tx.ITxRelation; import com.minres.scviewer.e4.application.Messages; @@ -51,9 +52,11 @@ public abstract class AbstractTransactionTreeContentProvider implements ITreeCon TransactionTreeNode node=(TransactionTreeNode) element; switch(node.type) { case PROPS: + IWaveform stream = node.element.getStream(); + IWaveform generator = node.element.getGenerator(); return new Object[][]{ - {Messages.TransactionDetails_1, Messages.TransactionDetails_16, node.element.getStream().getFullName()}, - {Messages.TransactionDetails_2, Messages.TransactionDetails_16, node.element.getGenerator().getName()}, + {Messages.TransactionDetails_1, Messages.TransactionDetails_16, stream!=null?stream.getFullName():"[unknown]"}, + {Messages.TransactionDetails_2, Messages.TransactionDetails_16, generator!=null?generator.getName():"[unknown]"}, {Messages.TransactionDetails_19, Messages.TransactionDetails_20, waveformViewerPart.getScaledTime(node.element.getBeginTime())}, {Messages.TransactionDetails_21, Messages.TransactionDetails_20, waveformViewerPart.getScaledTime(node.element.getEndTime())} }; diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/TransactionTreeNode.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/TransactionTreeNode.java index 539d2d9..8613c77 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/TransactionTreeNode.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/txTableTree/TransactionTreeNode.java @@ -16,12 +16,12 @@ import com.minres.scviewer.e4.application.Messages; public class TransactionTreeNode implements Comparable{ /** The type. */ - public TransactionTreeNodeType type; + public final TransactionTreeNodeType type; /** The element. */ - public ITx element; + public final ITx element; - private String hier_path; + private final String hier_path; /** * Instantiates a new tree node. *