Compare commits

..

540 Commits

Author SHA1 Message Date
eyck ccc8d80ac2 add help plugin and handler, eclipse help does not start 2021-11-16 18:24:30 +01:00
eyck 1af3171b2e cleanup imports 2021-11-16 14:15:33 +01:00
eyck 03fd9e154b Merge branch 'master' into develop 2021-11-16 14:13:22 +01:00
eyck 3572f683e3 add zoom levels 2021-11-16 14:12:10 +01:00
eyck 524ffb189c fix MT race condition 2021-11-16 14:11:30 +01:00
eyck 7fac6c8f74 Merge branch 'release/2.14.1' into develop 2021-11-16 11:32:41 +01:00
eyck 037c645075 Merge branch 'release/2.14.1' 2021-11-16 11:32:41 +01:00
eyck 2f9bd29dc8 update version numbers 2021-11-16 11:32:34 +01:00
eyck 92662c546a fix zoom level calculation 2021-11-16 11:28:32 +01:00
eyck efa6544623 cleanup 2021-11-16 11:27:58 +01:00
eyck 52cf9daeec unify time printing (#69) 2021-11-16 09:37:50 +01:00
eyck 4a315722b1 add help browser window instead of dialog 2021-11-16 09:33:09 +01:00
eyck a52efd1a12 Merge branch 'master' into develop 2021-11-15 22:25:12 +01:00
eyck 535df30ada Merge branch 'release/2.14.0' into develop 2021-11-15 21:38:51 +01:00
eyck bad34dd1d1 Merge branch 'release/2.14.0' 2021-11-15 21:38:51 +01:00
eyck 5ac7f05f57 Merge branch 'master' of https://git.minres.com/VP-Tools/SCViewer 2021-11-15 21:37:51 +01:00
eyck 8353b59a27 update version numbers for release
This release fixes the following tickets:
* #62: Instead of or in addition to the Restore Default Zoom button, add
Full Zoom Out button.
* #64: Load multiple trace files and enable the possibility to view
signals from different files in a single window.
* partial #66: key shortcuts for actions like zoom in/out, go to
next/prev event etc
* #70: add full zoom and zoom between markers (once we had markers)
* #75: marker is often hiding events underneath for highlighting and
getting transaction details
* #82: Implement help for keyboard shortcuts
2021-11-15 21:29:08 +01:00
eyck 2c6ca6c376 update version number to 2.14 2021-11-15 21:25:05 +01:00
eyck f4b03cb0e6 extend zoom handling (#70) and hide tx property panes (#58) 2021-11-15 21:23:13 +01:00
eyck c7858997c0 update README.md 2021-11-15 15:18:56 +01:00
eyck bd99ab3992 corrected parent path im poms 2021-11-15 15:14:04 +01:00
eyck 66f365d38d externalize string in HelpDialog class 2021-11-15 15:14:04 +01:00
eyck 59987f262d update key bindings 2021-11-15 15:14:04 +01:00
eyck 452a28362e fix help link 2021-11-15 15:14:04 +01:00
eyck d6805f383b add help dialog 2021-11-15 15:14:04 +01:00
eyck 076611eec7 allow multiple loading of same format 2021-11-15 15:14:04 +01:00
eyck e0fa55e2c0 corrected parent path im poms 2021-11-15 14:32:55 +01:00
eyck 9ea1994228 update key bindings 2021-11-15 14:16:46 +01:00
eyck 36f628c365 add help dialog 2021-11-15 13:07:58 +01:00
eyck ff87e72510 allow multiple loading of same format 2021-11-15 10:52:59 +01:00
eyck aef1e29a53 Merge branch 'release/2.13.2' into develop 2021-07-11 14:22:41 +02:00
eyck 1ebf9ba382 update version numbers 2021-07-11 13:47:48 +02:00
eyck 929408d08c fix missing gzip txlog file filter in file dialog 2021-07-11 13:47:27 +02:00
eyck f57fb93525 fix reload issues 2021-07-11 13:46:35 +02:00
eyck 788065e456 Merge branch 'release/2.13.1' 2021-03-25 21:09:49 +00:00
eyck 22b46e0525 fix fit zoom level calculation 2021-03-25 21:07:05 +00:00
eyck b75018239a Merge branch 'master' into develop
Conflicts:
	features/com.minres.scviewer.database.feature/pom.xml
	features/com.minres.scviewer.e4.feature/pom.xml
	features/com.minres.scviewer.e4.platform.feature/pom.xml
	features/com.minres.scviewer.feature/pom.xml
	features/com.minres.scviewer.ui.feature/pom.xml
	plugins/com.minres.scviewer.database.sqlite/pom.xml
	plugins/com.minres.scviewer.database.text/pom.xml
	plugins/com.minres.scviewer.database.ui.swt/pom.xml
	plugins/com.minres.scviewer.database.vcd/pom.xml
	plugins/com.minres.scviewer.database/pom.xml
	plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF
	plugins/com.minres.scviewer.e4.application/pom.xml
	plugins/com.minres.scviewer.ui/pom.xml
	pom.xml
	products/com.minres.scviewer.e4.product/pom.xml
	products/com.minres.scviewer.e4.product/scviewer.product
	releng/com.minres.scviewer.target/pom.xml
	releng/com.minres.scviewer.updateSite/pom.xml
	tests/com.minres.scviewer.database.test/pom.xml
2021-03-25 20:46:30 +00:00
eyck 598bb8eec7 Merge remote-tracking branch 'origin/master' 2021-03-25 20:33:25 +00:00
eyck 869265fc13 add gzip files to file dialog filter 2021-03-25 20:27:55 +00:00
eyck 5ad813527a fix CLI handling 2021-03-25 20:27:55 +00:00
eyck 73f8d3d50a fix full name display of generators 2021-03-25 20:27:55 +00:00
eyck da1701195d update version numbers 2021-03-25 20:27:55 +00:00
eyck 9b6334509e update version numbers 2021-03-25 20:27:54 +00:00
eyck ac4acc34a4 fix warning and left-overs 2021-03-25 20:27:54 +00:00
eyck b6963f38d6 move interface to primitive types 2021-03-25 20:27:54 +00:00
eyck 182a036ade some more refactoring 2021-03-25 20:27:53 +00:00
eyck 97f2182290 adapt painter 2021-03-25 20:27:53 +00:00
eyck 1986a8c9c3 add explicit event list 2021-03-25 20:27:53 +00:00
eyck 6905d96329 add TreeMap facade 2021-03-25 20:27:52 +00:00
eyck 818f786b1d add dispose check in case view is closed while loading db 2021-03-25 20:27:52 +00:00
eyck 2948c1bd33 update version numbers 2021-03-25 20:22:15 +00:00
eyck 78faab404c apply UI fixes
* wrong arrow target of transaction
* wrong zomm factor calculation for zoom fit
* streams and waveforms not visible if at root level
2021-03-25 20:18:50 +00:00
eyck 64b10970a8 add gzip files to file dialog filter 2021-03-02 21:55:52 +01:00
eyck 6ab8fd232e fix CLI handling 2021-03-02 21:55:52 +01:00
eyck f337a94112 fix full name display of generators 2021-03-02 21:55:52 +01:00
eyck 0135631a3e update version numbers 2021-03-02 21:55:52 +01:00
eyck d0e1e8801f update version numbers 2021-03-02 21:55:52 +01:00
eyck d1b3a91979 fix warning and left-overs 2021-03-02 21:55:52 +01:00
eyck 45c1396e0e move interface to primitive types 2021-03-02 21:55:51 +01:00
eyck b7301733f0 some more refactoring 2021-03-02 21:55:51 +01:00
eyck 5df91dbaa8 adapt painter 2021-03-02 21:55:51 +01:00
eyck 68918689e7 add explicit event list 2021-03-02 21:55:51 +01:00
eyck c41dd646da add TreeMap facade 2021-03-02 21:55:51 +01:00
eyck a077389b83 add dispose check in case view is closed while loading db 2021-03-02 21:55:51 +01:00
eyck caa37375c0 add gzip files to file dialog filter 2021-03-02 21:42:54 +01:00
eyck 3daea8ab43 fix CLI handling 2021-03-02 19:32:21 +01:00
eyck c5d77af0d0 fix full name display of generators 2021-03-02 19:32:09 +01:00
eyck 7f7fdf09f4 update version numbers 2021-02-27 19:13:28 +00:00
eyck 7aba6a2ecb update version numbers 2021-02-27 19:13:17 +00:00
eyck 012395b933 Merge branch 'feature/eclipse_collections' into develop 2021-02-27 18:47:31 +00:00
eyck 787e3accc0 fix warning and left-overs 2021-02-27 14:00:29 +00:00
eyck b778940c83 move interface to primitive types 2021-02-27 13:59:00 +00:00
eyck 71297c4e5a some more refactoring 2021-02-27 13:47:37 +00:00
eyck 1d2395e00d adapt painter 2021-02-27 13:33:15 +00:00
eyck b69e1886b9 add explicit event list 2021-02-27 13:27:51 +00:00
eyck d65803a4b7 add TreeMap facade 2021-02-26 11:57:54 +00:00
eyck 0e49a68e09 add dispose check in case view is closed while loading db 2021-02-24 08:46:19 +00:00
eyck 7af5593fd4 Merge branch 'release/2.12.2' into develop 2021-02-24 07:05:00 +00:00
eyck 25545dac51 Merge branch 'release/2.12.2' 2021-02-24 07:04:59 +00:00
eyck df77af64ca update version numbers 2021-02-24 07:04:47 +00:00
eyck e264ab2cbe fix name display in waveform view (#6) 2021-02-24 06:56:28 +00:00
eyck 8c17ed4146 Merge branch 'release/2.12.1' into develop 2021-02-18 08:19:17 +00:00
eyck 4ee2e8bc68 Merge branch 'release/2.12.1' 2021-02-18 08:19:16 +00:00
eyck bdcba613d5 fix version numbers 2021-02-18 08:18:47 +00:00
eyck 049de0ddaf add VM arguments for Java > 9 2021-02-18 08:14:12 +00:00
eyck 6be3f378d4 renmove deprecated newInstance call 2021-02-18 06:32:14 +00:00
eyck 6d8aa33fc9 update language level 2021-02-18 06:26:42 +00:00
eyck b37ba9f2f1 Merge branch 'master' into develop 2021-02-17 21:15:33 +00:00
eyck 799f083a74 fix hierarchy display 2021-02-17 21:14:28 +00:00
eyck 156abe63cd fix display bug 2021-02-17 20:27:58 +00:00
eyck d38016a03f fix display bug 2021-02-17 20:24:25 +00:00
eyck 5604c3ee5e Merge branch 'release/2.12.0' 2021-01-15 16:50:33 +01:00
eyck 5adeae15a9 change name of generated product artifacts 2021-01-15 15:52:28 +01:00
eyck bca94ceb9d fix stream row calculation 2021-01-15 15:51:59 +01:00
eyck a42f086339 set max heap to 2GB by default 2021-01-14 23:56:04 +01:00
eyck 888edf32be remove ITxGenerator interface 2021-01-14 23:55:47 +01:00
eyck ee5536f1b5 update version numbers 2021-01-14 23:51:18 +01:00
eyck 59859e5d90 cache some more infos for stream 2021-01-14 23:36:29 +01:00
eyck 5bae086712 fix (Sonarlint) warnings 2021-01-14 23:36:07 +01:00
eyck 16de83616a adapt ui to database API 2021-01-14 23:14:22 +01:00
eyck 6530362b89 refactor tests 2021-01-14 23:14:05 +01:00
eyck 0372e03abb minor database API change 2021-01-14 23:13:11 +01:00
eyck 26e8ea8a51 change design browser icons 2021-01-14 21:57:27 +01:00
eyck efd042dd22 fix duplicate version numbers 2021-01-12 20:28:51 +01:00
eyck d06642d51f Merge branch 'release/2.11.2' into develop 2021-01-12 20:25:46 +01:00
eyck f27bcd7109 Merge branch 'release/2.11.2' 2021-01-12 20:25:45 +01:00
eyck eaea5a4653 update version numbers 2021-01-12 20:25:34 +01:00
eyck fa4bd0ddd5 move database to hashmap 2021-01-12 11:46:21 +01:00
eyck 3cbbdbee92 reduce default JVM heap size 2021-01-12 11:30:59 +01:00
eyck d674e155e1 fix wrong name extraction 2021-01-12 11:30:37 +01:00
eyck cb3366a559 fix project setup 2021-01-12 07:36:41 +01:00
eyck 8de0e11226 Merge branch 'release/2.11.1' 2021-01-12 07:36:02 +01:00
eyck b12232329b Merge branch 'release/2.11.1' into develop 2021-01-12 07:36:02 +01:00
eyck 5e63972500 update version numbers 2021-01-12 07:34:36 +01:00
eyck d53db967b3 Merge branch 'hotfix/tx_end_time_fix' into develop 2021-01-12 07:18:25 +01:00
eyck 25170d0d83 Merge branch 'hotfix/tx_end_time_fix' 2021-01-12 07:18:24 +01:00
eyck ba6446378a store complete transactions
only complete ScvTx should be put into MapDB otherwise later property
updates might get lost. Since they might not end in the order they start
an additional redirection is need to insert with ascending keys
2021-01-12 07:16:42 +01:00
eyck 12b08ca8c6 fix version numbers to adhere to eclipse versioning 2021-01-10 16:26:46 +01:00
eyck bb60f3a9c8 fix bintray repo layout 2021-01-10 15:27:40 +01:00
eyck ba347a258d refactor structure 2021-01-10 14:40:25 +01:00
eyck ac41feff6e cleanup 2021-01-10 14:34:12 +01:00
eyck ec9eb17ee3 Merge branch 'release/2.11.0' 2021-01-10 13:37:39 +01:00
eyck d2cf13d64b Merge branch 'release/2.11.0' into develop 2021-01-10 13:37:39 +01:00
eyck 7775f5978b update product version numbers in pom and reduce feature product size 2021-01-10 13:37:16 +01:00
eyck 8c031e7649 add maven launch configs 2021-01-10 13:16:28 +01:00
eyck 6b2eae7f26 fix repository build and build numbers 2021-01-10 13:09:45 +01:00
eyck 69805a423f add bintray upload of update site 2021-01-10 02:16:41 +01:00
eyck f1178157c8 remove left-over test 2021-01-09 23:27:36 +01:00
eyck 1ebc6eb03a rename interfaces 2021-01-09 23:25:31 +01:00
eyck 916215c0c2 fix sonarlint messages 2021-01-09 23:24:00 +01:00
eyck 6c8e149be2 fix unused import 2021-01-09 22:30:20 +01:00
eyck bd08b69747 Merge branch 'feature/dynamic_stream_addition' into develop 2021-01-09 22:28:42 +01:00
eyck 33e0061147 update version numbers 2021-01-09 22:27:59 +01:00
eyck 45e1031e5e fix Sonarlint warnings 2021-01-09 22:23:38 +01:00
eyck 73b21cb80b add dynamic update of waveform list 2021-01-09 20:10:58 +01:00
eyck 15fb825548 Merge branch 'feature/generater_as_stream' into develop 2021-01-09 15:43:09 +01:00
eyck 0d448368cc fix license statement and Sonarlint 2021-01-09 14:26:49 +01:00
eyck abacae42d7 fix selection handling in viewer and Sonarlint warnings 2021-01-09 13:43:11 +01:00
eyck 9d2e2e7f64 show children of streams 2021-01-09 12:56:14 +01:00
eyck eb64cc60c5 fix copyright header, javadoc, and warnings 2021-01-09 12:44:15 +01:00
eyck 5ea0d6446a Merge branch 'feature/factor_out_groovy' into develop 2021-01-09 10:36:25 +01:00
eyck d970d07048 make ITxGenerator as stream 2021-01-09 10:34:22 +01:00
eyck 90f45c698f fix Sonarlint warnings 2021-01-08 20:50:24 +01:00
eyck af388b2462 add TX attribute value caching 2021-01-08 20:31:24 +01:00
eyck 8700e2fdde Improve loading performance 2021-01-08 15:05:24 +01:00
eyck 23ad84ef30 pure memory based implementation of text db reader 2021-01-07 17:38:29 +01:00
eyck 0d074ea6ae fix track and relation handling 2021-01-04 17:39:11 +01:00
eyck 351a246238 separate RelationTypeFactory from RelationType 2021-01-04 17:36:09 +01:00
eyck 841b5fe2b2 cleanup build 2021-01-03 17:44:52 +01:00
eyck 85ce07f11f refactor internal transaction representation 2021-01-03 14:16:56 +01:00
eyck b44f3418f4 fix max concurrency handling 2021-01-02 18:04:48 +01:00
eyck bfbc40c282 fix serialization issue 2021-01-02 17:02:05 +01:00
eyck 2c66bf3edd Merge branch 'feature/database_refactor' into develop 2021-01-02 16:31:33 +01:00
eyck a51f922ea4 refactor groovy classes to Java, 1st step 2021-01-02 16:15:27 +01:00
eyck 4d8e7a3cd1 fix CLI invocation (at least on MacOS) 2020-11-29 14:06:33 +01:00
eyck 70ccf35fe4 fix sonar lint reported issues in UI plugins 2020-11-29 12:44:28 +01:00
eyck 6c5032da10 fix sonarlint issues, add IDerivedWaveform interface 2020-11-29 12:42:26 +01:00
eyck b2e269b67c update version numbers 2020-11-29 09:52:20 +01:00
eyck cd01c6a808 fix layout quirks 2020-11-28 20:53:26 +01:00
eyck 179d40ac8d add track height preferences 2020-11-28 20:44:33 +01:00
eyck 754a61e989 move color settings into style provider 2020-11-28 20:32:11 +01:00
eyck bedf4c5c4d move settings into style provider 2020-11-28 19:41:00 +01:00
eyck 7c27bcec47 moved TX interfaces into own package 2020-11-28 14:47:43 +01:00
eyck 90f09cc222 adapt UI 2020-11-28 14:08:34 +01:00
eyck 21d83f93dc refactor database class hierarchy 2020-11-28 10:22:22 +01:00
eyck db838efc65 Merge branch 'release/2.10.0' into develop 2020-11-27 09:34:21 +01:00
eyck 929af41dd3 Merge branch 'release/2.10.0' 2020-11-27 09:34:20 +01:00
eyck 979a7672e6 update version numbers 2020-11-27 09:34:12 +01:00
eyck 67818ff4dd Squashed commit of the following:
commit dccd2c524c1c00ab3998546276b7244e6d0f389c
Author: eyck <eyck@minres.com>
Date:   Fri Nov 27 08:52:58 2020 +0100

	re-layout sashes

commit d932367a67e081307c49fd248c54c057357a96d2
Author: eyck <eyck@minres.com>
Date:   Fri Nov 27 08:47:50 2020 +0100

	fix string filter and layout

commit 7f4bf0a64d4d685390e9a7af61f377a512d5332d
Author: eyck <eyck@minres.com>
Date:   Fri Nov 27 08:46:30 2020 +0100

	set single clock selection

commit 972e3ce9267c9cd2b9437e5f7403b3ff69d2928f
Author: eyck <eyck@minres.com>
Date:   Fri Nov 27 08:45:49 2020 +0100

	apply filter only to attributes

commit 13a25692bd7909bad98169648edabd01872a7ecb
Author: eyck <eyck@minres.com>
Date:   Fri Nov 27 08:45:22 2020 +0100

	re-layout elements
2020-11-27 08:53:34 +01:00
eyck 0c7631e912 Merge branch 'release/2.9.3' 2020-11-24 16:20:18 +01:00
eyck a06b888365 Merge branch 'release/2.9.3' into develop 2020-11-24 16:20:18 +01:00
eyck ded10e1c22 fix some bugs
* NPE when stream contains no transactions and hence no attributes
* changed sash hierarchy in waveform pane
2020-11-24 16:20:08 +01:00
eyck 2f3bc0d892 Merge branch 'release/2.9.2' into develop 2020-11-11 18:00:59 +01:00
eyck 184f1b2d2c Merge branch 'release/2.9.2' 2020-11-11 18:00:58 +01:00
eyck 90249dadb9 replace TreeViewer with TableViewer in TransactionList 2020-11-11 17:55:10 +01:00
eyck c88eb32db8 Merge branch 'release/2.9.1' into develop 2020-11-11 07:25:06 +01:00
eyck d47db29b93 Merge branch 'release/2.9.1' 2020-11-11 07:25:05 +01:00
eyck e8148af10f update version numbers 2020-11-11 07:24:54 +01:00
eyck b298a4ca6c fix TX search list implementation 2020-11-10 21:02:34 +01:00
eyck f474e38687 add type for TransactionTreeNode 2020-11-04 08:50:04 +01:00
eyck 2e806f7b86 Merge branch 'release/2.9.0' into develop 2020-11-01 18:29:44 +01:00
eyck b7a8d99e2d Merge branch 'release/2.9.0' 2020-11-01 18:29:43 +01:00
eyck 2a09fc7e6f update version numbers 2020-11-01 18:29:29 +01:00
eyck e36abb8d55 Merge branch 'feature/tx_search' into develop 2020-11-01 18:18:21 +01:00
eyck 5746b9f758 add initial version of search list 2020-11-01 17:42:16 +01:00
eyck 6be1f018b1 add search dialog and pane 2020-10-29 07:48:35 +01:00
eyck 38a046aaef Merge branch 'release/2.8.1' into develop 2020-10-28 14:19:51 +01:00
eyck fdbd6f8402 Merge branch 'release/2.8.1' 2020-10-28 14:19:50 +01:00
eyck 1dad204494 update release numbers 2020-10-28 14:19:25 +01:00
eyck 54661c51ce Merge branch 'release/2.8.1' 2020-10-28 14:16:13 +01:00
eyck b34fe0d0ba add reload menu and toolbar item 2020-10-28 13:33:07 +01:00
eyck 868eceddc5 fix CLI handling 2020-10-28 13:33:06 +01:00
eyck b642c396c7 add reload menu and toolbar item 2020-10-28 13:32:17 +01:00
eyck f3d8e34ed0 fix CLI handling 2020-10-27 18:11:03 +01:00
eyck 401c760e01 Merge branch 'release/2.8' into develop 2020-10-19 07:09:27 +02:00
eyck 5add0e385d Merge branch 'release/2.8' 2020-10-19 07:09:27 +02:00
eyck 2ba6822f2b update version numbers 2020-10-19 07:09:11 +02:00
eyck 54124d13bf fix trace add problem when only a track is selected 2020-10-19 07:09:00 +02:00
eyck 5b949a9d37 fix packaging name 2020-10-18 17:48:26 +02:00
eyck 9a9b25622c fix arrow painter if stream is moved 2020-10-17 13:54:34 +02:00
eyck dd6a8669b1 fix arrow paint error 2020-10-17 13:13:34 +02:00
eyck b483897769 Merge branch 'feature/unified_window' into develop 2020-10-17 12:46:19 +02:00
eyck bd24c4dd05 update JDT/Groovy settings 2020-10-17 12:44:55 +02:00
eyck 664e99d09e re-organize layout and fix drawing errors 2020-10-17 12:44:33 +02:00
eyck 675b2ed972 Merge branch 'develop' into feature/unified_window 2020-10-04 18:33:37 +02:00
eyck e6f19311b1 re-arrange directory structure 2020-10-04 18:30:18 +02:00
eyck 4a8034191c Merge branch 'develop' 2020-10-04 18:13:36 +02:00
eyck 9d4e5bf636 fix product setup 2020-10-04 18:12:50 +02:00
eyck cc9be70708 refactor to integrate design browser 2020-10-04 16:20:16 +02:00
eyck 2dcc72f679 Merge branch 'release/2.7.1' 2020-07-26 15:27:31 +02:00
eyck 563b6e2b01 Merge branch 'release/2.7.1' into develop 2020-07-26 15:27:31 +02:00
eyck 6161c0e0ec update version numbers 2020-07-26 15:16:55 +02:00
eyck 61c2102ab7 fix ITx selection issue 2020-07-26 15:07:55 +02:00
eyck 796a04b981 fix tree node issue 2020-07-26 14:57:09 +02:00
eyck 2a71ab94f5 add plugin based product 2020-07-26 14:41:36 +02:00
eyck 923b89c038 add eclipse IDE compatibility fix 2020-07-22 21:15:50 +02:00
eyck 3de6c9900c Merge branch 'release/2.7.0' 2020-07-15 22:08:05 +02:00
eyck ef1f2a758a fix wrongly shown signals and streams in table 2020-07-15 21:58:49 +02:00
eyck 3e6d5bd33e update version numbers 2020-07-15 21:48:41 +02:00
eyck 26968b8521 add multi-selection in waveform viewer 2020-07-15 21:43:07 +02:00
eyck 611cfc7b46 change package structure 2020-07-15 21:42:10 +02:00
eyck 8cb77a555b refactor plugin structures 2020-07-15 21:39:30 +02:00
eyck b4a7f032f5 update versions 2020-07-11 21:05:04 +02:00
eyck 62e0ec2008 Merge branch 'release/v2.6.2' 2020-07-11 19:57:17 +02:00
eyck f6cc12e8c3 fix analog painting calculation issue 2020-07-11 19:36:45 +02:00
eyck b38b268fcb refactor class names 2020-07-11 19:36:28 +02:00
eyck 55a14edc9d improve preferences handling and textual representation 2020-06-21 17:06:18 +02:00
eyck 45c23564b5 Merge branch 'release/2.6.1' 2020-06-21 16:04:29 +02:00
eyck b170fb3c2a Merge branch 'release/2.6.1' into develop 2020-06-21 16:04:29 +02:00
eyck ab975eadd1 udate version numbers 2020-06-21 16:04:22 +02:00
eyck 7ad70411f3 fix preference handling 2020-06-21 15:37:38 +02:00
eyck 24720340be update feature definition 2020-06-21 12:23:34 +02:00
eyck ad51066f1c add tycho settings 2020-06-21 09:25:24 +02:00
eyck 95e2db60b6 cleanup build and imports 2020-06-20 18:04:57 +02:00
eyck db1d377da6 fix redraw issues 2020-06-20 17:58:26 +02:00
eyck 230e8dcc7a update status bar handling 2020-06-14 21:59:42 +02:00
eyck ab2146102f fix startup 2020-06-14 15:27:27 +02:00
eyck b1148922d8 implement feature-based product definition 2020-06-11 14:34:14 +02:00
eyck e4de765da9 Merge branch 'develop' 2020-06-11 11:04:08 +02:00
eyck 47120c66b7 Merge branch 'feature/feature_base_product' into develop 2020-06-11 10:53:51 +02:00
eyck 35ccc71f10 fix TransactionDetails handling of attributes 2020-06-11 10:51:59 +02:00
eyck 688a6abd99 add set of features 2020-06-11 10:49:34 +02:00
eyck 97693cd0c4 [WIP ]reorganized dir structure 2020-06-01 22:01:00 +02:00
eyck 3e5ab7b0ac cleanup use of org.equinox.ds 2020-06-01 12:39:20 +02:00
eyck ad80671dd2 fxi start issues 2020-06-01 12:38:51 +02:00
eyck 4ab3000b69 fix left-overs 2020-06-01 12:06:33 +02:00
eyck 572e999a5b remove version constraint on groovy bundle 2020-06-01 11:10:07 +02:00
eyck e5bcb25d24 update RCP to 2019-12 2020-05-09 14:20:29 +02:00
eyck 19ea1f0b6d fix #33 2020-05-09 12:52:48 +02:00
eyck e88014ebba fix reference to org.eclipse.equinox.util 2020-05-09 12:52:48 +02:00
eyck 10a0608fd3 Revert "update to Eclipse 2020-03 RCP base"
This reverts commit 077a6f8011.
2020-05-09 12:52:47 +02:00
eyck 60abfb7afd update to Eclipse 2020-03 RCP base 2020-05-09 12:52:47 +02:00
eyck 6b9e3c0e70 add performance improvement fixes 2020-05-09 12:52:47 +02:00
eyck 19065cdbb7 remove fixed color assignment 2020-05-09 12:52:46 +02:00
eyck a7afeb1f7c change database interface 2020-05-09 12:52:44 +02:00
eyck 150c404cdb fix #33 2020-05-09 12:50:28 +02:00
eyck 5fe8b261ec fix reference to org.eclipse.equinox.util 2020-05-08 13:22:14 +02:00
eyck f8a177c9e0 Revert "update to Eclipse 2020-03 RCP base"
This reverts commit 077a6f8011.
2020-05-08 10:39:43 +02:00
eyck 077a6f8011 update to Eclipse 2020-03 RCP base 2020-05-08 09:53:36 +02:00
eyck 8b84f1341b add performance improvement fixes 2020-05-08 08:38:43 +02:00
eyck 20824e75c1 remove fixed color assignment 2020-04-02 14:17:44 +02:00
eyck fb283ab668 change database interface 2020-04-02 14:17:44 +02:00
eyck dc3df60716 Merge branch 'release/2.5' into develop 2020-03-30 11:36:07 +02:00
eyck 47b58ed770 Merge branch 'release/2.5' 2020-03-30 11:36:06 +02:00
eyck 1cebc2da0a update version numbers 2020-03-30 11:34:26 +02:00
eyck 414030cbd2 fix behavior of FileBrowserDialog 2020-03-30 11:31:51 +02:00
eyck 8011585113 add globbing selection and tool bar to file dialog 2020-03-29 17:16:14 +02:00
eyck 270a004037 fix file detection 2020-03-29 16:10:36 +02:00
eyck 2aa4160400 Initial version of custom file selection dialog 2020-03-29 16:05:48 +02:00
eyck c8e416966b Merge branch 'release/2.4.2' into develop 2020-03-27 20:05:55 +01:00
eyck 20cb208719 Merge branch 'release/2.4.2' 2020-03-27 20:05:54 +01:00
eyck e30aff82ee set version numbers 2020-03-27 20:05:46 +01:00
eyck ad2937c332 Merge branch 'master' into develop
Conflicts:
	com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java
	com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/preferences/DefaultValuesInitializer.java
	com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/internal/E4PreferenceRegistry.java
2020-03-25 23:20:15 +01:00
eyck 0e8a757d6e fix settings handling
for this a common workspace is being created. To allow for multiple
instances the work space is being unlocked as soon as the application is
initialized
2020-03-25 23:01:28 +01:00
eyck 220eaea73c move to opcoach repository at https://www.opcoach.com/repository/2018-12 2020-03-25 22:52:39 +01:00
eyck 24d6085ded update version
this release contains for #31 and #14
2020-03-24 08:09:52 +00:00
eyck 8a66734279 fix #32 2020-03-24 08:09:52 +00:00
eyck f6e2224651 fix preferences storage 2020-03-24 08:09:52 +00:00
eyck 5d85c12bb8 Merge branch 'release/2.4.1' into develop 2020-03-24 08:06:10 +00:00
eyck 2b1cb7856f update version
this release contains for #31 and #14
2020-03-24 08:05:55 +00:00
eyck f1d080983a fix #32 2020-03-24 06:43:10 +00:00
eyck 767b083a22 fix preferences storage 2020-03-21 15:17:34 +01:00
eyck 348ffe20d6 Merge branch 'release/2.4.0' into develop 2020-03-21 11:35:52 +01:00
eyck f3494e7562 Merge branch 'release/2.4.0' 2020-03-21 11:35:51 +01:00
eyck 9b6908f193 update product version and removed leveldb 2020-03-21 11:35:29 +01:00
eyck 0cfcc8c118 fix identification of SQLite file 2020-03-21 11:31:59 +01:00
eyck ec5cd209c6 Merge branch 'feature/add_hover_to_transaction' into develop 2020-03-21 11:31:16 +01:00
eyck 5933bcd512 configure the hover visibility from UI 2020-03-21 11:30:30 +01:00
eyck 14ac6654b9 refactor ToolTipHandler to allow more control over content 2020-03-21 08:42:35 +01:00
eyck cea11743eb clean up of ToolTip handler 2020-03-21 07:31:14 +01:00
eyck 210d925987 add initial implementation of TX hover 2020-03-21 06:28:28 +01:00
eyck ffbffd88f1 fix typos 2020-03-17 13:42:18 +01:00
eyck ec8d54dca3 add multi file feature 2020-03-17 12:54:38 +01:00
eyck e8682e446b Merge branch 'release/2.2.0' 2020-03-14 15:56:36 +01:00
eyck e87e1791c3 fix drag-zoom visual 2020-03-14 15:31:51 +01:00
eyck f5a4e3c39e cleanup of code 2020-03-13 22:26:53 +01:00
eyck 306e20d14f fix compiler warnings 2020-03-13 22:25:42 +01:00
eyck c76805d133 Merge branch 'release/2.2.0' into develop 2020-03-13 22:12:10 +01:00
eyck 8ebb2dc3a6 Merge branch 'release/2.2.0' 2020-03-13 22:12:09 +01:00
eyck 669fd6a881 update version numbers 2020-03-13 22:11:39 +01:00
eyck 8e66e5fe0b add a select-all key stroke to design browsers stream table 2020-03-13 22:06:55 +01:00
eyck 674aa7d3ce add initial version of drag-zoom 2020-03-13 21:06:53 +01:00
eyck 2b7c9a240f add drag area to wavefrom view 2020-03-13 19:52:55 +01:00
eyck 18f2a110f0 add shortcuts for zoom 2020-03-13 18:51:35 +01:00
eyck 27f1e8ca6a Merge branch 'hotfix/#28_add_filter' 2020-03-13 16:03:22 +01:00
eyck 3565a6a05b Merge branch 'hotfix/#28_add_filter' into develop 2020-03-13 16:03:22 +01:00
eyck aef4901b2b bug fix for #28
the filter for the treeviewer did not work properly and needed to be
re-implemented
2020-03-13 16:03:16 +01:00
eyck d77aaa3865 Merge branch 'hotfix/#29_cannot_delete_signals' into develop 2020-03-13 16:01:30 +01:00
eyck b398a07fd7 Merge branch 'hotfix/#29_cannot_delete_signals' 2020-03-13 16:01:29 +01:00
eyck 732bd82034 fix #29 cannot delete VCD signals
comparison of objects were done by idendity not .equals()
2020-03-13 16:01:16 +01:00
eyck 2ccc5274aa Merge branch 'hotfix/#27_add_filter' into develop 2020-03-12 21:59:01 +01:00
eyck 9f4f71046d Merge branch 'hotfix/#27_add_filter' 2020-03-12 21:59:01 +01:00
eyck d73b01f77d fix #27 'Add filter to hierarchy viewer' 2020-03-12 18:17:47 +01:00
eyck 77302521b2 add another fix for #27 'parser doesn't handle truncated input files' 2020-03-11 23:11:42 +01:00
eyck f89471e14b Merge branch 'release/2.1.6' 2020-03-11 07:51:54 +01:00
eyck 0634556256 Merge branch 'release/2.1.6' into develop 2020-03-11 07:51:54 +01:00
eyck 4f097e7f59 update version numbers 2020-03-11 07:51:09 +01:00
eyck f1abc645c3 Merge branch 'hotfix/#27_truncated_input' 2020-03-11 07:37:21 +01:00
eyck 2c8b7129e9 add fix for #27 'parser doesn't handle truncated input files' 2020-03-11 07:37:14 +01:00
eyck 2f81529f93 Merge branch 'hotfix/#26_incomplete_regex_throws_exception' into develop 2020-03-11 07:35:43 +01:00
eyck 8f76d816f1 Merge branch 'hotfix/#26_incomplete_regex_throws_exception' 2020-03-11 07:35:42 +01:00
eyck 594a71a9ba add try-catch to filter application 2020-03-11 07:35:31 +01:00
eyck 0fa0d4a5b8 Merge branch 'hotfix/#27_truncated_input' into develop 2020-03-11 07:27:16 +01:00
eyck 97443c6cd8 Merge branch 'release/2.1.4' 2020-03-09 18:02:19 +01:00
eyck c3486eb6c8 Updated version numbers 2020-03-09 18:00:15 +01:00
eyck 8a286a8eac Merge branch 'release/2.1.4' 2020-03-09 17:58:47 +01:00
eyck e4329213fa Fixed missing version number 2020-03-09 17:55:50 +01:00
eyck 857bbe17d7 Merge branch 'release/2.1.3' 2020-03-09 17:55:05 +01:00
eyck 091cb1cf7f Fixed missing version number 2020-03-09 17:53:35 +01:00
Brita Keller 0623b8de4a Fixed #25 - TransactionDetails vanish when setting filter for streamlist 2020-02-28 21:19:40 +01:00
Brita Keller 8b55548cca Fixed #16 - Setting and deleting filter removes properties 2020-02-17 19:43:27 +01:00
eyck a0a4ea1f53 Merge branch 'release/2.1.3'
Conflicts:
	com.minres.scviewer.e4.application/META-INF/MANIFEST.MF
2020-02-10 07:04:54 +01:00
eyck e034d1faad Updated version numbers 2020-02-10 07:03:24 +01:00
eyck 68660d0892 Merge branch 'release/2.1.2' 2020-02-10 06:50:07 +01:00
eyck a0f0b55045 Updated application bundle version number 2020-02-10 06:46:55 +01:00
eyck 3d20b6961e Updated groovy compiler level 2020-02-10 02:25:40 +01:00
Brita Keller ca02c92a18 Fixed #23 - Fix sync of properties 2020-02-03 21:30:44 +01:00
eyck 347dbf134b removed javax.xml.bind dependency 2020-01-28 23:23:15 +01:00
Brita Keller 44ac32359f Fixed #19 - Fixed sync of streamlist 2020-01-27 20:37:53 +01:00
eyck 48c7d81b8a Merge branch 'develop' of VP-Tools/SCViewer into master 2020-01-13 12:26:56 +00:00
eyck e945a3acbe Fixed NP and updated build infrastructure and target platform 2020-01-13 12:26:56 +00:00
eyck 145dfbd74d Fixed NP and updated build infrastructure and target platform 2020-01-13 12:26:56 +00:00
eyck b7646dc29e Extended data type for text database 2020-01-13 12:26:56 +00:00
Brita Keller 475181c8df Fixed #21 - IllegalStateException when closing SCViewer 2020-01-13 12:26:56 +00:00
Brita Keller 3d043ce1b7 Fixed #20 - NPE gets caught when opening a damaged file and info popup
is shown
2020-01-13 12:26:56 +00:00
Brita Keller 7e2869b7ee Fixed # 18 - Fixed tree view and stream list after last tab is closed 2020-01-13 12:26:56 +00:00
eyck 51d9d7e25c Fixed NP and updated build infrastructure and target platform 2020-01-13 13:17:27 +01:00
eyck ed665ac032 Fixed NP and updated build infrastructure and target platform 2020-01-13 13:14:34 +01:00
eyck 689d7874f4 Extended data type for text database 2020-01-07 12:43:39 +01:00
Brita Keller c7c1f97b0c Fixed #21 - IllegalStateException when closing SCViewer 2019-12-18 17:16:20 +01:00
Brita Keller 7b2db09585 Fixed #20 - NPE gets caught when opening a damaged file and info popup
is shown
2019-12-03 22:19:56 +01:00
Brita Keller 52f3f7b348 Fixed # 18 - Fixed tree view and stream list after last tab is closed 2019-11-25 17:46:28 +01:00
eyck 429ea37080 Merge branch 'release/2.1.2' 2019-09-11 13:08:52 +02:00
eyck 04f011e82f Fixed array out of bounds error 2019-09-11 13:05:26 +02:00
Brita Keller 3a6ed3ce7e Fixed 'Save Settings' #4 2019-09-04 20:50:34 +02:00
eyck 79eb8073d8 Merge branch 'release/2.1.1' 2019-07-08 18:44:47 +02:00
eyck 4ea841cc7b Fixed Part Stack issue and updated About Dialog 2019-07-08 18:38:53 +02:00
eyck 6bf642d2af Merge branch 'release/2.1.0' 2019-06-30 11:54:10 +02:00
Brita Keller 15c24f0925 Fixed #15 - no more ArrayOutOfBounds exception when deleting last stream 2019-06-25 22:21:10 +02:00
Brita Keller 4d4a6579c6 Fixed #13 - added transaction colors 2019-06-09 21:49:45 +02:00
eyck b648dccfd8 Fixed NPE in case of detached waveform 2019-04-11 06:24:47 +00:00
eyck f9425834a3 Merge branch 'develop' of https://eyck@git.minres.com/VP/SCViewer.git into develop 2019-04-11 06:09:46 +00:00
eyck e0d00e6402 Settings update 2019-04-11 06:09:35 +00:00
eyck b1b7517759 Merge branch 'release/2.0.5' into develop 2019-03-19 19:15:28 +01:00
eyck a5b9c28007 Merge branch 'release/2.0.5' 2019-03-19 19:15:27 +01:00
eyck b5e408595b Updated version numbers 2019-03-19 19:14:39 +01:00
eyck f15930682e Merge branch 'develop' of https://git.minres.com/VP/SCViewer.git into develop 2019-03-19 18:46:56 +01:00
Brita Keller f8765518bc Fixed #10 -all status bar parts now visible after starting program 2019-03-18 17:17:18 +01:00
Brita Keller 73e952faea Fixed #11 - No more display problems in waveforms when zooming in and
scrolling
2019-03-18 17:17:17 +01:00
eyck 111383bcba Merge branch 'release/2.0.4' into develop 2019-03-15 08:53:16 +01:00
eyck 244f005ae6 Merge branch 'release/2.0.4' 2019-03-15 08:53:15 +01:00
eyck 701733e69d Updated version numbers and display in about dialog 2019-03-15 08:50:12 +01:00
eyck 6b4a9c1e14 Fixed handling of TransactionDetails view state 2019-03-15 07:31:13 +00:00
eyck 3abbc3e0e2 Merge branch 'master' into develop 2019-03-14 21:29:23 +01:00
eyck 2a7b713ef2 Merge branch 'release/2.0.3' 2019-03-14 21:26:55 +01:00
eyck 593571ce10 Merge branch 'hotfix/selction_bug' into develop 2019-03-14 21:23:59 +01:00
eyck 979261432a Merge branch 'hotfix/selction_bug' 2019-03-14 21:23:58 +01:00
eyck e25f56a8a9 Fixed NPE 2019-03-14 21:23:39 +01:00
eyck e8788e6ce0 Merge branch 'master' into develop 2019-03-14 21:14:26 +01:00
eyck 8a8691a889 Merge branch 'release/2.0.2' 2019-03-14 21:11:51 +01:00
eyck de15b84bef Merge branch 'feature/keep_properties_scroll' into develop 2019-03-14 20:51:31 +01:00
eyck b78d8bea45 Fixed format detection bug and adapted VCD loader to Arteris specifics 2019-03-14 20:51:02 +01:00
eyck a49842a119 Added logic to keep the same element revealed in transaction details
view
2019-03-14 19:28:38 +01:00
eyck dbe5d603ed Fixed EOFException so that partial gzip files get loaded 2019-03-14 19:27:58 +01:00
eyck cde1835c74 Merge branch 'develop' of https://eyck@git.minres.com/VP/SCViewer.git into develop 2018-11-06 12:36:40 +01:00
eyck b332eca891 Fixed about dialog handling 2018-11-06 12:36:25 +01:00
eyck 75efd69b77 Merge branch 'master' of https://github.com/Minres/SCViewer 2018-11-06 12:33:34 +01:00
eyck 960610bab2 Fixed about dialog handling 2018-11-06 12:28:45 +01:00
eyck 98029f8c7a Merge branch 'master' of https://eyck@git.minres.com/VP/SCViewer.git 2018-11-06 12:08:42 +01:00
eyck 9c09cf5f40 Merge branch 'release/2.0.0' into develop 2018-11-06 12:07:37 +01:00
eyck 113d65cfc4 Merge branch 'release/2.0.0' 2018-11-06 12:07:35 +01:00
eyck 22e7bb04f0 Updated documentation 2018-11-06 12:07:23 +01:00
eyck d8c5b7d9c3 Merge branch 'develop' of https://git.minres.com/VP/SCViewer into
develop

# Conflicts:
#	com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java
2018-11-06 08:35:00 +01:00
eyck 2e7ae5309f Merge branch 'feature/MapDB-backing' into develop 2018-11-06 08:32:12 +01:00
eyck f81e830e93 Updated UI to reflect database changes esp. in VCD 2018-11-06 08:26:39 +01:00
eyck 47a285bf6d Added MapDB backing store for Text based Transactions, cleanup of
imports etc.
2018-11-06 08:24:26 +01:00
eyck c080773878 Removed jdbm files and added MapDB 3.0.7 jar files 2018-11-05 18:33:51 +01:00
eyck bcf4e1a274 Adapted application to data model changes 2018-11-05 18:23:17 +01:00
eyck 93fd192782 Refactored database data model to improve speed and reduce memory
consumption
2018-11-05 18:22:28 +01:00
eyck e687eef42c Fixed Tx properties 2018-11-05 18:16:59 +01:00
eyck 2a709113fe Uodated tests to run on LevelDB backed transaction db 2018-11-03 17:49:40 +01:00
eyck 8d7acdb9cb Added LevelDB transaction db reader 2018-11-03 17:48:36 +01:00
eyck 77684d828c Merge branch 'master' of https://git.minres.com/VP/SCViewer 2018-10-15 22:31:22 +02:00
eyck 9f902057ba Merge branch 'release/2.0.1' 2018-10-15 22:30:02 +02:00
eyck 42660c7a2e Fixed some warnings 2018-10-15 22:01:44 +02:00
eyck 97a806f9d9 Changed selection handling and fixed keycode handling 2018-10-15 21:55:35 +02:00
eyck 60185fbaee Version inconsitency fixes 2018-10-15 10:09:51 +02:00
eyck 5411a405d4 Merge branch 'master' of https://github.com/Minres/SCViewer 2018-10-15 09:32:43 +02:00
eyck 694dad1cf5 Merge branch 'develop' 2018-10-15 09:17:44 +02:00
eyck 5fb9a7dcdf Merge branch 'master' of https://git.minres.com/VP/SCViewer 2018-10-15 09:15:04 +02:00
eyck 3faa7205ae Merge branch 'release/2.0' into develop 2018-10-15 09:13:55 +02:00
eyck 3cbe5d56d9 Merge branch 'release/2.0' 2018-10-15 09:13:54 +02:00
eyck 5745ab4f2c Fixed cli options and NaN handling in VCD loader 2018-10-15 09:13:41 +02:00
eyck 4a17108ccc Moved commonly used constants to own class 2018-10-15 09:10:10 +02:00
eyck 408138c27c Merge branch 'develop' of https://git.minres.com/VP/SCViewer into develop 2018-10-15 07:50:31 +02:00
eyck 3211db8743 Merge branch 'release/2.0' 2018-10-14 21:29:23 +02:00
eyck 0c81988d8c Merge branch 'release/2.0' into develop 2018-10-14 21:29:23 +02:00
eyck 0107c423a3 Fixed warnings in Java files and MANIFESTS.MF, updated version numbers 2018-10-14 21:29:09 +02:00
eyck 5d41816eb6 Merge branch 'feature/add-keyboard-navigation' into develop 2018-10-14 20:44:41 +02:00
eyck e41b7e25ed Updated reading/writing of scview files, added command line argument to
load config file
2018-10-14 20:44:17 +02:00
eyck dba8b2731d Added keyboard navigation to scroll, move selection, move selected and
zoom
2018-10-14 17:30:37 +02:00
eyck 048fa93b53 Merge branch 'feature/Extend-waveform-configurability' into develop 2018-10-14 08:59:37 +02:00
eyck 6cc5597c25 Added handler and configurability of wavefrom view 2018-10-14 08:59:17 +02:00
eyck 694423be3b [WIP] extended application to configure waveform display 2018-10-11 15:23:07 +02:00
eyck 0634b9cfd5 Merge branch 'develop' of https://git.minres.com/VP/SCViewer.git into
develop

Conflicts:
	com.minres.scviewer.database.test/inputs/simple_system.vcd
	com.minres.scviewer.database.test/src/com/minres/scviewer/database/test/DatabaseServicesTest.java
	com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs
	com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java
	com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java
	com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformViewer.java
	com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/WaveformColors.java
	com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDDbLoader.java
	com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDFileParser.java
	com.minres.scviewer.e4.application/plugin.xml
	com.minres.scviewer.e4.product/scviewer.product
	com.minres.scviewer.target/neon.target
	com.minres.scviewer.target/photon.target
	com.minres.scviewer.ui/.settings/org.eclipse.jdt.groovy.core.prefs
2018-10-11 15:22:10 +02:00
eyck c4b16338a8 Merge branch 'feature/real_signal_support' into develop 2018-10-11 14:53:07 +02:00
eyck bda2a84532 Fixed #6 Implement right-click menue for signal names 2018-10-11 14:48:36 +02:00
eyck 9d4c951e7f Added support for real valued signals in waveform UI 2018-10-11 14:44:41 +02:00
eyck 8a89b21d34 Added database support to read real valued signals 2018-10-11 11:23:28 +02:00
eyck e02df858fa Merge branch 'develop' of https://git.minres.com/VP/SCViewer into develop 2018-09-26 21:25:23 +02:00
eyck 0fbe22e2e0 Fixed NPE when concurrencyLevel is 0 2018-09-26 21:25:02 +02:00
Brita Keller 021c2bceff Fixed ZoomFit and encoding issue 2018-09-17 17:06:57 +02:00
Brita Keller 9862c14040 Additional files missing in the last commit 2018-09-17 16:38:27 +02:00
Brita Keller 23131e7527 Fixed ZoomFit 2018-09-17 16:38:26 +02:00
eyck 0833bca1bd Fixed VCD parsing error 2018-09-17 16:38:25 +02:00
eyck 1cf00ec882 Updated to Photon platform 2018-09-17 16:38:24 +02:00
eyck 6c0bbd5f1f Added hierarchical VCD File 2018-09-17 16:32:07 +02:00
Eyck Jentzsch f13b091664 Update README.md 2018-09-17 16:26:49 +02:00
eyck dff41eceb2 Updated version numbers 2018-09-17 16:26:49 +02:00
eyck d267e64907 Fixed parsing bug 2018-09-17 16:26:49 +02:00
eyck 792dcd55f3 Fixed rendering of integral transaction attributes and updated version
numbers
2018-09-17 16:26:48 +02:00
eyck 2b33ea0c85 Fixed drawing issue for very long transactions 2018-08-27 23:46:06 +02:00
eyck f69a6f2e89 Removed jdbm 2018-08-27 23:16:54 +02:00
eyck 0f133a3df6 Added UI support for real value signals 2018-08-27 23:13:19 +02:00
eyck 549c522bf7 Added support for real value signals 2018-08-27 16:19:59 +02:00
eyck 2f11d8ed7b Fixed VCD parsing error 2018-07-16 13:17:58 +02:00
eyck 7dd0a24df6 Updated to Photon platform 2018-07-16 13:17:43 +02:00
eyck a052fe2324 Added hierarchical VCD File 2018-07-14 11:42:55 +02:00
eyck 4fc24453ae Merge branch 'develop'
* develop:
  Update README.md
2018-04-05 23:10:31 +02:00
Eyck Jentzsch b468fba441 Update README.md 2018-04-05 23:04:12 +02:00
Eyck Jentzsch f80021059e Update README.md 2017-11-01 19:02:01 +01:00
Eyck Jentzsch 7c0822b4d2 Merge pull request #4 from Minres/develop
Develop
2017-10-14 19:06:53 +00:00
eyck cdde384ed3 Updated version numbers 2017-10-14 20:59:30 +02:00
eyck fce1bdb1e7 Fixed parsing bug 2017-10-14 20:46:22 +02:00
Eyck Jentzsch b68a7d3259 Merge pull request #3 from Minres/develop
Changes for 1.2.1 version
2017-10-13 08:03:11 +00:00
eyck 44b13c105d Fixed rendering of integral transaction attributes and updated version
numbers
2017-10-13 09:36:44 +02:00
eyck ed0558afdf Fixed compiler warnings and moved execution environment to Java 1.8 2017-01-23 23:25:28 +01:00
eyck d0be3b0ca2 Externalized strings 2017-01-23 23:07:29 +01:00
eyck a052c6aa3b Enabled test 2017-01-23 22:26:05 +01:00
eyck 8a30ba8dea Fixed target platform setting for tests 2017-01-23 22:18:59 +01:00
Eyck Jentzsch 0a7972c54d Merge pull request #2 from Minres/develop
Merge in latest changes
2017-01-23 20:44:18 +00:00
eyck b1890eb5e1 Updated License information and fixed pom warning 2017-01-23 21:41:48 +01:00
eyck 1aaf5c837e Added support for gzipped txlog files and org.apache.jdbm as backing
store
2017-01-23 21:23:43 +01:00
eyck c8a213e985 Fixed windows icons, adjusted version numbers 2017-01-22 15:14:03 +01:00
eyck 5f82700290 Updated to Neon platform 2017-01-22 14:05:42 +01:00
eyck 40a0137dfd Fixed compile warnings and performance bottlenecks in drawing 2017-01-22 10:28:49 +01:00
Eyck Jentzsch 4ec9a928b9 Merge pull request #1 from Minres/master
Create LICENSE
2016-12-15 13:16:50 +01:00
Eyck Jentzsch c82c41bbf0 Create LICENSE 2016-10-20 07:08:35 +02:00
eyck 79c49e6f1d Removed SCV code 2016-10-08 21:53:07 +02:00
eyck 96d628d322 Updated version numbers 2015-12-02 20:35:03 +01:00
eyck b4d81d96b8 Cleanup of project structure 2015-12-02 20:29:17 +01:00
Eyck Jentzsch 08fdc18290 Merge pull request #7 from eyck/develop
Develop
2015-12-01 21:13:38 +01:00
eyck 5c784af74f 6: Add Load/Save state functionality
Task-Url: https://github.com/eyck/txviewer/issues/issue/6
2015-11-30 22:55:03 +01:00
eyck ff4cb91aed 6: Add Load/Save state functionality
Task-Url: https://github.com/eyck/txviewer/issues/issue/6
2015-11-30 22:16:29 +01:00
eyck 31ed3e4858 5: DesignBrowser should indicate loading of database
Task-Url: https://github.com/eyck/txviewer/issues/issue/5
2015-11-22 16:38:00 +01:00
eyck 0007ab9322 4: It shoudl be possible to start SCViewer several times in parallel
Task-Url: https://github.com/eyck/txviewer/issues/issue/4
2015-11-22 14:29:55 +01:00
eyck f723a770c7 - small refactoring of part class names
- tried to improve Javadoc
2015-11-22 12:47:07 +01:00
eyck af1b3d00dc Changed AboutDialog to be a ApplicationModel element 2015-11-22 12:17:17 +01:00
eyck 316647031a 2: Reload dialog opens while dialog is open
Task-Url: https://github.com/eyck/txviewer/issues/issue/2
2015-11-22 12:14:27 +01:00
eyck 929cf21ff8 3: Zoom in/out should try its best to keep cursor at the same position
Task-Url: https://github.com/eyck/txviewer/issues/issue/3
2015-11-22 12:07:50 +01:00
eyck 6ff48cac7a Merge branch 'develop' of https://github.com/eyck/txviewer into develop 2015-11-21 19:04:15 +01:00
eyck b083094cc8 Added tlm3 recording sockets 2015-11-21 19:03:50 +01:00
eyck 8180a0e5d7 Merge branch 'master' of https://github.com/eyck/txviewer 2015-11-16 13:30:40 +01:00
eyck 5a39bab52e Fixed about message 2015-11-16 13:28:44 +01:00
Eyck Jentzsch 02ba74ae16 Merge pull request #1 from eyck/develop
Fixed about message
2015-11-16 10:51:39 +01:00
eyck c02f8a6520 Fixed about message 2015-11-16 10:51:05 +01:00
eyck 5aeccb2681 Finished version 1.0
- added relation navigation
- improved about dialog
- fixed logo
2015-11-15 23:27:58 +01:00
eyck 89fb6629d0 Finished version 1.0
- added relation navigation
- improved about dialog
2015-11-15 23:17:46 +01:00
eyck c4fc4e20a6 Fixed product build 2015-11-14 11:24:34 +01:00
eyck ffc70664bd Added relation arrows 2015-11-13 23:44:44 +01:00
eyck 41de99dd4b Fixed Styling and window system resource handling 2015-11-13 19:02:44 +01:00
eyck 5680af1b45 - added preference dialog
- added preference handling
- added file monitor to automatically reload changed database
2015-11-12 23:35:13 +01:00
eyck c1d84ceb01 Changed track entry from Waveform to TrackEntry allowing multiple use of
the same waveform
2015-11-06 19:29:36 +01:00
eyck 7d3c37e989 Restructured plugins 2015-11-03 22:30:49 +01:00
eyck 83fd7877f2 - added second marker
- added zoom levels 1->3->10->30->...
- added waveform identification icon
2015-10-30 13:36:27 +01:00
eyck 070c947ae6 - improved Tx details view
- added functionality adding waveforms to list and navigating tx
2015-10-28 19:03:09 +01:00
eyck 31af3b4c94 - fixed tests
- added missing functions
- added launch configs
2015-10-24 23:15:07 +02:00
eyck c8e98b3d60 Added E4 product and Maven build 2015-10-22 22:12:18 +02:00
eyck 780d4894ad Updated license statement 2015-10-22 00:25:12 +02:00
eyck 032ffea7c8 Initial version of E4 based SC Viewer application 2015-10-22 00:05:29 +02:00
eyck a0e29e8ae2 Moved database connection to DS factory 2015-10-22 00:04:28 +02:00
eyck ef3ce7273a Fixed bugs and enhanced functionality to allow E4 application 2015-10-22 00:02:58 +02:00
ejentzsx 1f338cbf3f Cleaned up cursor DnD and positioning 2015-07-20 12:04:29 +02:00
ejentzsx 93f147555b Fixed cursor dragging 2015-07-20 11:55:14 +02:00
ejentzsx cd8c9195c1 Added cursor handling 2015-07-10 13:40:50 +02:00
ejentzsx eb726a366f Started to implement DnD 2015-03-16 11:12:18 +01:00
ejentzsx af1f21cac9 - Fixed navigation and selection issue
- added some null checking
- corrected direction of releations
2015-02-11 09:32:46 +01:00
ejentzsx 54fb59db04 Linux compatibility fixes 2015-02-04 16:21:36 +01:00
ejentzsx ac942481e3 - fixed scrolling sync issue
- fixed duplicate db entries
2015-02-04 16:20:59 +01:00
ejentzsx 310c9bbb8f - added conext menu
- added option to remove waves
- fixed painting errors
2015-01-29 11:02:03 +01:00
eyck 8c60a53ebe Merge remote-tracking branch 'origin/develop' into develop 2015-01-25 15:19:41 +01:00
eyck efced9bb87 improved write performance of SQLite db 2015-01-25 15:15:45 +01:00
eyck b5848fe885 improved write performance of SQLite db 2015-01-25 14:47:07 +01:00
eyck 5d8d81a237 Factored widget in own plugin to allow reuse in e4 environment 2015-01-25 14:23:34 +01:00
eyck e1f520911f Fixed SQLite driver loading 2015-01-24 19:11:10 +01:00
eyck e2561ca672 Fixed maven build 2015-01-23 19:33:08 +01:00
eyck 8aab5490fe Added Tycho build
Minor UI fixes
2015-01-22 13:59:30 +01:00
eyck a2df70d485 Painter base waveform canvas implemented
Fixed Copyright information
Extended SQLite database structure
2015-01-21 23:11:26 +01:00
eyck 4c7532ab84 Fixed merge issues 2015-01-21 23:10:39 +01:00
eyck 6853484417 Painter base waveform canvas implemented
Fixed Copyright information
2015-01-21 21:58:35 +01:00
eyck 5f5bfbd792 Implemented painter concept 2015-01-20 18:50:53 +01:00
eyck c9da1c3e75 Extended database to record concurrency level 2015-01-20 18:48:39 +01:00
eyck 71b44a8b4e Non working intermedite commit 2015-01-10 00:25:21 +01:00
eyck dc861722c4 Unified databases so that signals and transactions can be loaded into
same database
2015-01-10 00:23:46 +01:00
ejentzsx 9553fbff8c Refactored time representation 2015-01-09 14:17:29 +01:00
ejentzsx b34b836b5f Fixed missing close statements and cleaned up imports 2015-01-09 11:58:14 +01:00
ejentzsx b8126f36dc Fixed display issues 2015-01-09 10:49:12 +01:00
eyck cb77a5da33 Fixed inconsitencies 2015-01-09 09:16:40 +01:00
eyck 4062d24897 Renamed 2015-01-09 09:14:10 +01:00
eyck 5d3da392e2 Updated README 2015-01-06 17:25:48 +01:00
eyck de28761ce0 Added support for VCD Database 2015-01-06 17:14:16 +01:00
eyck a76c99dfb9 Some minor cleanup 2015-01-03 17:25:09 +01:00
eyck 37ee5bd5e6 - added SQLite back end
- reworked graphical representation to use widgets
2015-01-03 16:34:32 +01:00
eyck 2054426bcf Reworked UI & renamed plugins 2015-01-01 23:23:54 +01:00
Eyck Jentzsch 8dcfdf9b8d Added license headers 2012-06-17 20:34:50 +02:00
Eyck Jentzsch f707d412fa Updated readme 2012-06-17 20:14:43 +02:00
Eyck Jentzsch 664baf507f Cleanup dirs 2012-06-17 20:04:11 +02:00
Eyck Jentzsch bc412598fe Merge github.com:eyck/txviewer 2012-06-17 20:03:10 +02:00
eyck 2302801e69 Initial commit 2012-06-17 10:59:51 -07:00
Eyck Jentzsch d62e0f63a7 Initial version 2012-06-17 19:53:05 +02:00
532 changed files with 835553 additions and 371 deletions
+12 -1
View File
@@ -1 +1,12 @@
/.project /.metadata/
/.graph-browser/
/.recommenders/
/RemoteSystemsTempFiles/
/*.zip
SCViewer initiator_target.launch
SCViewer.xcf
SCViewer_1.png
copyrightLog.txt
/workspace
?*.launch
/.settings/
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
<stringAttribute key="M2_GOALS" value="package"/>
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
<booleanAttribute key="M2_OFFLINE" value="false"/>
<stringAttribute key="M2_PROFILES" value=""/>
<listAttribute key="M2_PROPERTIES"/>
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
<intAttribute key="M2_THREADS" value="1"/>
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
<stringAttribute key="M2_USER_SETTINGS" value=""/>
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
</launchConfiguration>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
<stringAttribute key="M2_GOALS" value="package"/>
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
<booleanAttribute key="M2_OFFLINE" value="false"/>
<stringAttribute key="M2_PROFILES" value="release-composite"/>
<listAttribute key="M2_PROPERTIES"/>
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
<intAttribute key="M2_THREADS" value="1"/>
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
<stringAttribute key="M2_USER_SETTINGS" value=""/>
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="true"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/AdoptOpenJDK 8 [1.8.0_232]"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
</launchConfiguration>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
<stringAttribute key="M2_GOALS" value="tycho-versions:set-version tycho-versions:update-pom"/>
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
<booleanAttribute key="M2_OFFLINE" value="false"/>
<stringAttribute key="M2_PROFILES" value=""/>
<listAttribute key="M2_PROPERTIES">
<listEntry value="newVersion=${string_prompt:new version number}"/>
</listAttribute>
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
<intAttribute key="M2_THREADS" value="1"/>
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
<stringAttribute key="M2_USER_SETTINGS" value=""/>
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
<stringAttribute key="bad_container_name" value="/com.minres.scviewer.parent/.launch"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
</launchConfiguration>
+203
View File
@@ -0,0 +1,203 @@
Eclipse Public License - v 1.0
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
"Contribution" means:
a) in the case of the initial Contributor, the initial code and documentation
distributed under this Agreement, and
b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are
distributed by that particular Contributor. A Contribution 'originates'
from a Contributor if it was added to the Program by such Contributor
itself or anyone acting on such Contributor's behalf. Contributions do not
include additions to the Program which: (i) are separate modules of
software distributed in conjunction with the Program under their own
license agreement, and (ii) are not derivative works of the Program.
"Contributor" means any person or entity that distributes the Program.
"Licensed Patents" mean patent claims licensable by a Contributor which are
necessarily infringed by the use or sale of its Contribution alone or when
combined with the Program.
"Program" means the Contributions distributed in accordance with this
Agreement.
"Recipient" means anyone who receives the Program under this Agreement,
including all Contributors.
2. GRANT OF RIGHTS
a) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free copyright license to
reproduce, prepare derivative works of, publicly display, publicly
perform, distribute and sublicense the Contribution of such Contributor,
if any, and such derivative works, in source code and object code form.
b) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free patent license under
Licensed Patents to make, use, sell, offer to sell, import and otherwise
transfer the Contribution of such Contributor, if any, in source code and
object code form. This patent license shall apply to the combination of
the Contribution and the Program if, at the time the Contribution is
added by the Contributor, such addition of the Contribution causes such
combination to be covered by the Licensed Patents. The patent license
shall not apply to any other combinations which include the Contribution.
No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses
to its Contributions set forth herein, no assurances are provided by any
Contributor that the Program does not infringe the patent or other
intellectual property rights of any other entity. Each Contributor
disclaims any liability to Recipient for claims brought by any other
entity based on infringement of intellectual property rights or
otherwise. As a condition to exercising the rights and licenses granted
hereunder, each Recipient hereby assumes sole responsibility to secure
any other intellectual property rights needed, if any. For example, if a
third party patent license is required to allow Recipient to distribute
the Program, it is Recipient's responsibility to acquire that license
before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient
copyright rights in its Contribution, if any, to grant the copyright
license set forth in this Agreement.
3. REQUIREMENTS
A Contributor may choose to distribute the Program in object code form under
its own license agreement, provided that:
a) it complies with the terms and conditions of this Agreement; and
b) its license agreement:
i) effectively disclaims on behalf of all Contributors all warranties
and conditions, express and implied, including warranties or
conditions of title and non-infringement, and implied warranties or
conditions of merchantability and fitness for a particular purpose;
ii) effectively excludes on behalf of all Contributors all liability for
damages, including direct, indirect, special, incidental and
consequential damages, such as lost profits;
iii) states that any provisions which differ from this Agreement are
offered by that Contributor alone and not by any other party; and
iv) states that source code for the Program is available from such
Contributor, and informs licensees how to obtain it in a reasonable
manner on or through a medium customarily used for software exchange.
When the Program is made available in source code form:
a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained
within the Program.
Each Contributor must identify itself as the originator of its Contribution,
if
any, in a manner that reasonably allows subsequent Recipients to identify the
originator of the Contribution.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with
respect to end users, business partners and the like. While this license is
intended to facilitate the commercial use of the Program, the Contributor who
includes the Program in a commercial product offering should do so in a manner
which does not create potential liability for other Contributors. Therefore,
if a Contributor includes the Program in a commercial product offering, such
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
every other Contributor ("Indemnified Contributor") against any losses,
damages and costs (collectively "Losses") arising from claims, lawsuits and
other legal actions brought by a third party against the Indemnified
Contributor to the extent caused by the acts or omissions of such Commercial
Contributor in connection with its distribution of the Program in a commercial
product offering. The obligations in this section do not apply to any claims
or Losses relating to any actual or alleged intellectual property
infringement. In order to qualify, an Indemnified Contributor must:
a) promptly notify the Commercial Contributor in writing of such claim, and
b) allow the Commercial Contributor to control, and cooperate with the
Commercial Contributor in, the defense and any related settlement
negotiations. The Indemnified Contributor may participate in any such claim at
its own expense.
For example, a Contributor might include the Program in a commercial product
offering, Product X. That Contributor is then a Commercial Contributor. If
that Commercial Contributor then makes performance claims, or offers
warranties related to Product X, those performance claims and warranties are
such Commercial Contributor's responsibility alone. Under this section, the
Commercial Contributor would have to defend claims against the other
Contributors related to those performance claims and warranties, and if a
court requires any other Contributor to pay any damages as a result, the
Commercial Contributor must pay those damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
Recipient is solely responsible for determining the appropriateness of using
and distributing the Program and assumes all risks associated with its
exercise of rights under this Agreement , including but not limited to the
risks and costs of program errors, compliance with applicable laws, damage to
or loss of data, programs or equipment, and unavailability or interruption of
operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of the
remainder of the terms of this Agreement, and without further action by the
parties hereto, such provision shall be reformed to the minimum extent
necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Program itself
(excluding combinations of the Program with other software or hardware)
infringes such Recipient's patent(s), then such Recipient's rights granted
under Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to
comply with any of the material terms or conditions of this Agreement and does
not cure such failure in a reasonable period of time after becoming aware of
such noncompliance. If all Recipient's rights under this Agreement terminate,
Recipient agrees to cease use and distribution of the Program as soon as
reasonably practicable. However, Recipient's obligations under this Agreement
and any licenses granted by Recipient relating to the Program shall continue
and survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in
order to avoid inconsistency the Agreement is copyrighted and may only be
modified in the following manner. The Agreement Steward reserves the right to
publish new versions (including revisions) of this Agreement from time to
time. No one other than the Agreement Steward has the right to modify this
Agreement. The Eclipse Foundation is the initial Agreement Steward. The
Eclipse Foundation may assign the responsibility to serve as the Agreement
Steward to a suitable separate entity. Each new version of the Agreement will
be given a distinguishing version number. The Program (including
Contributions) may always be distributed subject to the version of the
Agreement under which it was received. In addition, after a new version of the
Agreement is published, Contributor may elect to distribute the Program
(including its Contributions) under the new version. Except as expressly
stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
licenses to the intellectual property of any Contributor under this Agreement,
whether expressly, by implication, estoppel or otherwise. All rights in the
Program not expressly granted under this Agreement are reserved.
This Agreement is governed by the laws of the State of New York and the
intellectual property laws of the United States of America. No party to this
Agreement will bring a legal action under this Agreement more than one year
after the cause of action arose. Each party waives its rights to a jury trial in
any resulting litigation.
+20 -20
View File
@@ -1,26 +1,27 @@
# Welcome to SCViewer SCViewer
========
SCViewer is composed of a set of eclipse plugins to display VCD and transaction streams
created by the SystemC VCD trace implementation and the SystemC Verification Library (SCV).
For further description of the SCV please refer to
http://www.accellera.org/activities/committees/systemc-verification.
> If you encounter issue when running on Linux please try running as `SWT_GTK3=0 scviewer` as there exist issues wiht GTK3.
SCViewer is a simple tool to display VCD and transaction streams created by the SystemC VCD trace implementation and the SystemC Verification Library (SCV).
The viewer has the following features The viewer has the following features
* support of VCD files (compressed and uncompressed) - support of VCD files (compressed and uncompressed)
* real numbers - real numbers
* showing vectors and real numbers as analog (step-wise & continuous) - showing vectors and real numbers as analog (step-wise & continuous)
* various value representations of bit vectors - various value representations of bit vectors
* support of SCV transaction recordings in various formats - support of SCV transaction recordings in various formats
* text log files (compressed and uncompressed) - text log files (compressed and uncompressed)
* visualization of transaction relations - sqlite based
- visualization of transaction relations
SCViewer is available as standalone version and can be downloaded at [Github](https://github.com/Minres/SCViewer/releases). To build the plugins the Eclipse SDK or PDE can be used.
It can also be installed into an Eclipse application by using the update site at https://minres.github.io/SCViewer/repository. Key Shortcuts
=============
> Please note that this is work in progress
------------------------
# Help
## Key Shortcuts
Legend: Legend:
@@ -38,7 +39,6 @@ Legend:
| MMB klick | | Waveform | move selected marker to position | | MMB klick | | Waveform | move selected marker to position |
| MScrl | | any | scroll window up/down | | MScrl | | any | scroll window up/down |
| MScrl | Shift | any | scroll window left/right | | MScrl | Shift | any | scroll window left/right |
| MScrl | Control | Waveform | increase/decrease zoom level |
| Key left | | Waveform | scroll window to the left (slow) | | Key left | | Waveform | scroll window to the left (slow) |
| Key right | | Waveform | scroll window to the right (slow) | | Key right | | Waveform | scroll window to the right (slow) |
| Key left | Shift | Waveform | scroll window to the left (fast) | | Key left | Shift | Waveform | scroll window to the left (fast) |
-4
View File
@@ -1,4 +0,0 @@
theme: jekyll-theme-minimal
logo: /assets/img/SCViewer_logo.png
title: SCViewer
description: A a simple tool to display waveforms
@@ -0,0 +1 @@
/target/
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.database.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,4 @@
bin.includes = feature.xml,\
feature.properties
src.includes = feature.properties,\
feature.xml
@@ -0,0 +1,102 @@
featureName=SystemC simulation results viewer database loaders
providerName=MINRES Technologies GmbH
updateSiteName=SC Viewer Database Loader Updates
description=A viewer for SystemC Verification Library transactions and VCD signals.
licenseURL=license.html
license=\
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
March 17, 2005\n\
\n\
Usage Of Content\n\
\n\
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
\n\
Applicable Licenses\n\
\n\
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
is provided to you under the terms and conditions of the Eclipse Public\n\
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
For purposes of the EPL, "Program" will mean the Content.\n\
\n\
Content includes, but is not limited to, source code, object code,\n\
documentation and other files maintained in the Eclipse.org CVS\n\
repository ("Repository") in CVS modules ("Modules") and made available\n\
as downloadable archives ("Downloads").\n\
\n\
- Content may be structured and packaged into modules to facilitate delivering,\n\
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
plug-in fragments ("Fragments"), and features ("Features").\n\
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
in a directory named "plugins".\n\
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
\n\
Features may also include other Features ("Included Features"). Files named\n\
"feature.xml" may contain a list of the names and version numbers of\n\
Included Features.\n\
\n\
The terms and conditions governing Plug-ins and Fragments should be\n\
contained in files named "about.html" ("Abouts"). The terms and\n\
conditions governing Features and Included Features should be contained\n\
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
Licenses may be located in any directory of a Download or Module\n\
including, but not limited to the following locations:\n\
\n\
- The top-level (root) directory\n\
- Plug-in and Fragment directories\n\
- Inside Plug-ins and Fragments packaged as JARs\n\
- Sub-directories of the directory named "src" of certain Plug-ins\n\
- Feature directories\n\
\n\
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
License") during the installation process. If the Feature contains\n\
Included Features, the Feature Update License should either provide you\n\
with the terms and conditions governing the Included Features or inform\n\
you where you can locate them. Feature Update Licenses may be found in\n\
the "license" property of files named "feature.properties". Such Abouts,\n\
Feature Licenses and Feature Update Licenses contain the terms and\n\
conditions (or references to such terms and conditions) that govern your\n\
use of the associated Content in that directory.\n\
\n\
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
\n\
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
\n\
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
govern that particular Content.\n\
\n\
Cryptography\n\
\n\
Content may contain encryption software. The country in which you are\n\
currently may have restrictions on the import, possession, and use,\n\
and/or re-export to another country, of encryption software. BEFORE\n\
using any encryption software, please check the country's laws,\n\
regulations and policies concerning the import, possession, or use,\n\
and re-export of encryption software, to see if this is permitted.\n\
\n\
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.minres.scviewer.database.feature"
label="%featureName"
version="3.0.0.qualifier"
provider-name="%providerName">
<description>
The database loaders for SystemC Verification Library transactions and VCD signals. They support SQLite based recording as well as the built-in text base recording.
</description>
<copyright>
Copyright (c) 2015-2021 MINRES Technologies GmbH.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License
v1.0 which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
</copyright>
<license url="%licenseURL">
%license
</license>
<url>
<update label="%updateSiteName" url="http://www.minres.com/scviewer/update"/>
<discovery label="MINRES Website" url="http://www.minres.com"/>
</url>
<requires>
<import plugin="org.eclipse.osgi.services" version="3.4.0" match="greaterOrEqual"/>
<import plugin="com.google.guava" version="15.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.osgi"/>
<import plugin="com.minres.scviewer.database" version="1.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.runtime"/>
<import feature="org.eclipse.collections.feature" version="10.4.0.v20200820-2049"/>
</requires>
<plugin
id="com.minres.scviewer.database"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.minres.scviewer.database.text"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.minres.scviewer.database.sqlite"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.minres.scviewer.database.vcd"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.google.guava"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>
@@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.feature</artifactId>
<packaging>eclipse-feature</packaging>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<version>3.0.0-SNAPSHOT</version>
</project>
@@ -0,0 +1 @@
/target/
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.e4.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1 @@
bin.includes = feature.xml
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.minres.scviewer.e4.feature"
label="SCViewer Feature"
version="1.1.0.qualifier"
provider-name="MINRES Technologies GmbH">
<description url="http://www.example.com/description">
[Enter Feature Description here.]
</description>
<copyright url="http://www.example.com/copyright">
[Enter Copyright Description here.]
</copyright>
<license url="http://www.example.com/license">
[Enter License Description here.]
</license>
<url>
<update label="SC Viewer Updates" url="http://www.minres.com/scviewer/update"/>
</url>
<requires>
<import plugin="javax.inject" version="1.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.runtime" version="3.11.1" match="greaterOrEqual"/>
<import plugin="org.eclipse.swt" version="3.104.1" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.100" match="greaterOrEqual"/>
<import plugin="org.eclipse.jface" version="3.11.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.ui.services" version="1.2.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.ui.workbench" version="1.3.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.core.di" version="1.5.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.ui.di" version="1.1.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.core.contexts" version="1.4.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.osgi.services" version="3.5.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.core.services" version="2.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.jobs"/>
<import plugin="org.eclipse.osgi"/>
<import plugin="org.eclipse.equinox.preferences"/>
<import plugin="org.eclipse.core.expressions"/>
<import plugin="org.eclipse.e4.core.commands" version="0.11.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.e4.core.di.extensions"/>
<import plugin="org.eclipse.e4.ui.css.swt.theme" version="0.10.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.resources" version="3.13.0" match="greaterOrEqual"/>
<import feature="com.opcoach.e4.preferences.feature" version="1.3.0.202004072127"/>
<import feature="org.eclipse.equinox.executable" version="3.8.700.v20200207-2156"/>
<import feature="org.eclipse.rcptt.core" version="2.5.1.M3"/>
<import plugin="org.eclipse.core.commands"/>
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
<import feature="com.minres.scviewer.ui.feature" version="1.1.0.qualifier"/>
</requires>
<plugin
id="com.minres.scviewer.e4.application"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.opcoach.e4.preferences"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.minres.scviewer.help"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>
@@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.e4.feature</artifactId>
<packaging>eclipse-feature</packaging>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>
</project>
@@ -0,0 +1 @@
/target/
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.e4.platform.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1 @@
bin.includes = feature.xml
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.minres.scviewer.e4.platform.feature"
label="SCViewer Platform Feature"
version="1.0.0.qualifier"
provider-name="MINRES Technologies GmbH">
<description url="http://www.example.com/description">
[Enter Feature Description here.]
</description>
<copyright url="http://www.example.com/copyright">
[Enter Copyright Description here.]
</copyright>
<license url="http://www.example.com/license">
[Enter License Description here.]
</license>
<includes
id="org.eclipse.e4.rcp"
version="0.0.0"/>
<includes
id="org.eclipse.emf.ecore"
version="0.0.0"/>
<includes
id="org.eclipse.emf.common"
version="0.0.0"/>
<includes
id="org.eclipse.collections.feature"
version="0.0.0"/>
<requires>
<import plugin="org.eclipse.core.expressions" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.core.filesystem" version="1.3.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
<import plugin="org.eclipse.equinox.common" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.equinox.registry" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.osgi" version="3.2.0" match="compatible"/>
</requires>
<plugin
id="org.eclipse.core.resources"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.core.filesystem"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.core.filesystem.linux.x86_64"
os="linux"
arch="x86_64"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
<plugin
id="org.eclipse.core.filesystem.win32.x86_64"
os="win32"
arch="x86_64"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
</feature>
@@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.e4.platform.feature</artifactId>
<packaging>eclipse-feature</packaging>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<version>1.0.0-SNAPSHOT</version>
</project>
@@ -0,0 +1 @@
/target/
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,4 @@
bin.includes = feature.xml,\
feature.properties
src.includes = feature.properties,\
feature.xml
@@ -0,0 +1,102 @@
featureName=SystemC simulation results viewer
providerName=MINRES Technologies GmbH
updateSiteName=SC Viewer Updates
description=A viewer for SystemC Verification Library transactions and VCD signals.
licenseURL=license.html
license=\
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
March 17, 2005\n\
\n\
Usage Of Content\n\
\n\
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
\n\
Applicable Licenses\n\
\n\
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
is provided to you under the terms and conditions of the Eclipse Public\n\
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
For purposes of the EPL, "Program" will mean the Content.\n\
\n\
Content includes, but is not limited to, source code, object code,\n\
documentation and other files maintained in the Eclipse.org CVS\n\
repository ("Repository") in CVS modules ("Modules") and made available\n\
as downloadable archives ("Downloads").\n\
\n\
- Content may be structured and packaged into modules to facilitate delivering,\n\
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
plug-in fragments ("Fragments"), and features ("Features").\n\
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
in a directory named "plugins".\n\
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
\n\
Features may also include other Features ("Included Features"). Files named\n\
"feature.xml" may contain a list of the names and version numbers of\n\
Included Features.\n\
\n\
The terms and conditions governing Plug-ins and Fragments should be\n\
contained in files named "about.html" ("Abouts"). The terms and\n\
conditions governing Features and Included Features should be contained\n\
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
Licenses may be located in any directory of a Download or Module\n\
including, but not limited to the following locations:\n\
\n\
- The top-level (root) directory\n\
- Plug-in and Fragment directories\n\
- Inside Plug-ins and Fragments packaged as JARs\n\
- Sub-directories of the directory named "src" of certain Plug-ins\n\
- Feature directories\n\
\n\
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
License") during the installation process. If the Feature contains\n\
Included Features, the Feature Update License should either provide you\n\
with the terms and conditions governing the Included Features or inform\n\
you where you can locate them. Feature Update Licenses may be found in\n\
the "license" property of files named "feature.properties". Such Abouts,\n\
Feature Licenses and Feature Update Licenses contain the terms and\n\
conditions (or references to such terms and conditions) that govern your\n\
use of the associated Content in that directory.\n\
\n\
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
\n\
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
\n\
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
govern that particular Content.\n\
\n\
Cryptography\n\
\n\
Content may contain encryption software. The country in which you are\n\
currently may have restrictions on the import, possession, and use,\n\
and/or re-export to another country, of encryption software. BEFORE\n\
using any encryption software, please check the country's laws,\n\
regulations and policies concerning the import, possession, or use,\n\
and re-export of encryption software, to see if this is permitted.\n\
\n\
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.minres.scviewer.feature"
label="%featureName"
version="1.1.0.qualifier"
provider-name="%providerName">
<description>
A viewer for SystemC Verification Library transactions and VCD
signals. It supports a SQLite based recording as well as the
built-in text base recording.
</description>
<copyright>
Copyright (c) 2015-2021 MINRES Technologies GmbH.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License
v1.0 which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
</copyright>
<license url="%licenseURL">
%license
</license>
<url>
<discovery label="MINRES Website" url="http://www.minres.com"/>
</url>
<requires>
<import plugin="org.hamcrest.core" version="1.3.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.runtime"/>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.jface.text"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.ui.editors"/>
<import plugin="org.eclipse.ui.ide"/>
<import plugin="org.eclipse.ui.views.properties.tabbed"/>
<import plugin="org.eclipse.swt"/>
<import plugin="org.eclipse.osgi"/>
<import plugin="org.eclipse.core.expressions" version="3.4.600" match="greaterOrEqual"/>
<import plugin="org.eclipse.jface"/>
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
<import feature="com.minres.scviewer.ui.feature" version="1.1.0.qualifier"/>
</requires>
<plugin
id="org.junit"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="org.hamcrest.core"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.minres.scviewer.ui"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>
@@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.feature</artifactId>
<packaging>eclipse-feature</packaging>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>
</project>
@@ -0,0 +1 @@
/target/
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.ui.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,4 @@
bin.includes = feature.xml,\
feature.properties
src.includes = feature.properties,\
feature.xml
@@ -0,0 +1,102 @@
featureName=SCViewer UI elements
providerName=MINRES Technologies GmbH
updateSiteName=SC Viewer UI Updates
description=A viewer for SystemC Verification Library transactions and VCD signals.
licenseURL=license.html
license=\
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
March 17, 2005\n\
\n\
Usage Of Content\n\
\n\
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
\n\
Applicable Licenses\n\
\n\
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
is provided to you under the terms and conditions of the Eclipse Public\n\
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
For purposes of the EPL, "Program" will mean the Content.\n\
\n\
Content includes, but is not limited to, source code, object code,\n\
documentation and other files maintained in the Eclipse.org CVS\n\
repository ("Repository") in CVS modules ("Modules") and made available\n\
as downloadable archives ("Downloads").\n\
\n\
- Content may be structured and packaged into modules to facilitate delivering,\n\
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
plug-in fragments ("Fragments"), and features ("Features").\n\
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
in a directory named "plugins".\n\
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
\n\
Features may also include other Features ("Included Features"). Files named\n\
"feature.xml" may contain a list of the names and version numbers of\n\
Included Features.\n\
\n\
The terms and conditions governing Plug-ins and Fragments should be\n\
contained in files named "about.html" ("Abouts"). The terms and\n\
conditions governing Features and Included Features should be contained\n\
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
Licenses may be located in any directory of a Download or Module\n\
including, but not limited to the following locations:\n\
\n\
- The top-level (root) directory\n\
- Plug-in and Fragment directories\n\
- Inside Plug-ins and Fragments packaged as JARs\n\
- Sub-directories of the directory named "src" of certain Plug-ins\n\
- Feature directories\n\
\n\
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
License") during the installation process. If the Feature contains\n\
Included Features, the Feature Update License should either provide you\n\
with the terms and conditions governing the Included Features or inform\n\
you where you can locate them. Feature Update Licenses may be found in\n\
the "license" property of files named "feature.properties". Such Abouts,\n\
Feature Licenses and Feature Update Licenses contain the terms and\n\
conditions (or references to such terms and conditions) that govern your\n\
use of the associated Content in that directory.\n\
\n\
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
\n\
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
\n\
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
govern that particular Content.\n\
\n\
Cryptography\n\
\n\
Content may contain encryption software. The country in which you are\n\
currently may have restrictions on the import, possession, and use,\n\
and/or re-export to another country, of encryption software. BEFORE\n\
using any encryption software, please check the country's laws,\n\
regulations and policies concerning the import, possession, or use,\n\
and re-export of encryption software, to see if this is permitted.\n\
\n\
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.minres.scviewer.ui.feature"
label="%featureName"
version="1.1.0.qualifier"
provider-name="%providerName">
<description>
The UI for the SCViewer databases
</description>
<copyright>
Copyright (c) 2015-2021 MINRES Technologies GmbH.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License
v1.0 which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
</copyright>
<license url="%licenseURL">
%license
</license>
<url>
<discovery label="MINRES Website" url="http://www.minres.com"/>
</url>
<requires>
<import plugin="org.eclipse.swt" version="3.103.1" match="greaterOrEqual"/>
<import plugin="org.eclipse.jface"/>
<import plugin="org.eclipse.equinox.registry"/>
<import plugin="org.eclipse.core.runtime"/>
<import plugin="org.eclipse.osgi"/>
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
</requires>
<plugin
id="com.minres.scviewer.database.ui.swt"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>
@@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.ui.feature</artifactId>
<packaging>eclipse-feature</packaging>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<version>1.1.0-SNAPSHOT</version>
</project>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="sqlite-jdbc-3.8.7.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
@@ -0,0 +1,2 @@
/bin/
/target/
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.database.sqlite</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,10 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,3 @@
eclipse.preferences.version=1
pluginProject.extensions=false
resolve.requirebundle=false
@@ -0,0 +1,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: SQLite transaction database
Bundle-SymbolicName: com.minres.scviewer.database.sqlite
Bundle-Version: 1.1.0.qualifier
Bundle-Vendor: MINRES Technologies GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0"
Bundle-ClassPath: .,sqlite-jdbc-3.8.7.jar
Service-Component: OSGI-INF/component.xml
Bundle-ActivationPolicy: lazy
Embed-Dependency: sqlite-jdbc
Embedded-Artifacts: sqlite-jdbc-3.8.7.jar;g="org.xerial";
a="sqlite-jdbc";v="3.8.7"
Automatic-Module-Name: com.minres.scviewer.database.sqlite
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="SQLiteDbLoader">
<implementation class="com.minres.scviewer.database.sqlite.SQLiteDbLoader"/>
<service>
<provide interface="com.minres.scviewer.database.IWaveformDbLoader"/>
</service>
</scr:component>
@@ -0,0 +1,15 @@
###############################################################################
# Copyright (c) 2014, 2015-2021 MINRES Technologies GmbH and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# MINRES Technologies GmbH - initial API and implementation
###############################################################################
source.. = src/
bin.includes = META-INF/,\
.,\
sqlite-jdbc-3.8.7.jar,\
OSGI-INF/
@@ -0,0 +1,19 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.sqlite</artifactId>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.7</version>
</dependency>
</dependencies>
<version>1.1.0-SNAPSHOT</version>
</project>
@@ -0,0 +1,128 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.minres.scviewer.database.EventEntry;
import com.minres.scviewer.database.EventKind;
import com.minres.scviewer.database.HierNode;
import com.minres.scviewer.database.IEvent;
import com.minres.scviewer.database.IEventList;
import com.minres.scviewer.database.EventList;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.RelationTypeFactory;
import com.minres.scviewer.database.WaveformType;
import com.minres.scviewer.database.sqlite.db.IDatabase;
import com.minres.scviewer.database.tx.ITx;
abstract class AbstractTxStream extends HierNode implements IWaveform {
protected IDatabase database;
private long streamId;
private Integer maxConcurrency;
private IEventList events;
private List<RelationType> usedRelationsList;
protected AbstractTxStream(IDatabase database, String name, long streamId) {
super(name);
this.database=database;
this.streamId=streamId;
}
@Override
public int getRowCount() {
if(maxConcurrency==null){
StringBuilder sb = new StringBuilder();
sb.append("SELECT MAX(concurrencyLevel) as concurrencyLevel FROM ScvTx where stream=");
sb.append(streamId);
try(
java.sql.Connection connection = database.createConnection();
java.sql.Statement statement = connection.createStatement();
java.sql.ResultSet resultSet = statement.executeQuery(sb.toString());
) {
while (resultSet.next()) {
if(maxConcurrency==null) maxConcurrency=0;
Object value = resultSet.getObject("concurrencyLevel");
if(value!=null)
maxConcurrency=(Integer) value;
}
} catch (SQLException e) {
if(maxConcurrency==null) maxConcurrency=0;
}
maxConcurrency+=1;
}
return maxConcurrency;
}
@Override
public IEventList getEvents(){
if(events==null){
events=new EventList();
for(Entry<Integer, ITx> entry:getTransactions().entrySet()){
putEvent(new TxEvent(EventKind.BEGIN, entry.getValue()));
putEvent(new TxEvent(EventKind.END, entry.getValue()));
}
}
return events;
}
private void putEvent(TxEvent ev){
events.put(ev.getTime(), ev);
}
protected abstract Map<Integer, ITx> getTransactions();
@Override
public IEvent[] getEventsAtTime(long time) {
return getEvents().get(time);
}
public void setRelationTypeList(List<RelationType> usedRelationsList){
this.usedRelationsList=usedRelationsList;
}
public RelationType getRelationType(String name) {
RelationType relType=RelationTypeFactory.create(name);
if(!usedRelationsList.contains(relType)) usedRelationsList.add(relType);
return relType;
}
@Override
public IEvent[] getEventsBeforeTime(long time) {
EventEntry e = events.floorEntry(time);
if(e==null)
return new IEvent[]{};
else
return events.floorEntry(time).events;
}
@Override
public WaveformType getType() {
return WaveformType.TRANSACTION;
}
/**
* Calculate concurrency.
*/
public void calculateConcurrency() {
}
}
@@ -0,0 +1,147 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import java.beans.IntrospectionException;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.database.IWaveformDbLoader;
import com.minres.scviewer.database.InputFormatException;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.sqlite.db.IDatabase;
import com.minres.scviewer.database.sqlite.db.SQLiteDatabase;
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
import com.minres.scviewer.database.sqlite.tables.ScvSimProps;
import com.minres.scviewer.database.sqlite.tables.ScvStream;
import com.minres.scviewer.database.sqlite.tables.ScvTxEvent;
public class SQLiteDbLoader implements IWaveformDbLoader {
protected IDatabase database;
private List<RelationType> usedRelationsList = new ArrayList<>();
private ScvSimProps scvSimProps;
private static final byte[] x = "SQLite format 3".getBytes();
/** The pcs. */
protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);
@Override
public long getMaxTime() {
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<>(ScvTxEvent.class,
database, "time = (SELECT MAX(time) FROM ScvTxEvent)");
try {
List<ScvTxEvent> event = handler.selectObjects();
if(!event.isEmpty())
return event.get(0).getTime()*scvSimProps.getTime_resolution();
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
e.printStackTrace();
}
return 0L;
}
@Override
public Collection<IWaveform> getAllWaves() {
SQLiteDatabaseSelectHandler<ScvStream> handler = new SQLiteDatabaseSelectHandler<>(ScvStream.class, database);
List<IWaveform> streams=new ArrayList<>();
try {
for(ScvStream scvStream:handler.selectObjects()){
TxStream stream = new TxStream(database, scvStream);
stream.setRelationTypeList(usedRelationsList);
streams.add(stream);
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
return streams;
}
@Override
public boolean canLoad(File inputFile) {
if (!inputFile.isDirectory() && inputFile.exists()) {
try(InputStream stream = new FileInputStream(inputFile)){
byte[] buffer = new byte[x.length];
int readCnt = stream.read(buffer, 0, x.length);
if (readCnt == x.length) {
for (int i = 0; i < x.length; i++)
if (buffer[i] != x[i])
return false;
}
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
@Override
public void load(IWaveformDb db, File file) throws InputFormatException {
database=new SQLiteDatabase(file.getAbsolutePath(), db);
database.setData("TIMERESOLUTION", 1L);
SQLiteDatabaseSelectHandler<ScvSimProps> handler = new SQLiteDatabaseSelectHandler<>(ScvSimProps.class, database);
try {
for(ScvSimProps simProps:handler.selectObjects()){
scvSimProps=simProps;
database.setData("TIMERESOLUTION", scvSimProps.getTime_resolution());
}
pcs.firePropertyChange(IWaveformDbLoader.LOADING_FINISHED, null, null);
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
throw new InputFormatException(e.toString());
}
}
public void dispose() {
database=null;
usedRelationsList=null;
}
@Override
public Collection<RelationType> getAllRelationTypes(){
return usedRelationsList;
}
/**
* Adds the property change listener.
*
* @param l the l
*/
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}
/**
* Removes the property change listener.
*
* @param l the l
*/
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}
}
@@ -0,0 +1,192 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.minres.scviewer.database.AssociationType;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.sqlite.db.IDatabase;
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
import com.minres.scviewer.database.sqlite.tables.ScvStream;
import com.minres.scviewer.database.sqlite.tables.ScvTx;
import com.minres.scviewer.database.sqlite.tables.ScvTxAttribute;
import com.minres.scviewer.database.sqlite.tables.ScvTxEvent;
import com.minres.scviewer.database.sqlite.tables.ScvTxRelation;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxAttribute;
import com.minres.scviewer.database.tx.ITxRelation;
public class Tx implements ITx {
private IDatabase database;
private TxStream trStream;
private TxGenerator trGenerator;
private ScvTx scvTx;
private List<ITxAttribute> attributes;
private long begin=-1;
private long end=-1;
private List<ITxRelation> incoming;
private List<ITxRelation> outgoing;
public Tx(IDatabase database, TxStream trStream, TxGenerator trGenerator, ScvTx scvTx) {
this.database=database;
this.trStream=trStream;
this.trGenerator=trGenerator;
this.scvTx=scvTx;
}
@Override
public long getId() {
return (long) scvTx.getId();
}
@Override
public IWaveform getStream() {
return trStream;
}
@Override
public IWaveform getGenerator() {
return trGenerator;
}
int getConcurrencyIndex() {
return scvTx.getConcurrencyLevel();
}
@Override
public long getBeginTime() {
if(begin<0){
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<>(ScvTxEvent.class,
database, "tx="+scvTx.getId()+" AND type="+ AssociationType.BEGIN.ordinal());
try {
for(ScvTxEvent scvEvent:handler.selectObjects()){
begin= scvEvent.getTime()*(Long)database.getData("TIMERESOLUTION");
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
}
return begin;
}
@Override
public long getEndTime() {
if(end<0){
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<>(ScvTxEvent.class,
database, "tx="+scvTx.getId()+" AND type="+ AssociationType.END.ordinal());
try {
for(ScvTxEvent scvEvent:handler.selectObjects()){
end = scvEvent.getTime()*(Long)database.getData("TIMERESOLUTION");
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
}
return end;
}
@Override
public List<ITxAttribute> getAttributes() {
if(attributes==null){
SQLiteDatabaseSelectHandler<ScvTxAttribute> handler = new SQLiteDatabaseSelectHandler<>(
ScvTxAttribute.class, database, "tx="+scvTx.getId());
try {
attributes = new ArrayList<>();
for(ScvTxAttribute scvAttribute:handler.selectObjects()){
attributes.add(new TxAttribute(this, scvAttribute));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
}
return attributes;
}
@Override
public Collection<ITxRelation> getIncomingRelations() {
if(incoming==null){
SQLiteDatabaseSelectHandler<ScvTxRelation> handler = new SQLiteDatabaseSelectHandler<>(
ScvTxRelation.class, database, "sink="+scvTx.getId());
try {
incoming = new ArrayList<>();
for(ScvTxRelation scvRelation:handler.selectObjects()){
incoming.add(createRelation(scvRelation, false));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
}
return incoming;
}
@Override
public Collection<ITxRelation> getOutgoingRelations() {
if(outgoing==null){
SQLiteDatabaseSelectHandler<ScvTxRelation> handler = new SQLiteDatabaseSelectHandler<>(
ScvTxRelation.class, database, "src="+scvTx.getId());
try {
outgoing = new ArrayList<>();
for(ScvTxRelation scvRelation:handler.selectObjects()){
outgoing.add(createRelation(scvRelation, true));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
}
}
return outgoing;
}
private ITxRelation createRelation(ScvTxRelation rel, boolean outgoing) {
int otherId = outgoing?rel.getSink():rel.getSrc();
SQLiteDatabaseSelectHandler<ScvTx> handler = new SQLiteDatabaseSelectHandler<>(ScvTx.class, database,
"id="+otherId);
try {
List<ScvTx> res = handler.selectObjects();
if(res.size()!=1) return null;
List<ScvStream> streams = new SQLiteDatabaseSelectHandler<ScvStream>(ScvStream.class, database,
"id="+res.get(0).getStream()).selectObjects();
if(streams.size()!=1) return null;
TxStream tgtStream = (TxStream) database.getWaveformDb().getStreamByName(streams.get(0).getName());
Tx that = (Tx) tgtStream.getTransactions().get(otherId);
if(outgoing)
return new TxRelation(trStream.getRelationType(rel.getName()), this, that);
else
return new TxRelation(trStream.getRelationType(rel.getName()), that, this);
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
e.printStackTrace();
}
return null;
}
@Override
public int compareTo(ITx o) {
int res = Long.compare(this.getBeginTime(), o.getBeginTime());
if(res!=0)
return res;
else
return Long.compare(this.getId(), o.getId());
}
@Override
public String toString() {
return "tx#"+getId()+"["+getBeginTime()/1000000+"ns - "+getEndTime()/1000000+"ns]";
}
}
@@ -0,0 +1,48 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import com.minres.scviewer.database.AssociationType;
import com.minres.scviewer.database.DataType;
import com.minres.scviewer.database.sqlite.tables.ScvTxAttribute;
import com.minres.scviewer.database.tx.ITxAttribute;
public class TxAttribute implements ITxAttribute{
Tx trTransaction;
ScvTxAttribute scvAttribute;
public TxAttribute(Tx trTransaction, ScvTxAttribute scvAttribute) {
this.trTransaction=trTransaction;
this.scvAttribute=scvAttribute;
}
@Override
public String getName() {
return scvAttribute.getName();
}
@Override
public DataType getDataType() {
return DataType.values()[scvAttribute.getData_type()];
}
@Override
public AssociationType getType() {
return AssociationType.values()[scvAttribute.getType()];
}
@Override
public Object getValue() {
return scvAttribute.getData_value();
}
}
@@ -0,0 +1,65 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import com.minres.scviewer.database.EventKind;
import com.minres.scviewer.database.IEvent;
import com.minres.scviewer.database.WaveformType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxEvent;
public class TxEvent implements ITxEvent {
private final EventKind type;
private ITx tx;
public TxEvent(EventKind type, ITx tx) {
super();
this.type = type;
this.tx = tx;
}
@Override
public long getTime() {
return type==EventKind.BEGIN?tx.getBeginTime():tx.getEndTime();
}
@Override
public IEvent duplicate() throws CloneNotSupportedException {
return new TxEvent(type, tx);
}
@Override
public ITx getTransaction() {
return tx;
}
@Override
public EventKind getKind() {
return type;
}
@Override
public String toString() {
return type.toString()+"@"+getTime()+" of tx #"+tx.getId();
}
@Override
public WaveformType getType() {
return WaveformType.TRANSACTION;
}
@Override
public int getRowIndex() {
return ((Tx)tx).getConcurrencyIndex();
}
}
@@ -0,0 +1,79 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;
import java.util.TreeMap;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.sqlite.db.IDatabase;
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
import com.minres.scviewer.database.sqlite.tables.ScvGenerator;
import com.minres.scviewer.database.sqlite.tables.ScvTx;
import com.minres.scviewer.database.tx.ITx;
public class TxGenerator extends AbstractTxStream {
private TxStream stream;
private ScvGenerator scvGenerator;
private TreeMap<Integer, ITx> transactions;
public TxGenerator(IDatabase database, TxStream stream, ScvGenerator scvGenerator) {
super(database, scvGenerator.getName(), stream.getId());
this.stream=stream;
this.scvGenerator=scvGenerator;
stream.addChild(this);
}
@Override
public long getId() {
return (long) scvGenerator.getId();
}
@Override
public String getName() {
return scvGenerator.getName();
}
@Override
public boolean isSame(IWaveform other) {
return(other instanceof TxGenerator && this.getId() == other.getId());
}
@Override
public String getKind() {
return stream.getKind();
}
@Override
protected Map<Integer, ITx> getTransactions() {
if(transactions==null){
transactions = new TreeMap<>();
SQLiteDatabaseSelectHandler<ScvTx> handler = new SQLiteDatabaseSelectHandler<>(ScvTx.class, database,
"stream="+stream.getId()+" and generator="+scvGenerator.getId());
try {
for(ScvTx scvTx:handler.selectObjects()){
transactions.put(scvTx.getId(), new Tx(database, (TxStream) stream, this, scvTx));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
e.printStackTrace();
}
}
return transactions;
}
}
@@ -0,0 +1,44 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxRelation;
public class TxRelation implements ITxRelation {
RelationType relationType;
Tx source;
Tx target;
public TxRelation(RelationType relationType, Tx source, Tx target) {
this.source = source;
this.target = target;
this.relationType = relationType;
}
@Override
public RelationType getRelationType() {
return relationType;
}
@Override
public ITx getSource() {
return source;
}
@Override
public ITx getTarget() {
return target;
}
}
@@ -0,0 +1,105 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.minres.scviewer.database.IEvent;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.sqlite.db.IDatabase;
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
import com.minres.scviewer.database.sqlite.tables.ScvGenerator;
import com.minres.scviewer.database.sqlite.tables.ScvStream;
import com.minres.scviewer.database.sqlite.tables.ScvTx;
import com.minres.scviewer.database.tx.ITx;
public class TxStream extends AbstractTxStream {
private String fullName;
private ScvStream scvStream;
private TreeMap<Integer, TxGenerator> generators;
private TreeMap<Integer, ITx> transactions;
public TxStream(IDatabase database, ScvStream scvStream) {
super(database, scvStream.getName(), scvStream.getId());
fullName=scvStream.getName();
this.scvStream=scvStream;
}
@Override
public String getFullName() {
return fullName;
}
@Override
public long getId() {
return (long) scvStream.getId();
}
public List<IWaveform> getGenerators() {
if(generators==null){
SQLiteDatabaseSelectHandler<ScvGenerator> handler = new SQLiteDatabaseSelectHandler<>(
ScvGenerator.class, database, "stream="+scvStream.getId());
generators=new TreeMap<>();
try {
for(ScvGenerator scvGenerator:handler.selectObjects()){
generators.put(scvGenerator.getId(), new TxGenerator(database, this, scvGenerator));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
e.printStackTrace();
}
}
return new ArrayList<>(generators.values());
}
protected Map<Integer, ITx> getTransactions() {
if(transactions==null){
if(generators==null) getGenerators();
transactions = new TreeMap<>();
SQLiteDatabaseSelectHandler<ScvTx> handler = new SQLiteDatabaseSelectHandler<>(ScvTx.class, database,
"stream="+scvStream.getId());
try {
for(ScvTx scvTx:handler.selectObjects()){
transactions.put(scvTx.getId(), new Tx(database, this, generators.get(scvTx.getGenerator()), scvTx));
}
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
| InvocationTargetException | SQLException | IntrospectionException | NoSuchMethodException e) {
e.printStackTrace();
}
}
return transactions;
}
@Override
public IEvent[] getEventsAtTime(long time) {
return getEvents().get(time);
}
@Override
public boolean isSame(IWaveform other) {
return(other instanceof TxStream && this.getId() == other.getId());
}
@Override
public String getKind() {
return scvStream.getKind();
}
}
@@ -0,0 +1,94 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.db;
import java.lang.reflect.Field;
/**
* An abstract class that handles insert/select-operations into/from a database
*
* @author Tino for http://www.java-blog.com
*
* @param <T>
*/
public abstract class AbstractDatabaseHandler<T> {
/**
* The type of the objects that should be created and filled with values
* from the database or inserted into the database
*/
protected Class<T> type;
/**
* Contains the settings to create a connection to the database like
* host/port/database/user/password
*/
protected IDatabase databaseConnectionFactory;
/** The SQL-select-query */
protected final String query;
/**
* Constructor
*
* @param type
* The type of the objects that should be created and filled with
* values from the database or inserted into the database
* @param databaseConnecter
* Contains the settings to create a connection to the database
* like host/port/database/user/password
*/
protected AbstractDatabaseHandler(Class<T> type,
IDatabase databaseConnectionFactory, String criterion) {
this.databaseConnectionFactory = databaseConnectionFactory;
this.type = type;
this.query = createQuery(criterion);
}
/**
* Create the SQL-String to insert into / select from the database
*
* @return the SQL-String
*/
protected abstract String createQuery(String criterion);
/**
*
* Creates a comma-separated-String with the names of the variables in this
* class
*
* @param usePlaceHolders
* true, if PreparedStatement-placeholders ('?') should be used
* instead of the names of the variables
* @return
*/
protected String getColumns(boolean usePlaceHolders) {
StringBuilder sb = new StringBuilder();
boolean first = true;
/* Iterate the column-names */
for (Field f : type.getDeclaredFields()) {
if (first)
first = false;
else
sb.append(", ");
if (usePlaceHolders)
sb.append("?");
else
sb.append(f.getName());
}
return sb.toString();
}
}
@@ -0,0 +1,65 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.minres.scviewer.database.IWaveformDb;
/**
*
* Creates a connection to a database.
*
* @author Tino
* @created 03.12.2008
*
*/
public interface IDatabase {
/**
* Establishes a new connection to the database
*
* @return A new connection to the database
* @throws SQLException
*/
public Connection createConnection() throws SQLException;
/**
* Returns the connection url
*
* @return
*/
public String getConnectionUrl();
/**
* releases the result set
*
* @return
*/
public void close(ResultSet resultSet, Statement statement, Connection connection);
/**
* releases the preparedStatement
*
* @return
*/
public void close(PreparedStatement preparedStatement, Connection connection);
public void setData(String name, Object value);
public Object getData(String name);
public IWaveformDb getWaveformDb();
}
@@ -0,0 +1,102 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.db;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import com.minres.scviewer.database.IWaveformDb;
public class SQLiteDatabase implements IDatabase {
protected String dbFileName;
protected IWaveformDb waveformDb;
protected HashMap<String, Object> props;
static {
try {
URL dbUrl = SQLiteDatabase.class.getResource("/sqlite-jdbc-3.8.7.jar");
ClassLoader loader = URLClassLoader.newInstance(
new URL[] { dbUrl },
SQLiteDatabase.class.getClassLoader()
);
Class.forName("org.sqlite.JDBC", true, loader);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public SQLiteDatabase(String dbFileName, IWaveformDb waveformDb) {
super();
this.dbFileName = dbFileName;
this.waveformDb = waveformDb;
props = new HashMap<String, Object>();
}
@Override
public Connection createConnection() throws SQLException {
// create a database connection and return it
return DriverManager.getConnection(getConnectionUrl() );
}
@Override
public String getConnectionUrl() {
// now we set up a set of fairly basic string variables to use in the body of the code proper
String sJdbc = "jdbc:sqlite";
String sDbUrl = sJdbc + ":" + dbFileName;
// which will produce a legitimate Url for SqlLite JDBC :
// jdbc:sqlite:hello.db
return sDbUrl;
}
@Override
public void close(ResultSet resultSet, Statement statement, Connection connection) {
try {
if(resultSet!=null) resultSet.close();
if(statement!=null) statement.close();
if(connection!=null) connection.close();
} catch (SQLException e) {}
}
@Override
public void close(PreparedStatement preparedStatement, Connection connection) {
try {
preparedStatement.close();
connection.close();
} catch (SQLException e) {}
}
@Override
public void setData(String name, Object value){
props.put(name, value);
}
@Override
public Object getData(String name){
return props.get(name);
}
@Override
public IWaveformDb getWaveformDb() {
return waveformDb;
}
}
@@ -0,0 +1,104 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.db;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
/**
*
* Class that inserts a list of <T>s into the corresponding database-table.
*
* @author Tino for http://www.java-blog.com
*
* @param <T>
*/
public class SQLiteDatabaseInsertHandler<T> extends AbstractDatabaseHandler<T> {
public SQLiteDatabaseInsertHandler(Class<T> type,
IDatabase databaseConnecter) {
super(type, databaseConnecter, null);
}
@Override
protected String createQuery(String criterion) {
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO ");
sb.append(type.getSimpleName());
sb.append("(");
sb.append(super.getColumns(false));
sb.append(")");
sb.append(" VALUES (");
sb.append(super.getColumns(true));
sb.append(")");
return sb.toString();
}
/**
* Inserts a list of <T>s into the corresponding database-table
*
* @param list
* List of <T>s that should be inserted into the corresponding
* database-table
*
* @throws SQLException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws IntrospectionException
* @throws InvocationTargetException
*/
public void insertObjects(List<T> list) throws SQLException,
SecurityException, IllegalArgumentException,
InstantiationException, IllegalAccessException,
IntrospectionException, InvocationTargetException {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = databaseConnectionFactory.createConnection();
preparedStatement = connection.prepareStatement(query);
for (T instance : list) {
int i = 0;
for (Field field : type.getDeclaredFields()) {
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
field.getName(), type);
Method method = propertyDescriptor
.getReadMethod();
Object value = method.invoke(instance);
preparedStatement.setObject(++i, value);
}
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
} finally {
databaseConnectionFactory.close(preparedStatement, connection);
}
}
}
@@ -0,0 +1,144 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.db;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* Class that creates a list of <T>s filled with values from the corresponding
* database-table.
*
* @author Tino for http://www.java-blog.com
*
* @param <T>
*/
public class SQLiteDatabaseSelectHandler<T> extends AbstractDatabaseHandler<T> {
public SQLiteDatabaseSelectHandler(Class<T> type,
IDatabase databaseConnectionFactory) {
super(type, databaseConnectionFactory, null);
}
public SQLiteDatabaseSelectHandler(Class<T> type,
IDatabase databaseConnectionFactory, String criteria) {
super(type, databaseConnectionFactory, criteria);
}
@Override
protected String createQuery(String criterion) {
StringBuilder sb = new StringBuilder();
sb.append("SELECT ");
sb.append(super.getColumns(false));
sb.append(" FROM ");
/* We assume the table-name exactly matches the simpleName of T */
sb.append(type.getSimpleName());
if(criterion!=null){
sb.append(" WHERE ( ");
sb.append(criterion);
sb.append(" )");
}
return sb.toString();
}
/**
* Creates a list of <T>s filled with values from the corresponding
* database-table
*
* @return List of <T>s filled with values from the corresponding
* database-table
*
* @throws SQLException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws IntrospectionException
* @throws InvocationTargetException
* @throws NoSuchMethodException
*/
public synchronized List<T> selectObjects() throws SQLException,
InstantiationException, IllegalAccessException,
IntrospectionException, InvocationTargetException, IllegalArgumentException, NoSuchMethodException, SecurityException {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = databaseConnectionFactory.createConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(query);
return createObjects(resultSet);
} finally {
databaseConnectionFactory.close(resultSet, statement, connection);
}
}
/**
*
* Creates a list of <T>s filled with values from the provided ResultSet
*
* @param resultSet
* ResultSet that contains the result of the
* database-select-query
*
* @return List of <T>s filled with values from the provided ResultSet
*
* @throws SecurityException
* @throws IllegalArgumentException
* @throws SQLException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws IntrospectionException
* @throws InvocationTargetException
* @throws NoSuchMethodException
*/
private List<T> createObjects(ResultSet resultSet)
throws SQLException, InstantiationException,
IllegalAccessException, IntrospectionException,
InvocationTargetException, IllegalArgumentException, NoSuchMethodException, SecurityException {
List<T> list = new ArrayList<>();
while (resultSet.next()) {
T instance = type.getDeclaredConstructor().newInstance();
for (Field field : type.getDeclaredFields()) {
/* We assume the table-column-names exactly match the variable-names of T */
Object value = resultSet.getObject(field.getName());
if(value!=null){
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), type);
propertyDescriptor.getWriteMethod().invoke(instance, value);
}
}
list.add(instance);
}
return list;
}
}
@@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvGenerator {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getStream() {
return stream;
}
public void setStream(int stream) {
this.stream = stream;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBegin_attr() {
return begin_attr;
}
public void setBegin_attr(int begin_attr) {
this.begin_attr = begin_attr;
}
public int getEnd_attr() {
return end_attr;
}
public void setEnd_attr(int end_attr) {
this.end_attr = end_attr;
}
private int id;
private int stream;
private String name;
private int begin_attr;
private int end_attr;
}
@@ -0,0 +1,29 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvSimProps {
private long time_resolution;
public ScvSimProps() {
super();
}
public long getTime_resolution() {
return time_resolution;
}
public void setTime_resolution(long time_resolution) {
this.time_resolution = time_resolution;
}
}
@@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvStream {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
private int id;
private String name;
private String kind;
}
@@ -0,0 +1,50 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvTx {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getGenerator() {
return generator;
}
public void setGenerator(int generator) {
this.generator = generator;
}
public int getStream() {
return stream;
}
public void setStream(int stream) {
this.stream = stream;
}
public int getConcurrencyLevel() {
return concurrencyLevel;
}
public void setConcurrencyLevel(int concurrencyLevel) {
this.concurrencyLevel = concurrencyLevel;
}
private int id;
private int generator;
private int stream;
private int concurrencyLevel;
}
@@ -0,0 +1,60 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvTxAttribute {
public int getTx() {
return tx;
}
public void setTx(int tx) {
this.tx = tx;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getData_type() {
return data_type;
}
public void setData_type(int data_type) {
this.data_type = data_type;
}
public String getData_value() {
return data_value;
}
public void setData_value(String data_value) {
this.data_value = data_value;
}
private int tx;
private int type;
private String name;
private int data_type;
private String data_value;
}
@@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvTxEvent {
public int getTx() {
return tx;
}
public void setTx(int tx) {
this.tx = tx;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
private int tx;
private int type;
private long time;
}
@@ -0,0 +1,42 @@
/*******************************************************************************
* Copyright (c) 2015-2021 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.sqlite.tables;
public class ScvTxRelation {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSrc() {
return src;
}
public void setSrc(int src) {
this.src = src;
}
public int getSink() {
return sink;
}
public void setSink(int sink) {
this.sink = sink;
}
private String name;
private int src;
private int sink;
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/"/>
<classpathentry exported="true" kind="lib" path="lib/mapdb-3.0.7.jar" sourcepath="lib/mapdb-3.0.7-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/com.minres.scviewer.database.text/lib/mapdb-3.0.7-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/kotlin-stdlib-1.2.42.jar"/>
<classpathentry exported="true" kind="lib" path="lib/lz4-1.3.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/elsa-3.0.0-M5.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
@@ -0,0 +1,2 @@
/bin
/target/
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.database.text</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11
@@ -0,0 +1,3 @@
eclipse.preferences.version=1
groovy.compiler.level=-1
groovy.script.filters=**/*.dsld,y,**/*.gradle,n
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,20 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Textual transaction database
Bundle-SymbolicName: com.minres.scviewer.database.text
Bundle-Version: 4.0.0.qualifier
Bundle-Vendor: MINRES Technologies GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.osgi.framework;version="1.3.0"
Require-Bundle: com.minres.scviewer.database,
org.eclipse.osgi.services;bundle-version="3.4.0",
com.google.guava;bundle-version="15.0.0",
org.eclipse.collections;bundle-version="10.4.0"
Service-Component: OSGI-INF/component.xml
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: com.minres.scviewer.database.text
Bundle-ClassPath: .,
lib/mapdb-3.0.7.jar,
lib/kotlin-stdlib-1.2.42.jar,
lib/lz4-1.3.0.jar,
lib/elsa-3.0.0-M5.jar
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="TextDbLoaderFactory">
<implementation class="com.minres.scviewer.database.text.TextDbLoaderFactory"/>
<service>
<provide interface="com.minres.scviewer.database.IWaveformDbLoaderFactory"/>
</service>
</scr:component>
@@ -0,0 +1,22 @@
###############################################################################
# Copyright (c) 2014, 2015-2021 MINRES Technologies GmbH and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# MINRES Technologies GmbH - initial API and implementation
###############################################################################
bin.includes = META-INF/,\
.,\
OSGI-INF/,\
lib/,\
lib/mapdb-3.0.7.jar,\
lib/kotlin-stdlib-1.2.42.jar,\
lib/lz4-1.3.0.jar,\
lib/elsa-3.0.0-M5.jar
bin.excludes = **/*.groovy,\
lib/mapdb-3.0.7-sources.jar,\
lib/mapdb-3.0.7-javadoc.jar
source.. = src/
@@ -0,0 +1,177 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,14 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.text</artifactId>
<version>4.0.0-SNAPSHOT</version>
<parent>
<groupId>com.minres.scviewer</groupId>
<artifactId>com.minres.scviewer.parent</artifactId>
<version>2.14.1</version>
<relativePath>../../..</relativePath>
</parent>
<packaging>eclipse-plugin</packaging>
</project>
@@ -0,0 +1,189 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.util.ArrayList;
import java.util.HashMap;
import com.minres.scviewer.database.EventEntry;
import com.minres.scviewer.database.EventList;
import com.minres.scviewer.database.HierNode;
import com.minres.scviewer.database.IEvent;
import com.minres.scviewer.database.IEventList;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.WaveformType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxEvent;
/**
* The Class AbstractTxStream.
*/
abstract class AbstractTxStream extends HierNode implements IWaveform {
private final String fullName;
/** The id. */
private Long id;
/** The loader. */
protected TextDbLoader loader;
/** The events. */
IEventList events = new EventList();
/** The max concurrency. */
private int rowCount = -1;
/**
* Instantiates a new abstract tx stream.
*
* @param loader the loader
* @param id the id
* @param name the name
*/
protected AbstractTxStream(TextDbLoader loader, Long id, String name) {
super(name);
fullName=name;
this.loader = loader;
this.id = id;
}
/**
* Gets the full hierarchical name.
*
* @return the full name
*/
@Override
public String getFullName() {
return fullName;
}
/**
* Adds the event.
*
* @param evt the evt
*/
public void addEvent(ITxEvent evt) {
events.put(evt.getTime(), evt);
}
/**
* Gets the events.
*
* @return the events
*/
@Override
public IEventList getEvents() {
return events;
}
/**
* Gets the events at time.
*
* @param time the time
* @return the events at time
*/
@Override
public IEvent[] getEventsAtTime(long time) {
return events.get(time);
}
/**
* Gets the events before time.
*
* @param time the time
* @return the events before time
*/
@Override
public IEvent[] getEventsBeforeTime(long time) {
EventEntry e = events.floorEntry(time);
if (e == null)
return new IEvent[] {};
else
return events.floorEntry(time).events;
}
/**
* Gets the type.
*
* @return the type
*/
@Override
public WaveformType getType() {
return WaveformType.TRANSACTION;
}
/**
* Gets the id.
*
* @return the id
*/
@Override
public long getId() {
return id;
}
/**
* Gets the width.
*
* @return the width
*/
@Override
public int getRowCount() {
if (rowCount<0)
calculateConcurrency();
return rowCount;
}
/**
* Calculate concurrency.
*/
void calculateConcurrency() {
if (rowCount>=0)
return;
ArrayList<Long> rowEndTime = new ArrayList<>();
HashMap<Long, Integer> rowByTxId = new HashMap<>();
for(EventEntry entry: events) {
for(IEvent evt:entry.events) {
TxEvent txEvt = (TxEvent) evt;
ITx tx = txEvt.getTransaction();
int rowIdx = 0;
switch(evt.getKind()) {
case END:
Long txId = txEvt.getTransaction().getId();
txEvt.setConcurrencyIndex(rowByTxId.get(txId));
rowByTxId.remove(txId);
break;
case SINGLE:
for (; rowIdx < rowEndTime.size() && rowEndTime.get(rowIdx)>tx.getBeginTime(); rowIdx++);
if (rowEndTime.size() <= rowIdx)
rowEndTime.add(tx.getEndTime());
else
rowEndTime.set(rowIdx, tx.getEndTime());
((TxEvent) evt).setConcurrencyIndex(rowIdx);
break;
case BEGIN:
for (; rowIdx < rowEndTime.size() && rowEndTime.get(rowIdx)>tx.getBeginTime(); rowIdx++);
if (rowEndTime.size() <= rowIdx)
rowEndTime.add(tx.getEndTime());
else
rowEndTime.set(rowIdx, tx.getEndTime());
((TxEvent) evt).setConcurrencyIndex(rowIdx);
rowByTxId.put(tx.getId(), rowIdx);
break;
}
}
}
rowCount=rowEndTime.size()>0?rowEndTime.size():1;
getChildNodes().parallelStream().forEach(c -> ((TxGenerator)c).calculateConcurrency());
}
}
@@ -0,0 +1,47 @@
/*******************************************************************************
* Copyright (c) 2020 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.io.Serializable;
import com.minres.scviewer.database.RelationType;
/**
* The Class ScvRelation.
*/
class ScvRelation implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -347668857680574140L;
/** The source. */
final long source;
/** The target. */
final long target;
/** The relation type. */
final RelationType relationType;
/**
* Instantiates a new scv relation.
*
* @param relationType the relation type
* @param source the source
* @param target the target
*/
public ScvRelation(RelationType relationType, long source, long target) {
this.source = source;
this.target = target;
this.relationType = relationType;
}
}
@@ -0,0 +1,70 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.minres.scviewer.database.tx.ITxAttribute;
/**
* The Class ScvTx.
*/
class ScvTx implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -855200240003328221L;
/** The id. */
final long id;
/** The generator id. */
final long generatorId;
/** The stream id. */
final long streamId;
/** The begin time. */
long beginTime;
/** The end time. */
long endTime;
/** The attributes. */
final List<ITxAttribute> attributes = new ArrayList<>();
/**
* Instantiates a new scv tx.
*
* @param id the id
* @param streamId the stream id
* @param generatorId the generator id
* @param begin the begin
*/
ScvTx(long id, long streamId, long generatorId, long begin) {
this.id = id;
this.streamId = streamId;
this.generatorId = generatorId;
this.beginTime = begin;
this.endTime = begin;
}
/**
* Gets the id.
*
* @return the id
*/
Long getId() {
return id;
}
}
@@ -0,0 +1,551 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
import org.eclipse.collections.impl.map.mutable.UnifiedMap;
import org.mapdb.DB;
import org.mapdb.DBMaker;
import org.mapdb.HTreeMap;
import org.mapdb.Serializer;
import com.google.common.collect.HashMultimap;
import com.minres.scviewer.database.AssociationType;
import com.minres.scviewer.database.DataType;
import com.minres.scviewer.database.EventKind;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.database.IWaveformDbLoader;
import com.minres.scviewer.database.InputFormatException;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.RelationTypeFactory;
import com.minres.scviewer.database.tx.ITx;
/**
* The Class TextDbLoader.
*/
public class TextDbLoader implements IWaveformDbLoader {
/** the file size limit of a zipped txlog where the loader starts to use a file mapped database */
private static final long MEMMAP_LIMIT=256l*1024l*1024l;
private static final long MAPDB_INITIAL_ALLOC = 512l*1024l*1024l;
private static final long MAPDB_INCREMENTAL_ALLOC = 128l*1024l*1024l;
/** The max time. */
private Long maxTime = 0L;
/** The map db. */
DB mapDb = null;
/** The attr values. */
final List<String> attrValues = new ArrayList<>();
/** The relation types. */
final Map<String, RelationType> relationTypes = UnifiedMap.newMap();
/** The tx streams. */
final Map<Long, TxStream> txStreams = UnifiedMap.newMap();
/** The tx generators. */
final Map<Long, TxGenerator> txGenerators = UnifiedMap.newMap();
/** The transactions. */
Map<Long, ScvTx> transactions = null;
/** The attribute types. */
final Map<String, TxAttributeType> attributeTypes = UnifiedMap.newMap();
/** The relations in. */
final HashMultimap<Long, ScvRelation> relationsIn = HashMultimap.create();
/** The relations out. */
final HashMultimap<Long, ScvRelation> relationsOut = HashMultimap.create();
/** The tx cache. */
HashMap<Long, Tx> txCache = new HashMap<>();
/** The threads. */
List<Thread> threads = new ArrayList<>();
/** The pcs. */
protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);
/** The Constant x. */
static final byte[] x = "scv_tr_stream".getBytes();
/**
* Adds the property change listener.
*
* @param l the l
*/
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}
/**
* Removes the property change listener.
*
* @param l the l
*/
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}
/**
* Gets the max time.
*
* @return the max time
*/
@Override
public long getMaxTime() {
return maxTime;
}
/**
* Gets the transaction.
*
* @param txId the tx id
* @return the transaction
*/
public ITx getTransaction(long txId) {
if (txCache.containsKey(txId))
return txCache.get(txId);
if(transactions.containsKey(txId)) {
Tx tx = new Tx(this, transactions.get(txId));
txCache.put(txId, tx);
return tx;
} else {
throw new IllegalArgumentException();
}
}
public ScvTx getScvTx(long id) {
if(transactions.containsKey(id))
return transactions.get(id);
else
throw new IllegalArgumentException();
}
/**
* Gets the all waves.
*
* @return the all waves
*/
@Override
public Collection<IWaveform> getAllWaves() {
ArrayList<IWaveform> ret = new ArrayList<>(txStreams.values());
ret.addAll(txGenerators.values());
return ret;
}
/**
* Gets the all relation types.
*
* @return the all relation types
*/
public Collection<RelationType> getAllRelationTypes() {
return relationTypes.values();
}
/**
* Can load.
*
* @param inputFile the input file
* @return true, if successful
*/
@Override
public boolean canLoad(File inputFile) {
if (!inputFile.isDirectory() && inputFile.exists()) {
boolean gzipped = isGzipped(inputFile);
try(InputStream stream = gzipped ? new GZIPInputStream(new FileInputStream(inputFile)) : new FileInputStream(inputFile)){
byte[] buffer = new byte[x.length];
int readCnt = stream.read(buffer, 0, x.length);
if (readCnt == x.length) {
for (int i = 0; i < x.length; i++)
if (buffer[i] != x[i])
return false;
}
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
/**
* Checks if is gzipped.
*
* @param f the f
* @return true, if is gzipped
*/
private static boolean isGzipped(File f) {
try (InputStream is = new FileInputStream(f)) {
byte[] signature = new byte[2];
int nread = is.read(signature); // read the gzip signature
return nread == 2 && signature[0] == (byte) 0x1f && signature[1] == (byte) 0x8b;
} catch (IOException e) {
return false;
}
}
/**
* Load.
*
* @param db the db
* @param file the file
* @return true, if successful
* @throws InputFormatException the input format exception
*/
@SuppressWarnings("unchecked")
@Override
public void load(IWaveformDb db, File file) throws InputFormatException {
dispose();
boolean gzipped = isGzipped(file);
if (file.length() < MEMMAP_LIMIT * (gzipped ? 1 : 10)
|| "memory".equals(System.getProperty("ScvBackingDB", "file")))
mapDb = DBMaker.memoryDirectDB().make();
else {
File mapDbFile;
try {
mapDbFile = File.createTempFile("." + file.getName(), ".mapdb", null /* file.parentFile */);
Files.delete(Paths.get(mapDbFile.getPath()));
} catch (IOException e) {
throw new InputFormatException(e.toString());
}
mapDb = DBMaker.fileDB(mapDbFile).fileMmapEnable() // Always enable mmap
.fileMmapPreclearDisable().allocateStartSize(MAPDB_INITIAL_ALLOC)
.allocateIncrement(MAPDB_INCREMENTAL_ALLOC).cleanerHackEnable().make();
mapDbFile.deleteOnExit();
}
TextDbParser parser = new TextDbParser(this);
try {
parser.txSink = mapDb.hashMap("transactions", Serializer.LONG, Serializer.JAVA).create();
parser.parseInput(gzipped ? new GZIPInputStream(new FileInputStream(file)) : new FileInputStream(file));
transactions = parser.txSink;
} catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) {
} catch (Exception e) {
throw new InputFormatException(e.toString());
}
txStreams.values().parallelStream().forEach(TxStream::calculateConcurrency);
}
/**
* Dispose.
*/
@Override
public void dispose() {
attrValues.clear();
relationTypes.clear();
txStreams.clear();
txGenerators.clear();
transactions = null;
attributeTypes.clear();
relationsIn.clear();
relationsOut.clear();
if (mapDb != null) {
mapDb.close();
mapDb = null;
}
}
/**
* The Class TextDbParser.
*/
static class TextDbParser {
/** The Constant scv_tr_stream. */
static final Pattern scv_tr_stream = Pattern
.compile("^scv_tr_stream\\s+\\(ID (\\d+),\\s+name\\s+\"([^\"]+)\",\\s+kind\\s+\"([^\"]+)\"\\)$");
/** The Constant scv_tr_generator. */
static final Pattern scv_tr_generator = Pattern
.compile("^scv_tr_generator\\s+\\(ID\\s+(\\d+),\\s+name\\s+\"([^\"]+)\",\\s+scv_tr_stream\\s+(\\d+),$");
/** The Constant begin_attribute. */
static final Pattern begin_attribute = Pattern
.compile("^begin_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$");
/** The Constant end_attribute. */
static final Pattern end_attribute = Pattern
.compile("^end_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$");
/** The loader. */
final TextDbLoader loader;
/** The transaction by id. */
HashMap<Long, ScvTx> transactionById = new HashMap<>();
/** The tx sink. */
HTreeMap<Long, ScvTx> txSink;
/** The reader. */
BufferedReader reader = null;
/** The generator. */
TxGenerator generator = null;
/** The attr value lut. */
Map<String, Integer> attrValueLut = new HashMap<>();
/**
* Instantiates a new text db parser.
*
* @param loader the loader
*/
public TextDbParser(TextDbLoader loader) {
super();
this.loader = loader;
}
/**
* Parses the input.
*
* @param inputStream the input stream
* @throws IOException Signals that an I/O exception has occurred.
* @throws InputFormatException Signals that the input format is wrong
*/
void parseInput(InputStream inputStream) throws IOException, InputFormatException {
reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String curLine = reader.readLine();
String nextLine = null;
while ((nextLine = reader.readLine()) != null && curLine != null) {
curLine = parseLine(curLine, nextLine);
}
if (curLine != null)
parseLine(curLine, nextLine);
for(Entry<Long, ScvTx> e: transactionById.entrySet()) {
ScvTx scvTx = e.getValue();
scvTx.endTime=loader.maxTime;
txSink.put(e.getKey(), scvTx);
}
}
/**
* Gets the attr type.
*
* @param name the name
* @param dataType the data type
* @param type the type
* @return the attr type
*/
private TxAttributeType getAttrType(String name, DataType dataType, AssociationType type) {
String key = name + "-" + dataType.toString();
TxAttributeType res;
if (loader.attributeTypes.containsKey(key)) {
res = loader.attributeTypes.get(key);
} else {
res = new TxAttributeType(name, dataType, type);
loader.attributeTypes.put(key, res);
}
return res;
}
/**
* Parses the line.
*
* @param curLine the cur line
* @param nextLine the next line
* @return the string
* @throws IOException Signals that an I/O exception has occurred.
* @throws InputFormatException Signals that the input format is wrong
*/
private String parseLine(String curLine, String nextLine) throws IOException, InputFormatException {
String[] tokens = curLine.split("\\s+");
if ("tx_record_attribute".equals(tokens[0])) {
Long id = Long.parseLong(tokens[1]);
String name = tokens[2].substring(1, tokens[2].length()-1);
DataType type = DataType.valueOf(tokens[3]);
String remaining = tokens.length > 5 ? String.join(" ", Arrays.copyOfRange(tokens, 5, tokens.length)) : "";
TxAttributeType attrType = getAttrType(name, type, AssociationType.RECORD);
transactionById.get(id).attributes.add(new TxAttribute(attrType, getAttrString(attrType, remaining)));
} else if ("tx_begin".equals(tokens[0])) {
Long id = Long.parseLong(tokens[1]);
Long genId = Long.parseLong(tokens[2]);
TxGenerator gen = loader.txGenerators.get(genId);
ScvTx scvTx = new ScvTx(id, gen.stream.getId(), genId,
Long.parseLong(tokens[3]) * stringToScale(tokens[4]));
loader.maxTime = loader.maxTime > scvTx.beginTime ? loader.maxTime : scvTx.beginTime;
if (nextLine != null && nextLine.charAt(0) == 'a') {
int idx = 0;
while (nextLine != null && nextLine.charAt(0) == 'a') {
String[] attrTokens = nextLine.split("\\s+");
TxAttributeType attrType = gen.beginAttrs.get(idx);
TxAttribute attr = new TxAttribute(attrType, getAttrString(attrType, attrTokens[1]));
scvTx.attributes.add(attr);
idx++;
nextLine = reader.readLine();
}
}
transactionById.put(id, scvTx);
} else if ("tx_end".equals(tokens[0])) {
Long id = Long.parseLong(tokens[1]);
ScvTx scvTx = transactionById.get(id);
assert Long.parseLong(tokens[2]) == scvTx.generatorId;
scvTx.endTime = Long.parseLong(tokens[3]) * stringToScale(tokens[4]);
loader.maxTime = loader.maxTime > scvTx.endTime ? loader.maxTime : scvTx.endTime;
TxGenerator gen = loader.txGenerators.get(scvTx.generatorId);
TxStream stream = loader.txStreams.get(gen.stream.getId());
if (scvTx.beginTime == scvTx.endTime) {
stream.addEvent(new TxEvent(loader, EventKind.SINGLE, id, scvTx.beginTime));
gen.addEvent(new TxEvent(loader, EventKind.SINGLE, id, scvTx.beginTime));
} else {
stream.addEvent(new TxEvent(loader, EventKind.BEGIN, id, scvTx.beginTime));
gen.addEvent(new TxEvent(loader, EventKind.BEGIN, id, scvTx.beginTime));
stream.addEvent(new TxEvent(loader, EventKind.END, id, scvTx.endTime));
gen.addEvent(new TxEvent(loader, EventKind.END, id, scvTx.endTime));
}
if (nextLine != null && nextLine.charAt(0) == 'a') {
int idx = 0;
while (nextLine != null && nextLine.charAt(0) == 'a') {
String[] attrTokens = nextLine.split("\\s+");
TxAttributeType attrType = gen.endAttrs.get(idx);
TxAttribute attr = new TxAttribute(attrType, getAttrString(attrType, attrTokens[1]));
scvTx.attributes.add(attr);
idx++;
nextLine = reader.readLine();
}
}
txSink.put(scvTx.getId(), scvTx);
transactionById.remove(id);
} else if ("tx_relation".equals(tokens[0])) {
Long tr2 = Long.parseLong(tokens[2]);
Long tr1 = Long.parseLong(tokens[3]);
String relType = tokens[1].substring(1, tokens[1].length() - 1);
if (!loader.relationTypes.containsKey(relType))
loader.relationTypes.put(relType, RelationTypeFactory.create(relType));
ScvRelation rel = new ScvRelation(loader.relationTypes.get(relType), tr1, tr2);
loader.relationsOut.put(tr1, rel);
loader.relationsIn.put(tr2, rel);
} else if ("scv_tr_stream".equals(tokens[0])) {
Matcher matcher = scv_tr_stream.matcher(curLine);
if (matcher.matches()) {
Long id = Long.parseLong(matcher.group(1));
TxStream stream = new TxStream(loader, id, matcher.group(2), matcher.group(3));
add(id, stream);
}
} else if ("scv_tr_generator".equals(tokens[0])) {
Matcher matcher = scv_tr_generator.matcher(curLine);
if ((matcher.matches())) {
Long id = Long.parseLong(matcher.group(1));
TxStream stream = loader.txStreams.get(Long.parseLong(matcher.group(3)));
generator = new TxGenerator(loader, id, matcher.group(2), stream);
add(id, generator);
}
} else if ("begin_attribute".equals(tokens[0])) {
Matcher matcher = begin_attribute.matcher(curLine);
if ((matcher.matches())) {
TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)),
AssociationType.BEGIN);
generator.beginAttrs.add(attrType);
}
} else if ("end_attribute".equals(tokens[0])) {
Matcher matcher = end_attribute.matcher(curLine);
if ((matcher.matches())) {
TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)),
AssociationType.END);
generator.endAttrs.add(attrType);
}
} else if (")".equals(tokens[0])) {
generator = null;
} else
throw new InputFormatException("Don't know what to do with: '" + curLine + "'");
return nextLine;
}
/**
* Gets the attr string.
*
* @param attrType the attr type
* @param string the string
* @return the attr string
*/
private String getAttrString(TxAttributeType attrType, String string) {
String value;
switch (attrType.getDataType()) {
case STRING:
case ENUMERATION:
value = string.substring(1, string.length() - 1);
break;
default:
value = string;
}
if (attrValueLut.containsKey(value)) {
return loader.attrValues.get(attrValueLut.get(value));
} else {
attrValueLut.put(value, loader.attrValues.size());
loader.attrValues.add(value);
return value;
}
}
/**
* String to scale.
*
* @param scale the scale
* @return the long
*/
private long stringToScale(String scale) {
String cmp = scale.trim();
if ("fs".equals(cmp))
return 1L;
if ("ps".equals(cmp))
return 1000L;
if ("ns".equals(cmp))
return 1000000L;
if ("us".equals(cmp))
return 1000000000L;
if ("ms".equals(cmp))
return 1000000000000L;
if ("s".equals(cmp))
return 1000000000000000L;
return 1L;
}
private void add(Long id, TxStream stream) {
loader.txStreams.put(id, stream);
loader.pcs.firePropertyChange(IWaveformDbLoader.STREAM_ADDED, null, stream);
}
private void add(Long id, TxGenerator generator) {
loader.txGenerators.put(id, generator);
loader.pcs.firePropertyChange(IWaveformDbLoader.GENERATOR_ADDED, null, generator);
}
}
}
@@ -0,0 +1,77 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPInputStream;
import com.minres.scviewer.database.IWaveformDbLoader;
import com.minres.scviewer.database.IWaveformDbLoaderFactory;
/**
* The Class TextDbLoader.
*/
public class TextDbLoaderFactory implements IWaveformDbLoaderFactory {
/** The Constant x. */
static final byte[] x = "scv_tr_stream".getBytes();
/**
* Checks if f is gzipped.
*
* @param f the f
* @return true, if is gzipped
*/
private static boolean isGzipped(File f) {
try (InputStream is = new FileInputStream(f)) {
byte[] signature = new byte[2];
int nread = is.read(signature); // read the gzip signature
return nread == 2 && signature[0] == (byte) 0x1f && signature[1] == (byte) 0x8b;
} catch (IOException e) {
return false;
}
}
/**
* Can load.
*
* @param inputFile the input file
* @return true, if successful
*/
@Override
public boolean canLoad(File inputFile) {
if (!inputFile.isDirectory() && inputFile.exists()) {
boolean gzipped = isGzipped(inputFile);
try(InputStream stream = gzipped ? new GZIPInputStream(new FileInputStream(inputFile)) : new FileInputStream(inputFile)){
byte[] buffer = new byte[x.length];
int readCnt = stream.read(buffer, 0, x.length);
if (readCnt == x.length) {
for (int i = 0; i < x.length; i++)
if (buffer[i] != x[i])
return false;
}
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
@Override
public IWaveformDbLoader getLoader() {
return new TextDbLoader();
}
}
@@ -0,0 +1,231 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxAttribute;
import com.minres.scviewer.database.tx.ITxRelation;
/**
* The Class Tx.
*/
class Tx implements ITx {
/** The loader. */
private final TextDbLoader loader;
private ScvTx scvTx =null;
/** The id. */
private final long id;
private final long generatorId;
private final long streamId;
/** The begin time. */
long beginTime = -1;
/** The end time. */
long endTime = -1;
/**
* Instantiates a new tx.
*
* @param loader the loader
* @param scvTx the scv tx
*/
public Tx(TextDbLoader loader, ScvTx scvTx) {
this.loader = loader;
id = scvTx.id;
generatorId=scvTx.generatorId;
streamId=scvTx.streamId;
beginTime=scvTx.beginTime;
endTime=scvTx.endTime;
}
/**
* Instantiates a new tx.
*
* @param loader the loader
* @param txId the tx id
*/
public Tx(TextDbLoader loader, long id, long generatorId, long streamId) {
this.loader = loader;
this.id = id;
this.generatorId=generatorId;
this.streamId = streamId;
}
/**
* Gets the incoming relations.
*
* @return the incoming relations
*/
@Override
public Collection<ITxRelation> getIncomingRelations() {
Set<ScvRelation> rels = loader.relationsIn.get(id);
return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList());
}
/**
* Gets the outgoing relations.
*
* @return the outgoing relations
*/
@Override
public Collection<ITxRelation> getOutgoingRelations() {
Set<ScvRelation> rels = loader.relationsOut.get(id);
return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList());
}
/**
* Compare to.
*
* @param o the o
* @return the int
*/
@Override
public int compareTo(ITx o) {
int res = Long.compare(getBeginTime(), o.getBeginTime());
if (res != 0)
return res;
else
return Long.compare(getId(), o.getId());
}
/**
* Equals.
*
* @param obj the obj
* @return true, if successful
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
return this.getScvTx().equals(((Tx) obj).getScvTx());
}
/**
* Hash code.
*
* @return the int
*/
@Override
public int hashCode() {
return getScvTx().hashCode();
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
return "tx#" + getId() + "[" + getBeginTime() / 1000000 + "ns - " + getEndTime() / 1000000 + "ns]";
}
/**
* Gets the id.
*
* @return the id
*/
@Override
public long getId() {
return getScvTx().id;
}
/**
* Gets the stream.
*
* @return the stream
*/
@Override
public IWaveform getStream() {
return loader.txStreams.get(streamId);
}
/**
* Gets the generator.
*
* @return the generator
*/
@Override
public IWaveform getGenerator() {
return loader.txGenerators.get(generatorId);
}
/**
* Gets the begin time.
*
* @return the begin time
*/
@Override
public long getBeginTime() {
if (beginTime < 0) {
ScvTx tx = scvTx==null?loader.getScvTx(id):getScvTx();
beginTime = tx.beginTime;
endTime = tx.endTime;
}
return beginTime;
}
/**
* Gets the end time.
*
* @return the end time
*/
@Override
public long getEndTime() {
if (endTime < 0) {
ScvTx tx = scvTx==null?loader.getScvTx(id):getScvTx();
beginTime = tx.beginTime;
endTime = tx.endTime;
}
return endTime;
}
/**
* Sets the end time.
*
* @param time the new end time
*/
void setEndTime(Long time) {
getScvTx().endTime = time;
}
/**
* Gets the attributes.
*
* @return the attributes
*/
@Override
public List<ITxAttribute> getAttributes() {
return getScvTx().attributes;
}
private ScvTx getScvTx() {
if(scvTx==null)
scvTx=loader.getScvTx(id);
return scvTx;
}
}
@@ -0,0 +1,85 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.io.Serializable;
import com.minres.scviewer.database.AssociationType;
import com.minres.scviewer.database.DataType;
import com.minres.scviewer.database.tx.ITxAttribute;
/**
* The Class TxAttribute.
*/
public class TxAttribute implements ITxAttribute, Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 4767726016651807152L;
/** The attribute type. */
private final TxAttributeType attributeType;
/** The value. */
private final String value;
/**
* Instantiates a new tx attribute.
*
* @param type the type
* @param value the value
*/
TxAttribute(TxAttributeType type, String value) {
this.attributeType = type;
this.value = value;
}
/**
* Gets the name.
*
* @return the name
*/
@Override
public String getName() {
return attributeType.getName();
}
/**
* Gets the type.
*
* @return the type
*/
@Override
public AssociationType getType() {
return attributeType.getType();
}
/**
* Gets the data type.
*
* @return the data type
*/
@Override
public DataType getDataType() {
return attributeType.getDataType();
}
/**
* Gets the value.
*
* @return the value
*/
@Override
public Object getValue() {
return value;
}
}
@@ -0,0 +1,79 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.io.Serializable;
import com.minres.scviewer.database.AssociationType;
import com.minres.scviewer.database.DataType;
import com.minres.scviewer.database.tx.ITxAttributeType;
/**
* The Class TxAttributeType.
*/
class TxAttributeType implements ITxAttributeType, Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 7159721937208946828L;
/** The name. */
private String name;
/** The data type. */
private DataType dataType;
/** The type. */
private AssociationType type;
/**
* Instantiates a new tx attribute type.
*
* @param name the name
* @param dataType the data type
* @param type the type
*/
TxAttributeType(String name, DataType dataType, AssociationType type) {
this.name = name;
this.dataType = dataType;
this.type = type;
}
/**
* Gets the name.
*
* @return the name
*/
@Override
public String getName() {
return name;
}
/**
* Gets the data type.
*
* @return the data type
*/
@Override
public DataType getDataType() {
return dataType;
}
/**
* Gets the type.
*
* @return the type
*/
@Override
public AssociationType getType() {
return type;
}
}
@@ -0,0 +1,120 @@
/*******************************************************************************
* Copyright (c) 2020 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import com.minres.scviewer.database.EventKind;
import com.minres.scviewer.database.WaveformType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxEvent;
/**
* The Class TxEvent.
*/
class TxEvent implements ITxEvent {
/** The loader. */
final TextDbLoader loader;
/** The kind. */
final EventKind kind;
/** The transaction. */
final long transaction;
/** The time. */
final long time;
private int concurrencyIdx=-1;
/**
* Instantiates a new tx event.
*
* @param loader the loader
* @param kind the kind
* @param transaction the transaction
* @param time the time
*/
TxEvent(TextDbLoader loader, EventKind kind, Long transaction, Long time) {
this.loader = loader;
this.kind = kind;
this.transaction = transaction;
this.time = time;
}
/**
* Duplicate.
*
* @return the i tx event
* @throws CloneNotSupportedException the clone not supported exception
*/
@Override
public ITxEvent duplicate() throws CloneNotSupportedException {
return new TxEvent(loader, kind, transaction, time);
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
return kind.toString() + "@" + time + " of tx #" + transaction;
}
/**
* Gets the type.
*
* @return the type
*/
@Override
public WaveformType getType() {
return WaveformType.TRANSACTION;
}
/**
* Gets the kind.
*
* @return the kind
*/
@Override
public EventKind getKind() {
return kind;
}
/**
* Gets the time.
*
* @return the time
*/
@Override
public long getTime() {
return time;
}
/**
* Gets the transaction.
*
* @return the transaction
*/
@Override
public ITx getTransaction() {
return loader.getTransaction(transaction);
}
@Override
public int getRowIndex() {
return concurrencyIdx;
}
public void setConcurrencyIndex(int idx) {
concurrencyIdx=idx;
}
}
@@ -0,0 +1,96 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import java.util.ArrayList;
import java.util.List;
import com.minres.scviewer.database.IWaveform;
/**
* The Class TxGenerator.
*/
class TxGenerator extends AbstractTxStream {
/** The stream. */
TxStream stream;
/** The begin attrs. */
List<TxAttributeType> beginAttrs = new ArrayList<>();
/** The end attrs. */
List<TxAttributeType> endAttrs = new ArrayList<>();
/**
* Instantiates a new tx generator.
*
* @param loader the loader
* @param id the id
* @param name the name
* @param stream the stream
*/
TxGenerator(TextDbLoader loader, Long id, String name, TxStream stream) {
super(loader, id, name);
this.stream = stream;
stream.addChild(this);
}
/**
* Checks if is same.
*
* @param other the other
* @return true, if is same
*/
@Override
public boolean isSame(IWaveform other) {
return (other instanceof TxGenerator && this.getId()==other.getId());
}
/**
* Gets the begin attrs.
*
* @return the begin attrs
*/
public List<TxAttributeType> getBeginAttrs() {
return beginAttrs;
}
/**
* Gets the end attrs.
*
* @return the end attrs
*/
public List<TxAttributeType> getEndAttrs() {
return endAttrs;
}
/**
* Gets the kind.
*
* @return the kind
*/
@Override
public String getKind() {
return stream.getKind();
}
/**
* Gets the full hierarchical name.
*
* @return the full name
*/
@Override
public String getFullName() {
return ((AbstractTxStream)parent).getFullName()+"."+name;
}
}
@@ -0,0 +1,69 @@
/*******************************************************************************
* Copyright (c) 2020 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxRelation;
/**
* The Class TxRelation.
*/
class TxRelation implements ITxRelation {
/** The loader. */
final TextDbLoader loader;
/** The scv relation. */
final ScvRelation scvRelation;
/**
* Instantiates a new tx relation.
*
* @param loader the loader
* @param scvRelation the scv relation
*/
public TxRelation(TextDbLoader loader, ScvRelation scvRelation) {
this.loader = loader;
this.scvRelation = scvRelation;
}
/**
* Gets the relation type.
*
* @return the relation type
*/
@Override
public RelationType getRelationType() {
return scvRelation.relationType;
}
/**
* Gets the source.
*
* @return the source
*/
@Override
public ITx getSource() {
return loader.getTransaction(scvRelation.source);
}
/**
* Gets the target.
*
* @return the target
*/
@Override
public ITx getTarget() {
return loader.getTransaction(scvRelation.target);
}
}
@@ -0,0 +1,58 @@
/*******************************************************************************
* Copyright (c) 2012 IT Just working.
* Copyright (c) 2020 MINRES Technologies GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IT Just working - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.database.text;
import com.minres.scviewer.database.IWaveform;
/**
* The Class TxStream.
*/
class TxStream extends AbstractTxStream {
/** The kind. */
final String kind;
/**
* Instantiates a new tx stream.
*
* @param loader the loader
* @param id the id
* @param name the name
* @param kind the kind
*/
TxStream(TextDbLoader loader, Long id, String name, String kind) {
super(loader, id, name);
this.kind = kind;
}
/**
* Checks if is same.
*
* @param other the other
* @return true, if is same
*/
@Override
public boolean isSame(IWaveform other) {
return (other instanceof TxStream && this.getId() == other.getId());
}
/**
* Gets the kind.
*
* @return the kind
*/
@Override
public String getKind() {
return kind;
}
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
@@ -0,0 +1,2 @@
/bin/
/target/
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.minres.scviewer.database.ui.swt</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

Some files were not shown because too many files have changed in this diff Show More