Compare commits

...

10 Commits

39 changed files with 86 additions and 73 deletions

View File

@ -7,7 +7,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>3.0.0-SNAPSHOT</version>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>1.0.0-SNAPSHOT</version>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>1.0.0-SNAPSHOT</version>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CBOR transaction database
Bundle-SymbolicName: com.minres.scviewer.database.ftr
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 1.0.2.qualifier
Bundle-Vendor: MINRES Technologies GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.osgi.framework;version="1.3.0",

View File

@ -2,11 +2,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>com.minres.scviewer.database.ftr</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>1.0.2-SNAPSHOT</version>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -178,7 +178,6 @@ public class FtrDbLoader implements IWaveformDbLoader {
*/
@Override
public void load(File file) throws InputFormatException {
dispose();
this.file=file;
try {
fis = new FileInputStream(file);
@ -298,10 +297,10 @@ public class FtrDbLoader implements IWaveformDbLoader {
case 6: // id/generator/start/end
long len = cborDecoder.readArrayLength();
assert(len==4);
cborDecoder.readInt();
cborDecoder.readInt();
cborDecoder.readInt();
cborDecoder.readInt();
cborDecoder.readInt(); //txid
cborDecoder.readInt(); // genId
cborDecoder.readInt(); // startTime
cborDecoder.readInt(); // endTime
break;
default: { // skip over 7:begin attr, 8:record attr, 9:end attr
long sz = cborDecoder.readArrayLength();

View File

@ -77,8 +77,8 @@ class FtrTx implements Serializable {
public List<ITxAttribute> getAttributes(FtrDbLoader loader) {
if(attributes.size()==0)
try {
TxStream stream = loader.txStreams.get(streamId);
byte[] chunk = stream.getChunks().get((int)blockId);
final TxStream stream = loader.txStreams.get(streamId);
final byte[] chunk = stream.getChunks().get((int)blockId);
attributes.addAll(loader.parseAtrributes(chunk, blockOffset));
} catch (InputFormatException e) {
// TODO Auto-generated catch block

View File

@ -70,7 +70,7 @@ class TxGenerator extends AbstractTxStream {
List<byte[]> chunks = stream.getChunks();
int blockid = 0;
for (byte[] bs : chunks) {
loader.parseTx(stream, blockid, bs);
loader.parseTx(stream, blockid++, bs);
}
} catch (InputFormatException e) {
// TODO Auto-generated catch block

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<version>4.0.0-SNAPSHOT</version>

View File

@ -84,7 +84,10 @@ public class ArrowPainter implements IPainter {
private int getConcurrencyIndex(ITx tx) {
IEvent[] eventList = tx.getStream().getEventsBeforeTime(tx.getBeginTime());
Optional<Integer> res = Arrays.stream(eventList).map(e -> ((ITxEvent)e).getRowIndex()).findFirst();
return res.isPresent()? res.get():0;
if(res.isPresent() && res.get()>0) {
return res.get();
} else
return 0;
}
protected boolean calculateGeometries() {
@ -98,8 +101,10 @@ public class ArrowPainter implements IPainter {
return true;
}
int laneHeight = painter.getHeight() / tx.getStream().getRowCount();
int laneOffset = laneHeight * getConcurrencyIndex(tx);
int rulerHeight = waveCanvas.rulerHeight;
txRectangle = new Rectangle((int) (tx.getBeginTime() / scaleFactor),
waveCanvas.rulerHeight + painter.getVerticalOffset() + laneHeight * getConcurrencyIndex(tx),
rulerHeight + painter.getVerticalOffset() + laneOffset,
(int) ((tx.getEndTime() - tx.getBeginTime()) / scaleFactor), laneHeight);
deriveGeom(tx.getIncomingRelations(), iRect, false);
deriveGeom(tx.getOutgoingRelations(), oRect, true);
@ -114,12 +119,13 @@ public class ArrowPainter implements IPainter {
if (waveCanvas.wave2painterMap.containsKey(iWaveform)) {
IWaveformPainter painter = waveCanvas.wave2painterMap.get(iWaveform);
if(painter!=null) {
int height = waveCanvas.styleProvider.getTrackHeight();
int laneHeight = waveCanvas.styleProvider.getTrackHeight();
int laneOffset = laneHeight * getConcurrencyIndex(tx);
Rectangle bb = new Rectangle(
(int) (otherTx.getBeginTime() / scaleFactor),
waveCanvas.rulerHeight + painter.getVerticalOffset() + height * getConcurrencyIndex(otherTx),
waveCanvas.rulerHeight + painter.getVerticalOffset() + laneOffset,
(int) ((otherTx.getEndTime() - otherTx.getBeginTime()) / scaleFactor),
height);
laneHeight);
res.add(new LinkEntry(bb, iTxRelation.getRelationType()));
}
}

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -15,10 +15,10 @@ import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -44,13 +44,13 @@ public class WaveformDb extends HierNode implements IWaveformDb, PropertyChangeL
private boolean loaded;
/** The relation types. */
private List<RelationType> relationTypes;
private List<RelationType> relationTypes = new ArrayList<>();;
/** The waveforms. */
private Map<String, IWaveform> waveforms;
private Map<String, IWaveform> waveforms = Collections.synchronizedMap(new HashMap<>()) ;;
/** The max time. */
private long maxTime = -1;
private long maxTime = 0L;
private static final Logger LOG = LoggerFactory.getLogger(WaveformDb.class);
@ -81,16 +81,6 @@ public class WaveformDb extends HierNode implements IWaveformDb, PropertyChangeL
return Collections.unmodifiableList(loaderFactories);
}
/**
* Instantiates a new waveform db.
*/
public WaveformDb() {
super();
waveforms = new ConcurrentHashMap<>();
relationTypes = new ArrayList<>();
maxTime = 0L;
}
/**
* Gets the max time.
*
@ -143,15 +133,15 @@ public class WaveformDb extends HierNode implements IWaveformDb, PropertyChangeL
retval=false;
}
loader.removePropertyChangeListener(this);
for (IWaveform w : loader.getAllWaves()) {
waveforms.put(w.getFullName(), w);
}
// for (IWaveform w : loader.getAllWaves()) {
// waveforms.put(w.getFullName(), w);
// }
if (loader.getMaxTime() > maxTime) {
maxTime = loader.getMaxTime();
}
if (name == null)
name = getFileBasename(inp.getName());
buildHierarchyNodes();
//buildHierarchyNodes();
relationTypes.addAll(loader.getAllRelationTypes());
}
}

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: SCViewer Help
Bundle-SymbolicName: com.minres.scviewer.e4.application.help;singleton:=true
Bundle-Version: 2.19.0
Bundle-Version: 2.19.3
Bundle-Vendor: MINRES Technologies GmbH
Automatic-Module-Name: com.minres.scviewer.e4.application.help
Bundle-RequiredExecutionEnvironment: JavaSE-11

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: com.minres.scviewer.e4.application;singleton:=true
Bundle-Version: 2.19.0
Bundle-Version: 2.19.3
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: javax.inject;bundle-version="1.0.0",
org.eclipse.core.runtime;bundle-version="3.11.1",

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -366,10 +366,14 @@ public class DesignBrowser {
}
}
@SuppressWarnings("unchecked")
public void setWaveformViewer(WaveformViewer waveformViewerPart) {
this.waveformViewerPart=waveformViewerPart;
IWaveformDb database = waveformViewerPart.getDatabase();
setWaveformDb(database);
}
@SuppressWarnings("unchecked")
public void setWaveformDb(IWaveformDb database) {
Object input = treeViewer.getInput();
if(input instanceof List<?>){
IWaveformDb db = ((List<IWaveformDb>)input).get(0);

View File

@ -267,6 +267,7 @@ public class TransactionList extends Composite {
.map(e -> new AttributeNameBean(e.getKey(), e.getValue()))
.collect(Collectors.toList());
getDisplay().asyncExec(() -> {
if(tableViewer.getControl().isDisposed()) return;
tableViewer.setInput(txList);
attrNames.clear();
attrNames.addAll(newAttrNames);

View File

@ -176,7 +176,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
/** The factory. */
WaveformViewFactory factory = new WaveformViewFactory();
DesignBrowser browser = null;
DesignBrowser designBrowser = null;
TransactionDetails detailsView = null;
@ -206,8 +206,6 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
IEclipsePreferences store = null;
@Inject @Optional DesignBrowser designBrowser;
/** The database. */
private IWaveformDb database;
@ -295,7 +293,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
middleSash.setWeights(new int[] {75, 25});
ctx.set(Composite.class, left);
browser = ContextInjectionFactory.make(DesignBrowser.class, ctx);
designBrowser = ContextInjectionFactory.make(DesignBrowser.class, ctx);
ctx.set(Composite.class, right);
detailsView = ContextInjectionFactory.make(TransactionDetails.class, ctx);
@ -623,6 +621,8 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
loadState(partConfig);
if (state != null && !state.isEmpty())
restoreWaveformViewerState(state);
if(designBrowser!=null)
designBrowser.setWaveformDb(database);
fileChecker = null;
if (checkForUpdates)
fileChecker = fileMonitor.addFileChangeListener(WaveformViewer.this, filesToLoad, FILE_CHECK_INTERVAL);
@ -654,9 +654,11 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
Map<String, String> state = new HashMap<>();
saveWaveformViewerState(state);
waveformPane.getStreamList().clear();
if(database.isLoaded())
database.close();
database = dbFactory.getDatabase();
database.addPropertyChangeListener(evt -> {
if (IHierNode.WAVEFORMS.equals(evt.getPropertyName())) { //$NON-NLS-1$
if (IHierNode.WAVEFORMS.equals(evt.getPropertyName()) || IHierNode.LOADING_FINISHED.equals(evt.getPropertyName())) { //$NON-NLS-1$
myParent.getDisplay().syncExec(() -> waveformPane.setMaxTime(database.getMaxTime()));
}
});
@ -826,7 +828,18 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
if(Boolean.parseBoolean(state.get(SHOWN_WAVEFORM + i + WAVEFORM_SELECTED)))
selectedTrackEntries.add(trackEntry);
} else {
IWaveform waveform = database.getStreamByName(state.get(SHOWN_WAVEFORM + i));
String name = state.get(SHOWN_WAVEFORM + i);
IWaveform waveform = database.getStreamByName(name);
if (waveform == null) {
int pos = name.lastIndexOf('.');
waveform = database.getStreamByName(name.substring(0, pos));
if(waveform!=null) {
List<IHierNode> childs = waveform.getChildNodes();
waveform = (IWaveform) childs.stream().filter(node -> name.substring(pos+1).equals(node.getName()))
.findAny()
.orElse(null);
}
}
if (waveform != null) {
TrackEntry trackEntry = waveformPane.addWaveform(waveform, -1);
//check if t is selected

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<packaging>pom</packaging>
<modules>
<module>releng/com.minres.scviewer.target</module>
@ -71,13 +71,13 @@
<artifact>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.target</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
</artifact>
</target>
<executionEnvironment>
org.eclipse.justj.openjdk.hotspot.jre.minimal-15</executionEnvironment>
org.eclipse.justj.openjdk.hotspot.jre.minimal-17</executionEnvironment>
<executionEnvironmentDefault>
org.eclipse.justj.openjdk.hotspot.jre.minimal-15</executionEnvironmentDefault>
org.eclipse.justj.openjdk.hotspot.jre.minimal-17</executionEnvironmentDefault>
<includePackedArtifacts>true</includePackedArtifacts>
<environments>
<environment>

View File

@ -6,11 +6,11 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<artifactId>com.minres.scviewer.e4.product</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<packaging>eclipse-repository</packaging>
<groupId>com.minres.scviewer</groupId>
<build>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="SCViewer" uid="scviewer" id="com.minres.scviewer.e4.application.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="2.19.0" useFeatures="true" includeLaunchers="true" autoIncludeRequirements="true">
<product name="SCViewer" uid="scviewer" id="com.minres.scviewer.e4.application.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="2.19.3" useFeatures="true" includeLaunchers="true" autoIncludeRequirements="true">
<configIni use="default">
</configIni>
@ -34,7 +34,7 @@
</launcher>
<vm>
<linux include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
<linux include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17</linux>
<macos include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
<windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
</vm>

View File

@ -36,7 +36,7 @@
<unit id="org.eclipse.collections.feature.source.feature.group" version="0.0.0"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/justj/jres/15/updates/release/latest"/>
<repository location="https://download.eclipse.org/justj/jres/17/updates/release/latest"/>
<unit id="org.eclipse.justj.openjdk.hotspot.jre.minimal.stripped.feature.group" version="0.0.0"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">

View File

@ -12,7 +12,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>

View File

@ -7,7 +7,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<build>

View File

@ -5,11 +5,11 @@
<xsl:for-each select="site">
<html>
<head>
<title>com.itjw.txviewer.updateSite</title>
<title>com.minres.scviewer.updateSite</title>
<style>@import url("web/site.css");</style>
</head>
<body>
<h1 class="title">com.itjw.txviewer.updateSite</h1>
<h1 class="title">com.minres.scviewer.updateSite</h1>
<p class="bodyText"><xsl:value-of select="description"/></p>
<table width="100%" border="0" cellspacing="1" cellpadding="2">
<xsl:for-each select="category-def">

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.19.0</version>
<version>2.19.3</version>
<relativePath>../..</relativePath>
</parent>
<packaging>eclipse-test-plugin</packaging>