diff --git a/doc/com.minres.scviewer.doc/pom.xml b/doc/com.minres.scviewer.doc/pom.xml index 27d7d1a..312f53b 100644 --- a/doc/com.minres.scviewer.doc/pom.xml +++ b/doc/com.minres.scviewer.doc/pom.xml @@ -7,7 +7,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. diff --git a/features/com.minres.scviewer.database.feature/pom.xml b/features/com.minres.scviewer.database.feature/pom.xml index 0cf5a2a..cd91068 100644 --- a/features/com.minres.scviewer.database.feature/pom.xml +++ b/features/com.minres.scviewer.database.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 3.0.0-SNAPSHOT diff --git a/features/com.minres.scviewer.e4.feature/pom.xml b/features/com.minres.scviewer.e4.feature/pom.xml index 368c1a7..cfec10a 100644 --- a/features/com.minres.scviewer.e4.feature/pom.xml +++ b/features/com.minres.scviewer.e4.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 1.1.0-SNAPSHOT diff --git a/features/com.minres.scviewer.e4.help.feature/pom.xml b/features/com.minres.scviewer.e4.help.feature/pom.xml index 5d0c641..1192a6b 100644 --- a/features/com.minres.scviewer.e4.help.feature/pom.xml +++ b/features/com.minres.scviewer.e4.help.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 1.0.0-SNAPSHOT diff --git a/features/com.minres.scviewer.e4.platform.feature/pom.xml b/features/com.minres.scviewer.e4.platform.feature/pom.xml index 6cc5df3..8fc5ccf 100644 --- a/features/com.minres.scviewer.e4.platform.feature/pom.xml +++ b/features/com.minres.scviewer.e4.platform.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 1.0.0-SNAPSHOT diff --git a/features/com.minres.scviewer.feature/pom.xml b/features/com.minres.scviewer.feature/pom.xml index 67f14a9..f7c89d0 100644 --- a/features/com.minres.scviewer.feature/pom.xml +++ b/features/com.minres.scviewer.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 1.1.0-SNAPSHOT diff --git a/features/com.minres.scviewer.ui.feature/pom.xml b/features/com.minres.scviewer.ui.feature/pom.xml index f98fb1c..ced77a1 100644 --- a/features/com.minres.scviewer.ui.feature/pom.xml +++ b/features/com.minres.scviewer.ui.feature/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 1.1.0-SNAPSHOT diff --git a/plugins/com.minres.scviewer.database.ftr/pom.xml b/plugins/com.minres.scviewer.database.ftr/pom.xml index b35f6b7..00217c0 100644 --- a/plugins/com.minres.scviewer.database.ftr/pom.xml +++ b/plugins/com.minres.scviewer.database.ftr/pom.xml @@ -6,7 +6,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin 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 7d97f91..deb6e30 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 @@ -17,15 +17,13 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.TreeMap; +import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorInputStream; import org.eclipse.collections.impl.map.mutable.UnifiedMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +40,6 @@ import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.RelationTypeFactory; import com.minres.scviewer.database.tx.ITx; import com.minres.scviewer.database.tx.ITxAttribute; -import com.minres.scviewer.database.RelationType; import jacob.CborDecoder; import jacob.CborType; @@ -202,9 +199,17 @@ public class FtrDbLoader implements IWaveformDbLoader { try(FileInputStream fis = new FileInputStream(file)) { FileChannel fc = fis.getChannel(); for (Long offset : fileOffsets) { - fc.position(offset); - CborDecoder parser = new CborDecoder(fis); - ret.add(parser.readByteString()); + if(offset>=0) { + fc.position(offset); + CborDecoder parser = new CborDecoder(fis); + ret.add(parser.readByteString()); + } else { + fc.position(-offset); + CborDecoder parser = new CborDecoder(fis); + BlockLZ4CompressorInputStream decomp = new BlockLZ4CompressorInputStream(new ByteArrayInputStream(parser.readByteString())); + ret.add(decomp.readAllBytes()); + decomp.close(); + } } } catch (Exception e) { LOG.error("Error parsing file "+file.getName(), e); @@ -317,7 +322,11 @@ public class FtrDbLoader implements IWaveformDbLoader { while(next != null && !break_type.isEqualType(next)) { long tag = readTag(); switch((int)tag) { +<<<<<<< HEAD case 6: // info +======= + case 6: { // info +>>>>>>> refs/heads/release/2.17.1 CborDecoder cbd = new CborDecoder(new ByteArrayInputStream(readByteString())); long sz = cbd.readArrayLength(); assert(sz==3); @@ -328,14 +337,29 @@ public class FtrDbLoader implements IWaveformDbLoader { assert(epoch_tag==1); cbd.readInt(); // epoch break; + } case 8: { // dictionary uncompressed parseDict(new CborDecoder(new ByteArrayInputStream(readByteString()))); break; } + case 9: { // dictionary compressed + long sz = readArrayLength(); + assert(sz==2); + readInt(); // uncompressed size + parseDict(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString())))); + break; + } case 10: { // directory uncompressed parseDir(new CborDecoder(new ByteArrayInputStream(readByteString()))); break; } + case 11: { // directory compressed + long sz = readArrayLength(); + assert(sz==2); + readInt(); // uncompressed size + parseDir(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString())))); + break; + } case 12: { //tx chunk uncompressed long len = readArrayLength(); assert(len==2); @@ -345,10 +369,29 @@ public class FtrDbLoader implements IWaveformDbLoader { parseTx(txStream, txStream.fileOffsets.size()-1, readByteString()); break; } + case 13: { //tx chunk compressed + long len = readArrayLength(); + assert(len==3); + long stream_id = readInt(); + readInt(); // uncompressed size + TxStream txStream = loader.txStreams.get(stream_id); + txStream.fileOffsets.add(0-inputStream.getChannel().position()); + BlockLZ4CompressorInputStream decomp = new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString())); + parseTx(txStream, txStream.fileOffsets.size()-1, decomp.readAllBytes()); + decomp.close(); + break; + } case 14: { // relations uncompressed parseRel(new CborDecoder(new ByteArrayInputStream(readByteString()))); break; } + case 15: { // relations uncompressed + long sz = readArrayLength(); + assert(sz==2); + readInt(); // uncompressed size + parseRel(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString())))); + break; + } } next = peekType(); } diff --git a/plugins/com.minres.scviewer.database.sqlite/pom.xml b/plugins/com.minres.scviewer.database.sqlite/pom.xml index 38f7d5c..9c4ac8f 100644 --- a/plugins/com.minres.scviewer.database.sqlite/pom.xml +++ b/plugins/com.minres.scviewer.database.sqlite/pom.xml @@ -4,7 +4,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.database.text/pom.xml b/plugins/com.minres.scviewer.database.text/pom.xml index 645facd..81881c1 100644 --- a/plugins/com.minres.scviewer.database.text/pom.xml +++ b/plugins/com.minres.scviewer.database.text/pom.xml @@ -6,7 +6,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.database.ui.swt/pom.xml b/plugins/com.minres.scviewer.database.ui.swt/pom.xml index c8c1553..806f54e 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/pom.xml +++ b/plugins/com.minres.scviewer.database.ui.swt/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. 4.0.0-SNAPSHOT diff --git a/plugins/com.minres.scviewer.database.vcd/pom.xml b/plugins/com.minres.scviewer.database.vcd/pom.xml index 7fe350b..dae5ea0 100644 --- a/plugins/com.minres.scviewer.database.vcd/pom.xml +++ b/plugins/com.minres.scviewer.database.vcd/pom.xml @@ -5,7 +5,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.database/pom.xml b/plugins/com.minres.scviewer.database/pom.xml index 593105a..ea83e1c 100644 --- a/plugins/com.minres.scviewer.database/pom.xml +++ b/plugins/com.minres.scviewer.database/pom.xml @@ -4,7 +4,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.e4.application.help/META-INF/MANIFEST.MF b/plugins/com.minres.scviewer.e4.application.help/META-INF/MANIFEST.MF index 6e54435..10ffb53 100644 --- a/plugins/com.minres.scviewer.e4.application.help/META-INF/MANIFEST.MF +++ b/plugins/com.minres.scviewer.e4.application.help/META-INF/MANIFEST.MF @@ -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.17.0 +Bundle-Version: 2.17.1 Bundle-Vendor: MINRES Technologies GmbH Automatic-Module-Name: com.minres.scviewer.e4.application.help Bundle-RequiredExecutionEnvironment: JavaSE-11 diff --git a/plugins/com.minres.scviewer.e4.application.help/pom.xml b/plugins/com.minres.scviewer.e4.application.help/pom.xml index c913303..fd8ce25 100644 --- a/plugins/com.minres.scviewer.e4.application.help/pom.xml +++ b/plugins/com.minres.scviewer.e4.application.help/pom.xml @@ -6,7 +6,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF index b3c837d..f6fc855 100644 --- a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF +++ b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF @@ -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.17.0 +Bundle-Version: 2.17.1 Bundle-Vendor: %Bundle-Vendor Require-Bundle: javax.inject;bundle-version="1.0.0", org.eclipse.core.runtime;bundle-version="3.11.1", diff --git a/plugins/com.minres.scviewer.e4.application/pom.xml b/plugins/com.minres.scviewer.e4.application/pom.xml index 673a2e5..e67949b 100644 --- a/plugins/com.minres.scviewer.e4.application/pom.xml +++ b/plugins/com.minres.scviewer.e4.application/pom.xml @@ -6,7 +6,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/plugins/com.minres.scviewer.ui/pom.xml b/plugins/com.minres.scviewer.ui/pom.xml index 33d8616..43bd5ae 100644 --- a/plugins/com.minres.scviewer.ui/pom.xml +++ b/plugins/com.minres.scviewer.ui/pom.xml @@ -4,7 +4,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-plugin diff --git a/pom.xml b/pom.xml index e5ce28d..aca5226 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 pom releng/com.minres.scviewer.target @@ -70,7 +70,7 @@ com.minres.scviewer com.minres.scviewer.target - 2.17.0 + 2.17.1 org.eclipse.justj.openjdk.hotspot.jre.minimal-15 diff --git a/products/com.minres.scviewer.e4.product/pom.xml b/products/com.minres.scviewer.e4.product/pom.xml index a9de28e..25b1ae1 100644 --- a/products/com.minres.scviewer.e4.product/pom.xml +++ b/products/com.minres.scviewer.e4.product/pom.xml @@ -6,11 +6,11 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. com.minres.scviewer.e4.product - 2.17.0 + 2.17.1 eclipse-repository com.minres.scviewer diff --git a/products/com.minres.scviewer.e4.product/scviewer.product b/products/com.minres.scviewer.e4.product/scviewer.product index 237a44b..54f8e01 100644 --- a/products/com.minres.scviewer.e4.product/scviewer.product +++ b/products/com.minres.scviewer.e4.product/scviewer.product @@ -1,7 +1,7 @@ - + @@ -67,8 +67,8 @@ - + @@ -79,7 +79,7 @@ - + diff --git a/releng/com.minres.scviewer.target/pom.xml b/releng/com.minres.scviewer.target/pom.xml index 62c3b58..542b45a 100644 --- a/releng/com.minres.scviewer.target/pom.xml +++ b/releng/com.minres.scviewer.target/pom.xml @@ -12,7 +12,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. diff --git a/releng/com.minres.scviewer.updateSite/pom.xml b/releng/com.minres.scviewer.updateSite/pom.xml index 90e84a3..24cd8ec 100644 --- a/releng/com.minres.scviewer.updateSite/pom.xml +++ b/releng/com.minres.scviewer.updateSite/pom.xml @@ -7,7 +7,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. diff --git a/tests/com.minres.scviewer.database.test/inputs/my_db_c.ftr b/tests/com.minres.scviewer.database.test/inputs/my_db_c.ftr new file mode 100644 index 0000000..c207da3 Binary files /dev/null and b/tests/com.minres.scviewer.database.test/inputs/my_db_c.ftr differ diff --git a/tests/com.minres.scviewer.database.test/pom.xml b/tests/com.minres.scviewer.database.test/pom.xml index 1d34b0a..d694c69 100644 --- a/tests/com.minres.scviewer.database.test/pom.xml +++ b/tests/com.minres.scviewer.database.test/pom.xml @@ -6,7 +6,7 @@ com.minres.scviewer com.minres.scviewer.parent - 2.17.0 + 2.17.1 ../.. eclipse-test-plugin diff --git a/tests/com.minres.scviewer.database.test/src/com/minres/scviewer/database/test/DatabaseServicesTest.java b/tests/com.minres.scviewer.database.test/src/com/minres/scviewer/database/test/DatabaseServicesTest.java index ef4f7ac..36d7b88 100644 --- a/tests/com.minres.scviewer.database.test/src/com/minres/scviewer/database/test/DatabaseServicesTest.java +++ b/tests/com.minres.scviewer.database.test/src/com/minres/scviewer/database/test/DatabaseServicesTest.java @@ -148,4 +148,38 @@ public class DatabaseServicesTest { assertEquals(3, attr.size()); }); } + @Test + public void testCFtr() throws Exception { + File f = new File("inputs/my_db_c.ftr").getAbsoluteFile(); + assertTrue(f.exists()); + waveformDb.load(f); + assertNotNull(waveformDb); + List waveforms = waveformDb.getAllWaves(); + assertEquals(8, waveforms.size()); + assertEquals(1, waveformDb.getChildNodes().size()); + for(IWaveform w:waveforms) { + if(w.getId()==1) { + assertEquals(2, w.getRowCount()); + } else if(w.getId()==2l) { + assertEquals(1, w.getRowCount()); + } else if(w.getId()==3l) { + assertEquals(1, w.getRowCount()); + } + } + //waveforms.stream().filter(s -> s.getId()==1).collect(Collectors.toList()); + waveforms.stream().filter(s -> s.getId()==1).forEach(s -> { + assertEquals(27, s.getEvents().size()); + }); + waveforms.stream().filter(s -> s.getId()==1).map(s -> s.getEventsAtTime(0)).forEach(el -> { + assertEquals(1, el.length); + IEvent evt = el[0]; + assertTrue(evt instanceof ITxEvent); + ITx tx = ((ITxEvent)evt).getTransaction(); + assertNotNull(tx); + assertEquals(0, tx.getBeginTime()); + assertEquals(280000000, tx.getEndTime()); + List attr = tx.getAttributes(); + assertEquals(3, attr.size()); + }); + } }