- added SQLite back end
- reworked graphical representation to use widgets
|
@ -0,0 +1,5 @@
|
||||||
|
/.metadata/
|
||||||
|
/.graph-browser/
|
||||||
|
/.recommenders/
|
||||||
|
/RemoteSystemsTempFiles/
|
||||||
|
/*.zip
|
|
@ -1,8 +1,9 @@
|
||||||
txviewer
|
SCViewer
|
||||||
========
|
========
|
||||||
|
|
||||||
TxViewer is composed of a set of eclipse plugins to show transaction streams created by the SystemC
|
SCViewer is composed of a set of eclipse plugins to show VCD and transaction streams
|
||||||
Verification Library (SCV). For further description of the SCV please refer to
|
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.
|
http://www.accellera.org/activities/committees/systemc-verification.
|
||||||
|
|
||||||
The viewer is in early alpha stage and not yet ready for production use!
|
The viewer is in early alpha stage and not yet ready for production use!
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: Textual transaction database
|
|
||||||
Bundle-SymbolicName: com.itjw.txviewer.database.text
|
|
||||||
Bundle-Version: 1.0.0.qualifier
|
|
||||||
Bundle-Activator: com.itjw.txviewer.database.text.Activator
|
|
||||||
Bundle-Vendor: ITJW
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
|
||||||
Import-Package: com.itjw.txviewer.database,
|
|
||||||
org.osgi.framework;version="1.3.0"
|
|
||||||
Require-Bundle: com.itjw.txviewer.database;bundle-version="1.0.0",
|
|
||||||
org.codehaus.groovy;bundle-version="1.8.6"
|
|
|
@ -1,50 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2012 IT Just working.
|
|
||||||
* 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.itjw.txviewer.database.text;
|
|
||||||
|
|
||||||
import org.osgi.framework.BundleActivator;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
import org.osgi.framework.Constants;
|
|
||||||
|
|
||||||
import java.util.Dictionary
|
|
||||||
import java.util.Hashtable
|
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrDb;
|
|
||||||
import com.itjw.txviewer.database.ITransactionDbFactory;
|
|
||||||
|
|
||||||
public class Activator implements BundleActivator {
|
|
||||||
|
|
||||||
private static BundleContext context;
|
|
||||||
|
|
||||||
static BundleContext getContext() {
|
|
||||||
return context;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
|
||||||
*/
|
|
||||||
public void start(BundleContext bundleContext) throws Exception {
|
|
||||||
Activator.context = bundleContext;
|
|
||||||
Dictionary<String, ?> dict = new Hashtable<String, ?>();
|
|
||||||
dict.putAt(Constants.SERVICE_RANKING, 1);
|
|
||||||
context.registerService(ITransactionDbFactory.class, new TrTextDbFactory(), dict);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
|
||||||
*/
|
|
||||||
public void stop(BundleContext bundleContext) throws Exception {
|
|
||||||
Activator.context = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
package com.itjw.txviewer.database.text
|
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrDb
|
|
||||||
import com.itjw.txviewer.database.ITransactionDbFactory;
|
|
||||||
|
|
||||||
class TrTextDbFactory implements ITransactionDbFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITrDb createDatabase() {
|
|
||||||
return new TrTextDb();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.
|
|
|
@ -1,7 +0,0 @@
|
||||||
package com.itjw.txviewer.database;
|
|
||||||
|
|
||||||
public interface ITransactionDbFactory {
|
|
||||||
|
|
||||||
ITrDb createDatabase();
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.itjw.txviewer.feature"
|
|
||||||
label="Transaction Viewer"
|
|
||||||
version="1.0.0.qualifier"
|
|
||||||
provider-name="ITJW">
|
|
||||||
|
|
||||||
<description url="http://www.itjw.com/txviewer">
|
|
||||||
A viewer for SystemC Verification Library transactions
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright url="http://wwwitjw.com/copyright">
|
|
||||||
[Enter Copyright Description here.]
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="http://www.example.com/license">
|
|
||||||
[Enter License Description here.]
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="org.eclipse.ui.views"/>
|
|
||||||
<import plugin="com.itjw.txviewer.database" version="1.0.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.codehaus.groovy" version="1.8.6" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.osgi"/>
|
|
||||||
<import plugin="org.eclipse.ui"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime"/>
|
|
||||||
<import plugin="org.eclipse.jface.text"/>
|
|
||||||
<import plugin="org.eclipse.core.resources"/>
|
|
||||||
<import plugin="org.eclipse.ui.editors"/>
|
|
||||||
<import plugin="org.eclipse.ui.ide"/>
|
|
||||||
<import plugin="org.eclipse.gef"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.itjw.txviewer.database"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.itjw.txviewer.database.text"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.itjw.txviewer.ui"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<site>
|
|
||||||
<feature url="features/com.itjw.txviewer.feature_1.0.0.201206150709.jar" id="com.itjw.txviewer.feature" version="1.0.0.201206150709">
|
|
||||||
<category name="com.itjw.txviewer"/>
|
|
||||||
</feature>
|
|
||||||
<category-def name="com.itjw.txviewer" label="TxViewer"/>
|
|
||||||
</site>
|
|
|
@ -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-1.7"/>
|
||||||
|
<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="bin"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1 @@
|
||||||
|
/bin/
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?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>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.pde.PluginNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,7 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.7
|
|
@ -0,0 +1,3 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
pluginProject.extensions=false
|
||||||
|
resolve.requirebundle=false
|
|
@ -0,0 +1,14 @@
|
||||||
|
Manifest-Version: 1.0
|
||||||
|
Bundle-ManifestVersion: 2
|
||||||
|
Bundle-Name: Sqlite transaction database
|
||||||
|
Bundle-SymbolicName: com.minres.scviewer.database.sqlite
|
||||||
|
Bundle-Version: 1.0.0.qualifier
|
||||||
|
Bundle-Vendor: MINRES Technologies GmbH
|
||||||
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||||
|
Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0",
|
||||||
|
org.eclipse.equinox.util;bundle-version="1.0.500",
|
||||||
|
org.eclipse.equinox.ds;bundle-version="1.4.200",
|
||||||
|
org.eclipse.osgi.services;bundle-version="3.4.0"
|
||||||
|
Bundle-ClassPath: .,
|
||||||
|
sqlite-jdbc-3.8.7.jar
|
||||||
|
Service-Component: OSGI-INF/component.xml
|
|
@ -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="SQLiteDbFactory">
|
||||||
|
<implementation class="com.minres.scviewer.database.sqlite.SQLiteDbFactory"/>
|
||||||
|
<service>
|
||||||
|
<provide interface="com.minres.scviewer.database.ITransactionDbFactory"/>
|
||||||
|
</service>
|
||||||
|
</scr:component>
|
|
@ -0,0 +1,6 @@
|
||||||
|
source.. = src/
|
||||||
|
output.. = bin/
|
||||||
|
bin.includes = META-INF/,\
|
||||||
|
.,\
|
||||||
|
sqlite-jdbc-3.8.7.jar,\
|
||||||
|
OSGI-INF/
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.AssociationType;
|
||||||
|
import com.minres.scviewer.database.DataType;
|
||||||
|
import com.minres.scviewer.database.ITrAttribute;
|
||||||
|
import com.minres.scviewer.database.sqlite.tables.ScvTxAttribute;
|
||||||
|
|
||||||
|
public class Attribute implements ITrAttribute{
|
||||||
|
|
||||||
|
Transaction trTransaction;
|
||||||
|
ScvTxAttribute scvAttribute;
|
||||||
|
|
||||||
|
public Attribute(Transaction 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,39 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrGenerator;
|
||||||
|
import com.minres.scviewer.database.ITrStream;
|
||||||
|
import com.minres.scviewer.database.ITransaction;
|
||||||
|
import com.minres.scviewer.database.sqlite.tables.ScvGenerator;
|
||||||
|
|
||||||
|
public class Generator implements ITrGenerator {
|
||||||
|
|
||||||
|
private ITrStream stream;
|
||||||
|
private ScvGenerator scvGenerator;
|
||||||
|
public Generator(ITrStream stream, ScvGenerator scvGenerator) {
|
||||||
|
this.stream=stream;
|
||||||
|
this.scvGenerator=scvGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getId() {
|
||||||
|
return (long) scvGenerator.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrStream getStream() {
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return scvGenerator.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITransaction> getTransactions() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrHierNode;
|
||||||
|
|
||||||
|
public class HierNode implements ITrHierNode {
|
||||||
|
|
||||||
|
protected String name;
|
||||||
|
|
||||||
|
protected ArrayList<ITrHierNode> childs;
|
||||||
|
|
||||||
|
public HierNode(String name) {
|
||||||
|
this.name=name;
|
||||||
|
childs = new ArrayList<ITrHierNode>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPropertyChangeListener(PropertyChangeListener l) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePropertyChangeListener(PropertyChangeListener l) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getFullName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name=name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITrHierNode> getChildNodes() {
|
||||||
|
return childs;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrRelation;
|
||||||
|
import com.minres.scviewer.database.ITransaction;
|
||||||
|
import com.minres.scviewer.database.RelationType;
|
||||||
|
|
||||||
|
public class Relation implements ITrRelation {
|
||||||
|
|
||||||
|
RelationType relationType;
|
||||||
|
Transaction source, target;
|
||||||
|
|
||||||
|
public Relation(RelationType relationType, Transaction source, Transaction target) {
|
||||||
|
this.source = source;
|
||||||
|
this.target = target;
|
||||||
|
this.relationType = relationType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RelationType getRelationType() {
|
||||||
|
return relationType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITransaction getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITransaction getTarget() {
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
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 com.minres.scviewer.database.sqlite.db.IDatabase;
|
||||||
|
|
||||||
|
public class SQLiteDatabase implements IDatabase {
|
||||||
|
|
||||||
|
protected String dbFileName;
|
||||||
|
|
||||||
|
public SQLiteDatabase(String dbFileName) {
|
||||||
|
super();
|
||||||
|
this.dbFileName = dbFileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close(PreparedStatement preparedStatement, Connection connection) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,157 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import java.beans.IntrospectionException;
|
||||||
|
import java.io.File;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.EventTime;
|
||||||
|
import com.minres.scviewer.database.ITrAttribute;
|
||||||
|
import com.minres.scviewer.database.ITrDb;
|
||||||
|
import com.minres.scviewer.database.ITrHierNode;
|
||||||
|
import com.minres.scviewer.database.ITrStream;
|
||||||
|
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.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 SQLiteDb extends HierNode implements ITrDb {
|
||||||
|
|
||||||
|
protected IDatabase database;
|
||||||
|
|
||||||
|
protected List<ITrStream> streams;
|
||||||
|
|
||||||
|
long timeResolution=1;
|
||||||
|
|
||||||
|
private HashMap<String, RelationType> relationMap = new HashMap<String, RelationType>();
|
||||||
|
|
||||||
|
IDatabase getDb(){
|
||||||
|
return database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SQLiteDb() {
|
||||||
|
super("SQLiteDb");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventTime getMaxTime() {
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<ScvTxEvent>(ScvTxEvent.class,
|
||||||
|
database, "time = SELECT MAX(time) FROM ScvTxEvent");
|
||||||
|
try {
|
||||||
|
List<ScvTxEvent> event = handler.selectObjects();
|
||||||
|
if(event.size()>0)
|
||||||
|
return new EventTime(event.get(0).getTime(), "fs");
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return new EventTime(0L, "s");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITrStream> getAllStreams() {
|
||||||
|
if(streams==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvStream> handler = new SQLiteDatabaseSelectHandler<ScvStream>(ScvStream.class, database);
|
||||||
|
streams=new ArrayList<ITrStream>();
|
||||||
|
try {
|
||||||
|
for(ScvStream scvStream:handler.selectObjects()){
|
||||||
|
streams.add(new Stream(this, scvStream));
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return streams;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(File file) throws InputFormatException {
|
||||||
|
database=new SQLiteDatabase(file.getAbsolutePath());
|
||||||
|
SQLiteDatabaseSelectHandler<ScvSimProps> handler = new SQLiteDatabaseSelectHandler<ScvSimProps>(ScvSimProps.class, database);
|
||||||
|
try {
|
||||||
|
for(ScvSimProps scvSimProps:handler.selectObjects()){
|
||||||
|
timeResolution=scvSimProps.getTime_resolution();
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
addHierarchyNodes();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
database=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrStream getStreamByName(String name) {
|
||||||
|
for (ITrStream n : getAllStreams()) {
|
||||||
|
if (n.getName().equals(name)) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITrStream getStreamById(long id) {
|
||||||
|
for (ITrStream n : getAllStreams()) {
|
||||||
|
if (n.getId().equals(id)) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addHierarchyNodes() throws InputFormatException{
|
||||||
|
for(ITrStream stream:getAllStreams()){
|
||||||
|
String[] hier = stream.getFullName().split("\\./");
|
||||||
|
ITrHierNode node = this;
|
||||||
|
for(String name:hier){
|
||||||
|
ITrHierNode n1 = null;
|
||||||
|
for (ITrHierNode n : node.getChildNodes()) {
|
||||||
|
if (n.getName().equals(name)) {
|
||||||
|
n1=n;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(name == hier[hier.length-1]){ //leaf
|
||||||
|
if(n1!=null) {
|
||||||
|
if(n1 instanceof HierNode){
|
||||||
|
node.getChildNodes().remove(n1);
|
||||||
|
stream.getChildNodes().addAll(n1.getChildNodes());
|
||||||
|
} else {
|
||||||
|
throw new InputFormatException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stream.setName(name);
|
||||||
|
node.getChildNodes().add(stream);
|
||||||
|
node=stream;
|
||||||
|
} else { // intermediate
|
||||||
|
if(n1 != null) {
|
||||||
|
node=n1;
|
||||||
|
} else {
|
||||||
|
HierNode newNode = new HierNode(name);
|
||||||
|
node.getChildNodes().add(newNode);
|
||||||
|
node=newNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RelationType getRelationType(String relationName) {
|
||||||
|
if(relationMap.containsKey(relationName)) return relationMap.get(relationName);
|
||||||
|
RelationType type = new RelationType(relationName);
|
||||||
|
relationMap.put(relationName, type);
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.minres.scviewer.database.sqlite;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrDb;
|
||||||
|
import com.minres.scviewer.database.ITransactionDbFactory;
|
||||||
|
|
||||||
|
public class SQLiteDbFactory implements ITransactionDbFactory {
|
||||||
|
|
||||||
|
private byte[] x = "SQLite format 3".getBytes();
|
||||||
|
|
||||||
|
public SQLiteDbFactory() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrDb createDatabase(File file) {
|
||||||
|
try {
|
||||||
|
FileInputStream fis = new FileInputStream(file);
|
||||||
|
byte[] buffer = new byte[x.length];
|
||||||
|
int read = fis.read(buffer, 0, x.length);
|
||||||
|
fis.close();
|
||||||
|
if (read == x.length)
|
||||||
|
for (int i = 0; i < x.length; i++)
|
||||||
|
if (buffer[i] != x[i])
|
||||||
|
return null;
|
||||||
|
SQLiteDb db = new SQLiteDb();
|
||||||
|
db.load(file);
|
||||||
|
return db;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,107 @@
|
||||||
|
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.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrDb;
|
||||||
|
import com.minres.scviewer.database.ITrGenerator;
|
||||||
|
import com.minres.scviewer.database.ITrStream;
|
||||||
|
import com.minres.scviewer.database.ITransaction;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class Stream extends HierNode implements ITrStream {
|
||||||
|
|
||||||
|
private String fullName;
|
||||||
|
private SQLiteDb db;
|
||||||
|
private ScvStream scvStream;
|
||||||
|
private HashMap<Integer, Generator> generators;
|
||||||
|
|
||||||
|
private List<ITransaction> transactions;
|
||||||
|
|
||||||
|
public Stream(SQLiteDb trSQLiteDb, ScvStream scvStream) {
|
||||||
|
super(scvStream.getName());
|
||||||
|
fullName=scvStream.getName();
|
||||||
|
this.scvStream=scvStream;
|
||||||
|
db=trSQLiteDb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getId() {
|
||||||
|
return (long) scvStream.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getKind() {
|
||||||
|
return scvStream.getKind();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLiteDb getDb() {
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITrGenerator> getGenerators() {
|
||||||
|
if(generators==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvGenerator> handler = new SQLiteDatabaseSelectHandler<ScvGenerator>(
|
||||||
|
ScvGenerator.class, db.getDb(), "stream="+scvStream.getId());
|
||||||
|
generators=new HashMap<Integer, Generator>();
|
||||||
|
try {
|
||||||
|
for(ScvGenerator scvGenerator:handler.selectObjects()){
|
||||||
|
generators.put(scvGenerator.getId(), new Generator(this, scvGenerator));
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ArrayList<ITrGenerator>(generators.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITransaction> getTransactions() {
|
||||||
|
checkTransactions();
|
||||||
|
return transactions;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITransaction getTransactionById(long id) {
|
||||||
|
checkTransactions();
|
||||||
|
for(ITransaction trans:transactions){
|
||||||
|
if(trans.getId()==id)
|
||||||
|
return trans;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void checkTransactions() {
|
||||||
|
if(transactions==null){
|
||||||
|
if(generators==null) getGenerators();
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTx> handler = new SQLiteDatabaseSelectHandler<ScvTx>(ScvTx.class, db.getDb(),
|
||||||
|
"stream="+scvStream.getId());
|
||||||
|
transactions=new ArrayList<ITransaction>();
|
||||||
|
try {
|
||||||
|
for(ScvTx scvTx:handler.selectObjects()){
|
||||||
|
transactions.add(new Transaction(this, generators.get(scvTx.getGenerator()), scvTx));
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,154 @@
|
||||||
|
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.EventTime;
|
||||||
|
import com.minres.scviewer.database.ITrAttribute;
|
||||||
|
import com.minres.scviewer.database.ITrGenerator;
|
||||||
|
import com.minres.scviewer.database.ITrRelation;
|
||||||
|
import com.minres.scviewer.database.ITrStream;
|
||||||
|
import com.minres.scviewer.database.ITransaction;
|
||||||
|
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class Transaction implements ITransaction {
|
||||||
|
|
||||||
|
private Stream trStream;
|
||||||
|
private Generator trGenerator;
|
||||||
|
private ScvTx scvTx;
|
||||||
|
private List<ITrAttribute> attributes;
|
||||||
|
private EventTime begin, end;
|
||||||
|
private List<ITrRelation> incoming, outgoing;
|
||||||
|
|
||||||
|
public Transaction(Stream trStream, Generator trGenerator, ScvTx scvTx) {
|
||||||
|
this.trStream=trStream;
|
||||||
|
this.trGenerator=trGenerator;
|
||||||
|
this.scvTx=scvTx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getId() {
|
||||||
|
return (long) scvTx.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrStream getStream() {
|
||||||
|
return trStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrGenerator getGenerator() {
|
||||||
|
return trGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventTime getBeginTime() {
|
||||||
|
if(begin==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<ScvTxEvent>(ScvTxEvent.class,
|
||||||
|
trStream.getDb().getDb(), "tx="+scvTx.getId()+" AND type="+ AssociationType.BEGIN.ordinal());
|
||||||
|
try {
|
||||||
|
for(ScvTxEvent scvEvent:handler.selectObjects()){
|
||||||
|
begin= new EventTime(scvEvent.getTime()*trStream.getDb().timeResolution, "fs");
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return begin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventTime getEndTime() {
|
||||||
|
if(end==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxEvent> handler = new SQLiteDatabaseSelectHandler<ScvTxEvent>(ScvTxEvent.class,
|
||||||
|
trStream.getDb().getDb(), "tx="+scvTx.getId()+" AND type="+ AssociationType.END.ordinal());
|
||||||
|
try {
|
||||||
|
for(ScvTxEvent scvEvent:handler.selectObjects()){
|
||||||
|
end = new EventTime(scvEvent.getTime()*trStream.getDb().timeResolution, "fs");
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ITrAttribute> getAttributes() {
|
||||||
|
if(attributes==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxAttribute> handler = new SQLiteDatabaseSelectHandler<ScvTxAttribute>(
|
||||||
|
ScvTxAttribute.class, trStream.getDb().getDb(), "tx="+scvTx.getId());
|
||||||
|
try {
|
||||||
|
attributes = new ArrayList<ITrAttribute>();
|
||||||
|
for(ScvTxAttribute scvAttribute:handler.selectObjects()){
|
||||||
|
attributes.add(new Attribute(this, scvAttribute));
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<ITrRelation> getIncomingRelations() {
|
||||||
|
if(incoming==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxRelation> handler = new SQLiteDatabaseSelectHandler<ScvTxRelation>(
|
||||||
|
ScvTxRelation.class, trStream.getDb().getDb(), "sink="+scvTx.getId());
|
||||||
|
try {
|
||||||
|
incoming = new ArrayList<ITrRelation>();
|
||||||
|
for(ScvTxRelation scvRelation:handler.selectObjects()){
|
||||||
|
incoming.add(createRelation(scvRelation, false));
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return incoming;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<ITrRelation> getOutgoingRelations() {
|
||||||
|
if(outgoing==null){
|
||||||
|
SQLiteDatabaseSelectHandler<ScvTxRelation> handler = new SQLiteDatabaseSelectHandler<ScvTxRelation>(
|
||||||
|
ScvTxRelation.class, trStream.getDb().getDb(), "src="+scvTx.getId());
|
||||||
|
try {
|
||||||
|
outgoing = new ArrayList<ITrRelation>();
|
||||||
|
for(ScvTxRelation scvRelation:handler.selectObjects()){
|
||||||
|
outgoing.add(createRelation(scvRelation, true));
|
||||||
|
}
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return outgoing;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ITrRelation createRelation(ScvTxRelation rel, boolean outgoing) {
|
||||||
|
long otherId = outgoing?rel.getSink():rel.getSrc();
|
||||||
|
try {
|
||||||
|
List<ScvTx> scvTx=new SQLiteDatabaseSelectHandler<ScvTx>(ScvTx.class, trStream.getDb().getDb(), "id="+otherId).selectObjects();
|
||||||
|
assert(scvTx.size()==1);
|
||||||
|
ITrStream stream = trStream.getDb().getStreamById(scvTx.get(0).getStream());
|
||||||
|
Transaction that=(Transaction) stream.getTransactionById(otherId);
|
||||||
|
if(outgoing)
|
||||||
|
return new Relation(trStream.getDb().getRelationType(rel.getName()), this, that);
|
||||||
|
else
|
||||||
|
return new Relation(trStream.getDb().getRelationType(rel.getName()), that, this);
|
||||||
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
||||||
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
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,48 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 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);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
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,135 @@
|
||||||
|
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.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
|
||||||
|
*/
|
||||||
|
public List<T> selectObjects() throws SQLException,
|
||||||
|
SecurityException, IllegalArgumentException,
|
||||||
|
InstantiationException, IllegalAccessException,
|
||||||
|
IntrospectionException, InvocationTargetException {
|
||||||
|
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
private List<T> createObjects(ResultSet resultSet)
|
||||||
|
throws SecurityException, IllegalArgumentException,
|
||||||
|
SQLException, InstantiationException,
|
||||||
|
IllegalAccessException, IntrospectionException,
|
||||||
|
InvocationTargetException {
|
||||||
|
|
||||||
|
List<T> list = new ArrayList<T>();
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
|
||||||
|
T instance = type.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,49 @@
|
||||||
|
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,19 @@
|
||||||
|
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,31 @@
|
||||||
|
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,31 @@
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int id;
|
||||||
|
private int generator;
|
||||||
|
private int stream;
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
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,31 @@
|
||||||
|
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,32 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
|
<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>com.itjw.txviewer.database.text</name>
|
<name>com.minres.scviewer.database.text</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
@ -20,6 +20,11 @@
|
||||||
<arguments>
|
<arguments>
|
||||||
</arguments>
|
</arguments>
|
||||||
</buildCommand>
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.pde.ds.core.builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
</buildSpec>
|
</buildSpec>
|
||||||
<natures>
|
<natures>
|
||||||
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
|
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
|
|
@ -0,0 +1,7 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.7
|
|
@ -0,0 +1,15 @@
|
||||||
|
Manifest-Version: 1.0
|
||||||
|
Bundle-ManifestVersion: 2
|
||||||
|
Bundle-Name: Textual transaction database
|
||||||
|
Bundle-SymbolicName: com.minres.scviewer.database.text
|
||||||
|
Bundle-Version: 1.0.0.qualifier
|
||||||
|
Bundle-Vendor: MINRES Technologies GmbH
|
||||||
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||||
|
Import-Package: com.minres.scviewer.database,
|
||||||
|
org.osgi.framework;version="1.3.0"
|
||||||
|
Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0",
|
||||||
|
org.codehaus.groovy;bundle-version="1.8.6",
|
||||||
|
org.eclipse.equinox.util;bundle-version="1.0.500",
|
||||||
|
org.eclipse.equinox.ds;bundle-version="1.4.200",
|
||||||
|
org.eclipse.osgi.services;bundle-version="3.4.0"
|
||||||
|
Service-Component: OSGI-INF/component.xml
|
|
@ -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="TextDbFactory">
|
||||||
|
<implementation class="com.minres.scviewer.database.text.TextDbFactory"/>
|
||||||
|
<service>
|
||||||
|
<provide interface="com.minres.scviewer.database.ITransactionDbFactory"/>
|
||||||
|
</service>
|
||||||
|
</scr:component>
|
|
@ -0,0 +1,6 @@
|
||||||
|
output.. = bin/
|
||||||
|
bin.includes = META-INF/,\
|
||||||
|
.,\
|
||||||
|
component.xml,\
|
||||||
|
OSGI-INF/
|
||||||
|
source.. = src/
|
|
@ -8,20 +8,22 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrAttrType;
|
import com.minres.scviewer.database.AssociationType;
|
||||||
|
import com.minres.scviewer.database.DataType;
|
||||||
|
import com.minres.scviewer.database.ITrAttrType;
|
||||||
|
|
||||||
class TrAttrType implements ITrAttrType {
|
class AttrType implements ITrAttrType {
|
||||||
String name
|
String name
|
||||||
String dataType
|
DataType dataType
|
||||||
ITrAttrType.AttributeType type
|
AssociationType type
|
||||||
|
|
||||||
static TrAttrType getAttrType(String name, String dataType, ITrAttrType.AttributeType type){
|
static AttrType getAttrType(String name, DataType dataType, AssociationType type){
|
||||||
TrAttrTypeFactory.instance.getAttrType(name, dataType, type)
|
AttrTypeFactory.instance.getAttrType(name, dataType, type)
|
||||||
}
|
}
|
||||||
|
|
||||||
TrAttrType(String name, String dataType, ITrAttrType.AttributeType type){
|
AttrType(String name, DataType dataType, AssociationType type){
|
||||||
this.name=name
|
this.name=name
|
||||||
this.dataType=dataType
|
this.dataType=dataType
|
||||||
this.type=type
|
this.type=type
|
|
@ -8,27 +8,29 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrAttrType
|
import com.minres.scviewer.database.AssociationType;
|
||||||
import com.itjw.txviewer.database.ITrAttribute
|
import com.minres.scviewer.database.DataType
|
||||||
|
import com.minres.scviewer.database.ITrAttrType
|
||||||
|
import com.minres.scviewer.database.ITrAttribute
|
||||||
|
|
||||||
class TrAttrTypeFactory {
|
class AttrTypeFactory {
|
||||||
private static final instance = new TrAttrTypeFactory()
|
private static final instance = new AttrTypeFactory()
|
||||||
|
|
||||||
def attributes = [:]
|
def attributes = [:]
|
||||||
|
|
||||||
private TrAttrTypeFactory() {
|
private AttrTypeFactory() {
|
||||||
TrAttrTypeFactory.metaClass.constructor = {-> instance }
|
AttrTypeFactory.metaClass.constructor = {-> instance }
|
||||||
}
|
}
|
||||||
|
|
||||||
ITrAttrType getAttrType(String name, String dataType, ITrAttrType.AttributeType type){
|
ITrAttrType getAttrType(String name, DataType dataType, AssociationType type){
|
||||||
def key = name+":"+dataType
|
def key = name+":"+dataType.toString()
|
||||||
ITrAttrType res
|
ITrAttrType res
|
||||||
if(attributes.containsKey(key)){
|
if(attributes.containsKey(key)){
|
||||||
res=attributes[key]
|
res=attributes[key]
|
||||||
} else {
|
} else {
|
||||||
res=new TrAttrType(name, dataType, type)
|
res=new AttrType(name, dataType, type)
|
||||||
attributes[key]=res
|
attributes[key]=res
|
||||||
}
|
}
|
||||||
return res
|
return res
|
|
@ -8,22 +8,24 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrAttrType;
|
import com.minres.scviewer.database.AssociationType;
|
||||||
import com.itjw.txviewer.database.ITrAttribute
|
import com.minres.scviewer.database.DataType;
|
||||||
|
import com.minres.scviewer.database.ITrAttrType;
|
||||||
|
import com.minres.scviewer.database.ITrAttribute
|
||||||
|
|
||||||
class TrAttribute implements ITrAttribute{
|
class Attribute implements ITrAttribute{
|
||||||
|
|
||||||
TrAttrType attributeType
|
AttrType attributeType
|
||||||
|
|
||||||
def value
|
def value
|
||||||
|
|
||||||
TrAttribute(String name, String dataType, ITrAttrType.AttributeType type, value){
|
Attribute(String name, DataType dataType, AssociationType type, value){
|
||||||
attributeType = TrAttrTypeFactory.instance.getAttrType(name, dataType, type)
|
attributeType = AttrTypeFactory.instance.getAttrType(name, dataType, type)
|
||||||
switch(dataType){
|
switch(dataType){
|
||||||
case "STRING":
|
case DataType.STRING:
|
||||||
case "ENUMERATION":
|
case DataType.ENUMERATION:
|
||||||
this.value=value[1..-2]
|
this.value=value[1..-2]
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -31,11 +33,11 @@ class TrAttribute implements ITrAttribute{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TrAttribute(TrAttrType other){
|
Attribute(AttrType other){
|
||||||
attributeType=other
|
attributeType=other
|
||||||
}
|
}
|
||||||
|
|
||||||
TrAttribute(TrAttrType other, value){
|
Attribute(AttrType other, value){
|
||||||
this(other.name, other.dataType, other.type, value)
|
this(other.name, other.dataType, other.type, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,13 +47,13 @@ class TrAttribute implements ITrAttribute{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ITrAttrType.AttributeType getType() {
|
public AssociationType getType() {
|
||||||
return attributeType.getType();
|
attributeType.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDataType() {
|
public DataType getDataType() {
|
||||||
return attributeType.getDataType();
|
attributeType.dataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,20 +8,20 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrAttrType
|
import com.minres.scviewer.database.ITrAttrType
|
||||||
import com.itjw.txviewer.database.ITrAttribute;
|
import com.minres.scviewer.database.ITrAttribute;
|
||||||
import com.itjw.txviewer.database.ITrGenerator;
|
import com.minres.scviewer.database.ITrGenerator;
|
||||||
import com.itjw.txviewer.database.ITrStream;
|
import com.minres.scviewer.database.ITrStream;
|
||||||
import com.itjw.txviewer.database.ITransaction;
|
import com.minres.scviewer.database.ITransaction;
|
||||||
|
|
||||||
class TrGenerator implements ITrGenerator{
|
class Generator implements ITrGenerator{
|
||||||
Long id
|
Long id
|
||||||
TrStream stream
|
Stream stream
|
||||||
String name
|
String name
|
||||||
Boolean active = false
|
Boolean active = false
|
||||||
ArrayList<ITransaction> transactions=[]
|
ArrayList<ITransaction> transactions=[]
|
||||||
|
@ -31,7 +31,7 @@ class TrGenerator implements ITrGenerator{
|
||||||
ArrayList<ITrAttrType> end_attrs= []
|
ArrayList<ITrAttrType> end_attrs= []
|
||||||
int end_attrs_idx = 0
|
int end_attrs_idx = 0
|
||||||
|
|
||||||
TrGenerator(int id, TrStream stream, name){
|
Generator(int id, Stream stream, name){
|
||||||
this.id=id
|
this.id=id
|
||||||
this.stream=stream
|
this.stream=stream
|
||||||
this.name=name
|
this.name=name
|
|
@ -8,23 +8,23 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text;
|
package com.minres.scviewer.database.text;
|
||||||
|
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrHierNode;
|
import com.minres.scviewer.database.ITrHierNode;
|
||||||
|
|
||||||
class TrHierNode implements ITrHierNode {
|
class HierNode implements ITrHierNode {
|
||||||
|
|
||||||
String name
|
String name
|
||||||
def childs = []
|
def childs = []
|
||||||
|
|
||||||
public TrHierNode(){
|
public HierNode(){
|
||||||
}
|
}
|
||||||
|
|
||||||
public TrHierNode(String name){
|
public HierNode(String name){
|
||||||
this.name=name
|
this.name=name
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrRelation
|
import com.minres.scviewer.database.ITrRelation
|
||||||
import com.itjw.txviewer.database.ITransaction;
|
import com.minres.scviewer.database.ITransaction;
|
||||||
import com.itjw.txviewer.database.RelationType;
|
import com.minres.scviewer.database.RelationType;
|
||||||
|
|
||||||
class TrRelation implements ITrRelation {
|
class Relation implements ITrRelation {
|
||||||
Transaction source
|
Transaction source
|
||||||
|
|
||||||
Transaction target
|
Transaction target
|
||||||
|
@ -12,7 +12,7 @@ class TrRelation implements ITrRelation {
|
||||||
RelationType relationType
|
RelationType relationType
|
||||||
|
|
||||||
|
|
||||||
public TrRelation(RelationType relationType, Transaction source, Transaction target) {
|
public Relation(RelationType relationType, Transaction source, Transaction target) {
|
||||||
this.source = source;
|
this.source = source;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
this.relationType = relationType;
|
this.relationType = relationType;
|
|
@ -8,25 +8,23 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrDb
|
import com.minres.scviewer.database.ITrDb
|
||||||
import com.itjw.txviewer.database.ITrGenerator
|
import com.minres.scviewer.database.ITrGenerator
|
||||||
import com.itjw.txviewer.database.ITrHierNode
|
import com.minres.scviewer.database.ITrHierNode
|
||||||
import com.itjw.txviewer.database.ITrStream
|
import com.minres.scviewer.database.ITrStream
|
||||||
import com.itjw.txviewer.database.ITransaction
|
import com.minres.scviewer.database.ITransaction
|
||||||
|
|
||||||
class TrStream extends TrHierNode implements ITrStream {
|
class Stream extends HierNode implements ITrStream {
|
||||||
|
|
||||||
Long id;
|
Long id;
|
||||||
|
|
||||||
TrTextDb database
|
TextDb database
|
||||||
|
|
||||||
String name;
|
|
||||||
|
|
||||||
String fullName;
|
String fullName;
|
||||||
|
|
||||||
|
@ -34,21 +32,13 @@ class TrStream extends TrHierNode implements ITrStream {
|
||||||
|
|
||||||
def generators = [];
|
def generators = [];
|
||||||
|
|
||||||
def childs = []
|
|
||||||
|
|
||||||
private allTransactions;
|
private allTransactions;
|
||||||
|
|
||||||
public TrHierNode(String name){
|
public TrHierNode(String name){
|
||||||
this.name=name
|
this.name=name
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
Stream(int id, TextDb db, String name, String kind){
|
||||||
public List<ITrHierNode> getChildNodes() {
|
|
||||||
return childs.sort{it.name};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TrStream(int id, TrTextDb db, String name, String kind){
|
|
||||||
this.id=id
|
this.id=id
|
||||||
this.database=db
|
this.database=db
|
||||||
this.name=name
|
this.name=name
|
||||||
|
@ -65,7 +55,7 @@ class TrStream extends TrHierNode implements ITrStream {
|
||||||
return database;
|
return database;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// FIXME: maybe need to be somewhere else
|
||||||
public int getMaxConcurrrentTx() {
|
public int getMaxConcurrrentTx() {
|
||||||
def rowendtime = [0]
|
def rowendtime = [0]
|
||||||
getTransactions().each{Transaction tx ->
|
getTransactions().each{Transaction tx ->
|
||||||
|
@ -86,4 +76,11 @@ class TrStream extends TrHierNode implements ITrStream {
|
||||||
allTransactions=generators.transactions.flatten().sort{it.beginTime.value}
|
allTransactions=generators.transactions.flatten().sort{it.beginTime.value}
|
||||||
return allTransactions
|
return allTransactions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITransaction getTransactionById(long id) {
|
||||||
|
if(!allTransactions)
|
||||||
|
allTransactions=generators.transactions.flatten().sort{it.beginTime.value}
|
||||||
|
allTransactions.find{it.id==id}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text;
|
package com.minres.scviewer.database.text;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -17,17 +17,19 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrAttrType;
|
import com.minres.scviewer.database.AssociationType;
|
||||||
import com.itjw.txviewer.database.ITrAttribute;
|
import com.minres.scviewer.database.DataType;
|
||||||
import com.itjw.txviewer.database.ITrDb;
|
import com.minres.scviewer.database.ITrAttrType;
|
||||||
import com.itjw.txviewer.database.ITrGenerator;
|
import com.minres.scviewer.database.ITrAttribute;
|
||||||
import com.itjw.txviewer.database.ITrHierNode;
|
import com.minres.scviewer.database.ITrDb;
|
||||||
import com.itjw.txviewer.database.ITrStream;
|
import com.minres.scviewer.database.ITrGenerator;
|
||||||
import com.itjw.txviewer.database.InputFormatException;
|
import com.minres.scviewer.database.ITrHierNode;
|
||||||
import com.itjw.txviewer.database.EventTime
|
import com.minres.scviewer.database.ITrStream;
|
||||||
import com.itjw.txviewer.database.RelationType
|
import com.minres.scviewer.database.InputFormatException;
|
||||||
|
import com.minres.scviewer.database.EventTime
|
||||||
|
import com.minres.scviewer.database.RelationType
|
||||||
|
|
||||||
public class TrTextDb extends TrHierNode implements ITrDb{
|
public class TextDb extends HierNode implements ITrDb{
|
||||||
|
|
||||||
private EventTime maxTime;
|
private EventTime maxTime;
|
||||||
|
|
||||||
|
@ -58,7 +60,7 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
|
|
||||||
public Map<Long, ITrGenerator> getGeneratorsById() {
|
public Map<Long, ITrGenerator> getGeneratorsById() {
|
||||||
TreeMap<Long, ITrGenerator> res = new TreeMap<Long, ITrGenerator>();
|
TreeMap<Long, ITrGenerator> res = new TreeMap<Long, ITrGenerator>();
|
||||||
streams.each{TrStream stream -> stream.generators.each{res.put(it.id, id)} }
|
streams.each{Stream stream -> stream.generators.each{res.put(it.id, id)} }
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,21 +69,16 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
maxTime=new EventTime(0, "ns")
|
maxTime=new EventTime(0, "ns")
|
||||||
}
|
}
|
||||||
|
|
||||||
void load(InputStream inp) throws InputFormatException {
|
void load(File file) throws InputFormatException {
|
||||||
parseInput(inp)
|
this.name = file.name;
|
||||||
}
|
|
||||||
|
|
||||||
void parseFromTextFile(filename){
|
|
||||||
def file = new File(filename);
|
|
||||||
this.databaseName = filname;
|
|
||||||
parseInput(file)
|
parseInput(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
private def parseInput(input){
|
private def parseInput(File input){
|
||||||
def streamsById = [:]
|
def streamsById = [:]
|
||||||
def generatorsById = [:]
|
def generatorsById = [:]
|
||||||
def transactionsById = [:]
|
def transactionsById = [:]
|
||||||
TrGenerator generator
|
Generator generator
|
||||||
Transaction transaction
|
Transaction transaction
|
||||||
boolean endTransaction=false
|
boolean endTransaction=false
|
||||||
def matcher
|
def matcher
|
||||||
|
@ -94,19 +91,19 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
case "end_attribute":
|
case "end_attribute":
|
||||||
if ((matcher = line =~ /^scv_tr_stream\s+\(ID (\d+),\s+name\s+"([^"]+)",\s+kind\s+"([^"]+)"\)$/)) {
|
if ((matcher = line =~ /^scv_tr_stream\s+\(ID (\d+),\s+name\s+"([^"]+)",\s+kind\s+"([^"]+)"\)$/)) {
|
||||||
def id = Integer.parseInt(matcher[0][1])
|
def id = Integer.parseInt(matcher[0][1])
|
||||||
def stream = new TrStream(id, this, matcher[0][2], matcher[0][3])
|
def stream = new Stream(id, this, matcher[0][2], matcher[0][3])
|
||||||
streams<<stream
|
streams<<stream
|
||||||
streamsById[id]=stream
|
streamsById[id]=stream
|
||||||
} else if ((matcher = line =~ /^scv_tr_generator\s+\(ID\s+(\d+),\s+name\s+"([^"]+)",\s+scv_tr_stream\s+(\d+),$/)) {
|
} else if ((matcher = line =~ /^scv_tr_generator\s+\(ID\s+(\d+),\s+name\s+"([^"]+)",\s+scv_tr_stream\s+(\d+),$/)) {
|
||||||
def id = Integer.parseInt(matcher[0][1])
|
def id = Integer.parseInt(matcher[0][1])
|
||||||
ITrStream stream=streamsById[Integer.parseInt(matcher[0][3])]
|
ITrStream stream=streamsById[Integer.parseInt(matcher[0][3])]
|
||||||
generator=new TrGenerator(id, stream, matcher[0][2])
|
generator=new Generator(id, stream, matcher[0][2])
|
||||||
stream.generators<<generator
|
stream.generators<<generator
|
||||||
generatorsById[id]=generator
|
generatorsById[id]=generator
|
||||||
} else if ((matcher = line =~ /^begin_attribute \(ID (\d+), name "([^"]+)", type "([^"]+)"\)$/)) {
|
} else if ((matcher = line =~ /^begin_attribute \(ID (\d+), name "([^"]+)", type "([^"]+)"\)$/)) {
|
||||||
generator.begin_attrs << TrAttrType.getAttrType(matcher[0][2], matcher[0][3], ITrAttrType.AttributeType.BEGIN)
|
generator.begin_attrs << AttrType.getAttrType(matcher[0][2], DataType.valueOf(matcher[0][3]), AssociationType.BEGIN)
|
||||||
} else if ((matcher = line =~ /^end_attribute \(ID (\d+), name "([^"]+)", type "([^"]+)"\)$/)) {
|
} else if ((matcher = line =~ /^end_attribute \(ID (\d+), name "([^"]+)", type "([^"]+)"\)$/)) {
|
||||||
generator.end_attrs << TrAttrType.getAttrType(matcher[0][2], matcher[0][3], ITrAttrType.AttributeType.END)
|
generator.end_attrs << AttrType.getAttrType(matcher[0][2], DataType.valueOf(matcher[0][3]), AssociationType.END)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ")":
|
case ")":
|
||||||
|
@ -114,7 +111,7 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
break
|
break
|
||||||
case "tx_begin"://matcher = line =~ /^tx_begin\s+(\d+)\s+(\d+)\s+(\d+)\s+([munpf]?s)/
|
case "tx_begin"://matcher = line =~ /^tx_begin\s+(\d+)\s+(\d+)\s+(\d+)\s+([munpf]?s)/
|
||||||
def id = Integer.parseInt(tokens[1])
|
def id = Integer.parseInt(tokens[1])
|
||||||
TrGenerator gen=generatorsById[Integer.parseInt(tokens[2])]
|
Generator gen=generatorsById[Integer.parseInt(tokens[2])]
|
||||||
transaction = new Transaction(id, gen.stream, gen, new EventTime(Integer.parseInt(tokens[3]), tokens[4]))
|
transaction = new Transaction(id, gen.stream, gen, new EventTime(Integer.parseInt(tokens[3]), tokens[4]))
|
||||||
gen.transactions << transaction
|
gen.transactions << transaction
|
||||||
transactionsById[id]= transaction
|
transactionsById[id]= transaction
|
||||||
|
@ -133,13 +130,13 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
break
|
break
|
||||||
case "tx_record_attribute"://matcher = line =~ /^tx_record_attribute\s+(\d+)\s+"([^"]+)"\s+(\S+)\s*=\s*(.+)$/
|
case "tx_record_attribute"://matcher = line =~ /^tx_record_attribute\s+(\d+)\s+"([^"]+)"\s+(\S+)\s*=\s*(.+)$/
|
||||||
def id = Integer.parseInt(tokens[1])
|
def id = Integer.parseInt(tokens[1])
|
||||||
transactionsById[id].attributes<<new TrAttribute(tokens[2][1..-2], tokens[3], ITrAttrType.AttributeType.UNSPECIFIED, tokens[5..-1].join(' '))
|
transactionsById[id].attributes<<new Attribute(tokens[2][1..-2], DataType.valueOf(tokens[3]), AssociationType.RECORD, tokens[5..-1].join(' '))
|
||||||
break
|
break
|
||||||
case "a"://matcher = line =~ /^a\s+(.+)$/
|
case "a"://matcher = line =~ /^a\s+(.+)$/
|
||||||
if(endTransaction){
|
if(endTransaction){
|
||||||
transaction.attributes << new TrAttribute(transaction.generator.end_attrs[0], tokens[1])
|
transaction.attributes << new Attribute(transaction.generator.end_attrs[0], tokens[1])
|
||||||
} else {
|
} else {
|
||||||
transaction.attributes << new TrAttribute(transaction.generator.begin_attrs[0], tokens[1])
|
transaction.attributes << new Attribute(transaction.generator.begin_attrs[0], tokens[1])
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case "tx_relation"://matcher = line =~ /^tx_relation\s+\"(\S+)\"\s+(\d+)\s+(\d+)$/
|
case "tx_relation"://matcher = line =~ /^tx_relation\s+\"(\S+)\"\s+(\d+)\s+(\d+)$/
|
||||||
|
@ -147,7 +144,7 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
Transaction tr2= transactionsById[Integer.parseInt(tokens[3])]
|
Transaction tr2= transactionsById[Integer.parseInt(tokens[3])]
|
||||||
def relType=tokens[1][1..-2]
|
def relType=tokens[1][1..-2]
|
||||||
if(!relationTypes.containsKey(relType)) relationTypes[relType]=new RelationType(relType)
|
if(!relationTypes.containsKey(relType)) relationTypes[relType]=new RelationType(relType)
|
||||||
def rel = new TrRelation(relationTypes[relType], tr1, tr2)
|
def rel = new Relation(relationTypes[relType], tr1, tr2)
|
||||||
tr1.outgoingRelations<<rel
|
tr1.outgoingRelations<<rel
|
||||||
tr2.incomingRelations<<rel
|
tr2.incomingRelations<<rel
|
||||||
break
|
break
|
||||||
|
@ -160,14 +157,14 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
}
|
}
|
||||||
|
|
||||||
def addHierarchyNodes(){
|
def addHierarchyNodes(){
|
||||||
streams.each{ TrStream stream->
|
streams.each{ Stream stream->
|
||||||
def hier = stream.fullName.split(/\./)
|
def hier = stream.fullName.split(/\./)
|
||||||
ITrHierNode node = this
|
ITrHierNode node = this
|
||||||
hier.each { name ->
|
hier.each { name ->
|
||||||
def n1 = node.childNodes.find{it.name == name}
|
def n1 = node.childNodes.find{it.name == name}
|
||||||
if(name == hier[-1]){ //leaf
|
if(name == hier[-1]){ //leaf
|
||||||
if(n1!=null) {
|
if(n1!=null) {
|
||||||
if(n1 instanceof TrHierNode){
|
if(n1 instanceof HierNode){
|
||||||
node.childNodes.remove(n1)
|
node.childNodes.remove(n1)
|
||||||
stream.childNodes.addAll(n1.childNodes)
|
stream.childNodes.addAll(n1.childNodes)
|
||||||
} else {
|
} else {
|
||||||
|
@ -181,7 +178,7 @@ public class TrTextDb extends TrHierNode implements ITrDb{
|
||||||
if(n1 != null) {
|
if(n1 != null) {
|
||||||
node=n1
|
node=n1
|
||||||
} else {
|
} else {
|
||||||
TrHierNode newNode = new TrHierNode(name)
|
HierNode newNode = new HierNode(name)
|
||||||
node.childNodes<<newNode
|
node.childNodes<<newNode
|
||||||
node=newNode
|
node=newNode
|
||||||
}
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITrDb
|
||||||
|
import com.minres.scviewer.database.ITransactionDbFactory;
|
||||||
|
|
||||||
|
class TextDbFactory implements ITransactionDbFactory {
|
||||||
|
|
||||||
|
byte[] x = "scv_tr_stream".bytes
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITrDb createDatabase(File file) {
|
||||||
|
try {
|
||||||
|
FileInputStream fis = new FileInputStream(file);
|
||||||
|
byte[] buffer = new byte[x.size()];
|
||||||
|
def read = fis.read(buffer, 0, x.size());
|
||||||
|
fis.close();
|
||||||
|
if(read==x.size())
|
||||||
|
for(int i=0; i<x.size(); i++)
|
||||||
|
if(buffer[i]!=x[i]) return null;
|
||||||
|
def db = new TextDb();
|
||||||
|
db.load(file)
|
||||||
|
return db
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -8,20 +8,20 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database.text
|
package com.minres.scviewer.database.text
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set
|
import java.util.Set
|
||||||
|
|
||||||
import com.itjw.txviewer.database.*
|
import com.minres.scviewer.database.*
|
||||||
|
|
||||||
class Transaction implements ITransaction {
|
class Transaction implements ITransaction {
|
||||||
|
|
||||||
Long id
|
Long id
|
||||||
|
|
||||||
TrGenerator generator
|
Generator generator
|
||||||
|
|
||||||
TrStream stream
|
Stream stream
|
||||||
|
|
||||||
EventTime beginTime
|
EventTime beginTime
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ class Transaction implements ITransaction {
|
||||||
|
|
||||||
def outgoingRelations =[]
|
def outgoingRelations =[]
|
||||||
|
|
||||||
Transaction(int id, TrStream stream, TrGenerator generator, EventTime begin){
|
Transaction(int id, Stream stream, Generator generator, EventTime begin){
|
||||||
this.id=id
|
this.id=id
|
||||||
this.generator=generator
|
this.generator=generator
|
||||||
this.beginTime=begin
|
this.beginTime=begin
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>com.itjw.txviewer.database</name>
|
<name>com.minres.scviewer.database</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
|
@ -0,0 +1,7 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.7
|
|
@ -1,9 +1,8 @@
|
||||||
Manifest-Version: 1.0
|
Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Transaction Database
|
Bundle-Name: Transaction Database
|
||||||
Bundle-SymbolicName: com.itjw.txviewer.database
|
Bundle-SymbolicName: com.minres.scviewer.database
|
||||||
Bundle-Version: 1.0.0.qualifier
|
Bundle-Version: 1.0.0.qualifier
|
||||||
Bundle-Vendor: ITJW
|
Bundle-Vendor: MINRES Technologies GmbH
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||||
Bundle-ActivationPolicy: lazy
|
Export-Package: com.minres.scviewer.database
|
||||||
Export-Package: com.itjw.txviewer.database
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
|
public enum AssociationType {BEGIN, RECORD, END}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.minres.scviewer.database;
|
||||||
|
public enum DataType {
|
||||||
|
BOOLEAN, // bool
|
||||||
|
ENUMERATION, // enum
|
||||||
|
INTEGER, // char, short, int, long, long long, sc_int, sc_bigint
|
||||||
|
UNSIGNED, // unsigned { char, short, int, long, long long }, sc_uint, sc_biguint
|
||||||
|
FLOATING_POINT_NUMBER, // float, double
|
||||||
|
BIT_VECTOR, // sc_bit, sc_bv
|
||||||
|
LOGIC_VECTOR, // sc_logic, sc_lv
|
||||||
|
FIXED_POINT_INTEGER, // sc_fixed
|
||||||
|
UNSIGNED_FIXED_POINT_INTEGER, // sc_ufixed
|
||||||
|
RECORD, // struct/class
|
||||||
|
POINTER, // T*
|
||||||
|
ARRAY, // T[N]
|
||||||
|
STRING // string, std::string
|
||||||
|
};
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public class EventTime implements Comparable<EventTime>{
|
public class EventTime implements Comparable<EventTime>{
|
||||||
|
|
|
@ -8,11 +8,10 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public interface ITrAttrType {
|
public interface ITrAttrType {
|
||||||
enum AttributeType {UNSPECIFIED, BEGIN, END};
|
|
||||||
public String getName();
|
public String getName();
|
||||||
public String getDataType();
|
public DataType getDataType();
|
||||||
public AttributeType getType();
|
public AssociationType getType();
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public interface ITrAttribute extends ITrAttrType {
|
public interface ITrAttribute extends ITrAttrType {
|
||||||
public Object getValue();
|
public Object getValue();
|
|
@ -8,8 +8,9 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -22,7 +23,7 @@ public interface ITrDb extends ITrHierNode {
|
||||||
|
|
||||||
public List<ITrStream> getAllStreams();
|
public List<ITrStream> getAllStreams();
|
||||||
|
|
||||||
public void load(InputStream inp) throws InputFormatException;
|
public void load(File inp) throws InputFormatException;
|
||||||
|
|
||||||
public void clear();
|
public void clear();
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
|
@ -1,4 +1,4 @@
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public interface ITrRelation {
|
public interface ITrRelation {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -24,6 +24,6 @@ public interface ITrStream extends ITrHierNode {
|
||||||
|
|
||||||
public List<ITransaction> getTransactions();
|
public List<ITransaction> getTransactions();
|
||||||
|
|
||||||
public int getMaxConcurrrentTx();
|
public ITransaction getTransactionById(long id);
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public interface ITransactionDbFactory {
|
||||||
|
|
||||||
|
ITrDb createDatabase(File file);
|
||||||
|
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public class InputFormatException extends Exception {
|
public class InputFormatException extends Exception {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.database;
|
package com.minres.scviewer.database;
|
||||||
|
|
||||||
public class RelationType {
|
public class RelationType {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>com.itjw.txviewer.feature</name>
|
<name>com.minres.scviewer.feature</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
|
@ -0,0 +1,102 @@
|
||||||
|
featureName=SystemC simulation results viewer
|
||||||
|
providerName=MINRES Technologies GmbH
|
||||||
|
updateSiteName=SC Viewer Updates
|
||||||
|
description=SystemC simulation results viewer dependencies
|
||||||
|
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.feature"
|
||||||
|
label="%featureName"
|
||||||
|
version="1.0.0.qualifier"
|
||||||
|
provider-name="%providerName">
|
||||||
|
|
||||||
|
<description>
|
||||||
|
A viewer for SystemC Verification Library transactions. It supports
|
||||||
|
a SQLite based recording as well as the built-in text base recording.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
Copyright (c) 2015 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.codehaus.groovy" version="1.8.6" match="greaterOrEqual"/>
|
||||||
|
<import plugin="org.eclipse.equinox.util" version="1.0.500" match="greaterOrEqual"/>
|
||||||
|
<import plugin="org.eclipse.equinox.ds" version="1.4.200" match="greaterOrEqual"/>
|
||||||
|
<import plugin="org.eclipse.osgi.services" version="3.4.0" match="greaterOrEqual"/>
|
||||||
|
<import plugin="org.eclipse.osgi"/>
|
||||||
|
<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.ui.views"/>
|
||||||
|
<import plugin="com.minres.scviewer.database" version="1.0.0" match="greaterOrEqual"/>
|
||||||
|
</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.ui"
|
||||||
|
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"/>
|
||||||
|
|
||||||
|
</feature>
|
|
@ -1,8 +1,9 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="lib" path="swing2swt.jar"/>
|
<classpathentry kind="lib" path="swing2swt.jar"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>com.itjw.txviewer.ui</name>
|
<name>com.minres.scviewer.ui</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
@ -20,6 +20,11 @@
|
||||||
<arguments>
|
<arguments>
|
||||||
</arguments>
|
</arguments>
|
||||||
</buildCommand>
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.pde.ds.core.builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
</buildSpec>
|
</buildSpec>
|
||||||
<natures>
|
<natures>
|
||||||
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
|
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
|
|
@ -0,0 +1,7 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.7
|
|
@ -1,23 +1,23 @@
|
||||||
Manifest-Version: 1.0
|
Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Graph
|
Bundle-Name: Graph
|
||||||
Bundle-SymbolicName: com.itjw.txviewer.ui;singleton:=true
|
Bundle-SymbolicName: com.minres.scviewer.ui;singleton:=true
|
||||||
Bundle-Version: 1.0.0.qualifier
|
Bundle-Version: 1.0.0.qualifier
|
||||||
Bundle-Activator: com.itjw.txviewer.ui.TxEditorPlugin
|
Bundle-Activator: com.minres.scviewer.ui.TxEditorPlugin
|
||||||
Bundle-Vendor: ITJW
|
Bundle-Vendor: ITJW
|
||||||
Require-Bundle: org.eclipse.ui,
|
Require-Bundle: org.eclipse.core.runtime,
|
||||||
org.eclipse.core.runtime,
|
|
||||||
org.eclipse.jface.text,
|
|
||||||
org.eclipse.core.resources,
|
org.eclipse.core.resources,
|
||||||
|
org.eclipse.jface.text,
|
||||||
|
org.eclipse.ui,
|
||||||
org.eclipse.ui.editors,
|
org.eclipse.ui.editors,
|
||||||
org.eclipse.ui.ide,
|
org.eclipse.ui.ide,
|
||||||
org.eclipse.gef,
|
|
||||||
org.eclipse.ui.views.properties.tabbed,
|
org.eclipse.ui.views.properties.tabbed,
|
||||||
org.eclipse.swt,
|
org.eclipse.swt,
|
||||||
org.eclipse.osgi
|
org.eclipse.osgi,
|
||||||
|
com.minres.scviewer.database;bundle-version="1.0.0"
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Import-Package: com.itjw.txviewer.database,
|
Import-Package: org.eclipse.ui.views.contentoutline
|
||||||
org.eclipse.ui.views.contentoutline
|
|
||||||
Bundle-ClassPath: .,
|
Bundle-ClassPath: .,
|
||||||
swing2swt.jar
|
swing2swt.jar
|
||||||
|
Service-Component: OSGI-INF/component.xml
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.minres.scviewer.ui">
|
||||||
|
<implementation class="com.minres.scviewer.ui.TxEditorPlugin"/>
|
||||||
|
<reference bind="setTransactionDbFactory" cardinality="0..n" interface="com.minres.scviewer.database.ITransactionDbFactory" name="ITransactionDbFactory" policy="dynamic" unbind="unsetTransactionDbFactory"/>
|
||||||
|
</scr:component>
|
|
@ -1,4 +1,3 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
output.. = bin/
|
||||||
bin.includes = plugin.xml,\
|
bin.includes = plugin.xml,\
|
||||||
META-INF/,\
|
META-INF/,\
|
||||||
|
@ -6,4 +5,6 @@ bin.includes = plugin.xml,\
|
||||||
icons/,\
|
icons/,\
|
||||||
contexts.xml,\
|
contexts.xml,\
|
||||||
res/,\
|
res/,\
|
||||||
swing2swt.jar
|
swing2swt.jar,\
|
||||||
|
OSGI-INF/
|
||||||
|
source.. = src/
|
Before Width: | Height: | Size: 983 B After Width: | Height: | Size: 983 B |
|
@ -6,7 +6,7 @@
|
||||||
point="org.eclipse.ui.views">
|
point="org.eclipse.ui.views">
|
||||||
<category
|
<category
|
||||||
name="TxViewer"
|
name="TxViewer"
|
||||||
id="com.itjw.txviewer.ui">
|
id="com.minres.scviewer.ui">
|
||||||
</category>
|
</category>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
@ -18,18 +18,18 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.editors">
|
point="org.eclipse.ui.editors">
|
||||||
<editor
|
<editor
|
||||||
class="com.itjw.txviewer.ui.TxEditorPart"
|
class="com.minres.scviewer.ui.TxEditorPart"
|
||||||
contributorClass="com.itjw.txviewer.ui.TxEditorActionBarContributor"
|
contributorClass="com.minres.scviewer.ui.TxEditorActionBarContributor"
|
||||||
extensions="txdb"
|
extensions="txdb"
|
||||||
icon="icons/sample.gif"
|
icon="icons/sample.gif"
|
||||||
id="com.itjw.txviewer.ui.TxEditorPart"
|
id="com.minres.scviewer.ui.TxEditorPart"
|
||||||
name="Wave Viewer">
|
name="Wave Viewer">
|
||||||
</editor>
|
</editor>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
|
point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
|
||||||
<propertyContributor
|
<propertyContributor
|
||||||
contributorId="com.itjw.txviewer.ui.TxEditorPart">
|
contributorId="com.minres.scviewer.ui.TxEditorPart">
|
||||||
<propertyCategory
|
<propertyCategory
|
||||||
category="Transaction"></propertyCategory>
|
category="Transaction"></propertyCategory>
|
||||||
</propertyContributor>
|
</propertyContributor>
|
||||||
|
@ -37,22 +37,22 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
|
point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
|
||||||
<propertyTabs
|
<propertyTabs
|
||||||
contributorId="com.itjw.txviewer.ui.TxEditorPart">
|
contributorId="com.minres.scviewer.ui.TxEditorPart">
|
||||||
<propertyTab
|
<propertyTab
|
||||||
category="Transaction"
|
category="Transaction"
|
||||||
id="com.itjw.txviewer.ui.propertyTabTransaction"
|
id="com.minres.scviewer.ui.propertyTabTransaction"
|
||||||
label="Transaction">
|
label="Transaction">
|
||||||
</propertyTab>
|
</propertyTab>
|
||||||
<propertyTab
|
<propertyTab
|
||||||
afterTab="com.itjw.txviewer.ui.propertyTabTransaction"
|
afterTab="com.minres.scviewer.ui.propertyTabTransaction"
|
||||||
category="Transaction"
|
category="Transaction"
|
||||||
id="com.itjw.txviewer.ui.propertyTabAttributes"
|
id="com.minres.scviewer.ui.propertyTabAttributes"
|
||||||
label="Attributes">
|
label="Attributes">
|
||||||
</propertyTab>
|
</propertyTab>
|
||||||
<propertyTab
|
<propertyTab
|
||||||
afterTab="com.itjw.txviewer.ui.propertyTabAttributes"
|
afterTab="com.minres.scviewer.ui.propertyTabAttributes"
|
||||||
category="Transaction"
|
category="Transaction"
|
||||||
id="com.itjw.txviewer.ui.propertyTabRelated"
|
id="com.minres.scviewer.ui.propertyTabRelated"
|
||||||
label="Related Tx">
|
label="Related Tx">
|
||||||
</propertyTab>
|
</propertyTab>
|
||||||
</propertyTabs>
|
</propertyTabs>
|
||||||
|
@ -60,31 +60,31 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.views.properties.tabbed.propertySections">
|
point="org.eclipse.ui.views.properties.tabbed.propertySections">
|
||||||
<propertySections
|
<propertySections
|
||||||
contributorId="com.itjw.txviewer.ui.TxEditorPart">
|
contributorId="com.minres.scviewer.ui.TxEditorPart">
|
||||||
<propertySection
|
<propertySection
|
||||||
class="org.eclipse.ui.views.properties.tabbed.AdvancedPropertySection"
|
class="org.eclipse.ui.views.properties.tabbed.AdvancedPropertySection"
|
||||||
id="com.itjw.txviewer.ui.propertySectionAll"
|
id="com.minres.scviewer.ui.propertySectionAll"
|
||||||
tab="com.itjw.txviewer.ui.propertyTabTransaction">
|
tab="com.minres.scviewer.ui.propertyTabTransaction">
|
||||||
<input
|
<input
|
||||||
type="com.itjw.txviewer.database.ITransaction">
|
type="com.minres.scviewer.database.ITransaction">
|
||||||
</input>
|
</input>
|
||||||
</propertySection>
|
</propertySection>
|
||||||
<propertySection
|
<propertySection
|
||||||
afterSection="com.itjw.txviewer.ui.propertySectionAll"
|
afterSection="com.minres.scviewer.ui.propertySectionAll"
|
||||||
class="com.itjw.txviewer.ui.views.sections.AttributeProperty"
|
class="com.minres.scviewer.ui.views.sections.AttributeProperty"
|
||||||
id="com.itjw.txviewer.ui.propertySectionAttributes"
|
id="com.minres.scviewer.ui.propertySectionAttributes"
|
||||||
tab="com.itjw.txviewer.ui.propertyTabAttributes">
|
tab="com.minres.scviewer.ui.propertyTabAttributes">
|
||||||
<input
|
<input
|
||||||
type="com.itjw.txviewer.database.ITransaction">
|
type="com.minres.scviewer.database.ITransaction">
|
||||||
</input>
|
</input>
|
||||||
</propertySection>
|
</propertySection>
|
||||||
<propertySection
|
<propertySection
|
||||||
afterSection="com.itjw.txviewer.ui.propertySectionAttributes"
|
afterSection="com.minres.scviewer.ui.propertySectionAttributes"
|
||||||
class="com.itjw.txviewer.ui.views.sections.RelatedProperty"
|
class="com.minres.scviewer.ui.views.sections.RelatedProperty"
|
||||||
id="com.itjw.txviewer.ui.propertySectionRelated"
|
id="com.minres.scviewer.ui.propertySectionRelated"
|
||||||
tab="com.itjw.txviewer.ui.propertyTabRelated">
|
tab="com.minres.scviewer.ui.propertyTabRelated">
|
||||||
<input
|
<input
|
||||||
type="com.itjw.txviewer.database.ITransaction">
|
type="com.minres.scviewer.database.ITransaction">
|
||||||
</input>
|
</input>
|
||||||
</propertySection>
|
</propertySection>
|
||||||
</propertySections>
|
</propertySections>
|
||||||
|
@ -92,8 +92,8 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.core.runtime.adapters">
|
point="org.eclipse.core.runtime.adapters">
|
||||||
<factory
|
<factory
|
||||||
adaptableType="com.itjw.txviewer.database.ITransaction"
|
adaptableType="com.minres.scviewer.database.ITransaction"
|
||||||
class="com.itjw.txviewer.ui.adapter.AdapterFactory">
|
class="com.minres.scviewer.ui.adapter.AdapterFactory">
|
||||||
<adapter
|
<adapter
|
||||||
type="org.eclipse.ui.views.properties.IPropertySource">
|
type="org.eclipse.ui.views.properties.IPropertySource">
|
||||||
</adapter>
|
</adapter>
|
||||||
|
@ -102,8 +102,8 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.elementFactories">
|
point="org.eclipse.ui.elementFactories">
|
||||||
<factory
|
<factory
|
||||||
class="com.itjw.txviewer.ui.TxEditorInputFactory"
|
class="com.minres.scviewer.ui.TxEditorInputFactory"
|
||||||
id="com.itjw.txviewer.ui.TxEditorInputFactory">
|
id="com.minres.scviewer.ui.TxEditorInputFactory">
|
||||||
</factory>
|
</factory>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 390 B |
Before Width: | Height: | Size: 537 B After Width: | Height: | Size: 537 B |
Before Width: | Height: | Size: 444 B After Width: | Height: | Size: 444 B |
|
@ -1,4 +1,4 @@
|
||||||
package com.itjw.txviewer.ui;
|
package com.minres.scviewer.ui;
|
||||||
|
|
||||||
import org.eclipse.ui.part.EditorActionBarContributor;
|
import org.eclipse.ui.part.EditorActionBarContributor;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.itjw.txviewer.ui;
|
package com.minres.scviewer.ui;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
|
@ -1,13 +1,10 @@
|
||||||
package com.itjw.txviewer.ui;
|
package com.minres.scviewer.ui;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
import java.io.ObjectOutputStream;
|
import java.io.ObjectOutputStream;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
|
@ -23,7 +20,7 @@ public class TxEditorInputFactory implements IElementFactory {
|
||||||
* Factory id. The workbench plug-in registers a factory by this name
|
* Factory id. The workbench plug-in registers a factory by this name
|
||||||
* with the "org.eclipse.ui.elementFactories" extension point.
|
* with the "org.eclipse.ui.elementFactories" extension point.
|
||||||
*/
|
*/
|
||||||
private static final String ID_FACTORY = "com.itjw.txviewer.ui.TxEditorInputFactory"; //$NON-NLS-1$
|
private static final String ID_FACTORY = "com.minres.scviewer.ui.TxEditorInputFactory"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tag for the IFile.fullPath of the file resource.
|
* Tag for the IFile.fullPath of the file resource.
|
|
@ -8,23 +8,24 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.ui;
|
package com.minres.scviewer.ui;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.jface.action.Action;
|
|
||||||
import org.eclipse.jface.dialogs.MessageDialog;
|
import org.eclipse.jface.dialogs.MessageDialog;
|
||||||
import org.eclipse.jface.viewers.ISelection;
|
import org.eclipse.jface.viewers.ISelection;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Event;
|
|
||||||
import org.eclipse.ui.IActionBars;
|
|
||||||
import org.eclipse.ui.IEditorInput;
|
import org.eclipse.ui.IEditorInput;
|
||||||
import org.eclipse.ui.IEditorSite;
|
import org.eclipse.ui.IEditorSite;
|
||||||
import org.eclipse.ui.IFileEditorInput;
|
import org.eclipse.ui.IFileEditorInput;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
|
import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.ide.FileStoreEditorInput;
|
import org.eclipse.ui.ide.FileStoreEditorInput;
|
||||||
|
import org.eclipse.ui.internal.ide.dialogs.IFileStoreFilter;
|
||||||
import org.eclipse.ui.part.EditorPart;
|
import org.eclipse.ui.part.EditorPart;
|
||||||
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
|
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
|
||||||
import org.eclipse.ui.views.properties.IPropertySheetPage;
|
import org.eclipse.ui.views.properties.IPropertySheetPage;
|
||||||
|
@ -32,19 +33,20 @@ import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributo
|
||||||
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
|
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
import org.osgi.framework.FrameworkUtil;
|
import org.osgi.framework.FrameworkUtil;
|
||||||
|
import org.osgi.framework.InvalidSyntaxException;
|
||||||
import org.osgi.framework.ServiceReference;
|
import org.osgi.framework.ServiceReference;
|
||||||
|
|
||||||
import com.itjw.txviewer.database.ITrDb;
|
import com.minres.scviewer.database.ITrDb;
|
||||||
import com.itjw.txviewer.database.ITrStream;
|
import com.minres.scviewer.database.ITrStream;
|
||||||
import com.itjw.txviewer.database.ITransactionDbFactory;
|
import com.minres.scviewer.database.ITransactionDbFactory;
|
||||||
import com.itjw.txviewer.ui.swt.TxDisplay;
|
import com.minres.scviewer.ui.swt.TxDisplay;
|
||||||
import com.itjw.txviewer.ui.views.TxOutlinePage;
|
import com.minres.scviewer.ui.views.TxOutlinePage;
|
||||||
|
|
||||||
public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPageContributor {
|
public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPageContributor {
|
||||||
|
|
||||||
public static final String ID = "com.itjw.txviewer.ui.TxEditorPart"; //$NON-NLS-1$
|
public static final String ID = "com.minres.scviewer.ui.TxEditorPart"; //$NON-NLS-1$
|
||||||
|
|
||||||
public static final String WAVE_ACTION_ID = "com.itjw.txviewer.ui.action.AddToWave";
|
public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave";
|
||||||
|
|
||||||
private TxDisplay txDisplay;
|
private TxDisplay txDisplay;
|
||||||
|
|
||||||
|
@ -64,22 +66,23 @@ public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPage
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
myParent=parent;
|
myParent=parent;
|
||||||
/** Add handlers for global actions (delete, etc) */
|
/** Add handlers for global actions (delete, etc) */
|
||||||
IActionBars actionBars = getEditorSite().getActionBars();
|
// IActionBars actionBars = getEditorSite().getActionBars();
|
||||||
actionBars.setGlobalActionHandler(WAVE_ACTION_ID, new Action() {
|
// actionBars.setGlobalActionHandler(WAVE_ACTION_ID, new Action() {
|
||||||
@Override
|
// @Override
|
||||||
public void runWithEvent(Event event) {
|
// public void runWithEvent(Event event) {
|
||||||
System.out.println("AddToWave with event");
|
// System.out.println("AddToWave with event");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void run() {
|
// public void run() {
|
||||||
System.out.println("AddToWave");
|
// System.out.println("AddToWave");
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
txDisplay = new TxDisplay(parent);
|
txDisplay = new TxDisplay(parent);
|
||||||
|
if(database!=null) database.addPropertyChangeListener(txDisplay);
|
||||||
getSite().setSelectionProvider(txDisplay);
|
getSite().setSelectionProvider(txDisplay);
|
||||||
if(getEditorInput()!=null && ((TxEditorInput) getEditorInput()).getStreamNames().size()>0){
|
if(getEditorInput()!=null && ((TxEditorInput) getEditorInput()).getStreamNames().size()>0 && database!=null){
|
||||||
if(MessageDialog.openConfirm(parent.getShell(), "Confirm", "Do you want the restore last state of the wave form?"))
|
if(MessageDialog.openConfirm(parent.getShell(), "Confirm", "Do you want the restore last state of the wave form?"))
|
||||||
for(String streamName:((TxEditorInput) getEditorInput()).getStreamNames()){
|
for(String streamName:((TxEditorInput) getEditorInput()).getStreamNames()){
|
||||||
ITrStream stream = database.getStreamByName(streamName);
|
ITrStream stream = database.getStreamByName(streamName);
|
||||||
|
@ -101,17 +104,18 @@ public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPage
|
||||||
if(!(input instanceof TxEditorInput))
|
if(!(input instanceof TxEditorInput))
|
||||||
super.setInput(new TxEditorInput(((IFileEditorInput)input).getFile()));
|
super.setInput(new TxEditorInput(((IFileEditorInput)input).getFile()));
|
||||||
try {
|
try {
|
||||||
IFile file = ((IFileEditorInput) input).getFile();
|
IPath location = ((IFileEditorInput) input).getFile().getLocation();
|
||||||
getTrDatabase();
|
if (location != null)
|
||||||
database.load(file.getContents());
|
getTrDatabase(location.toFile());
|
||||||
setPartName(((IFileEditorInput) input).getFile().getName());
|
setPartName(((IFileEditorInput) input).getFile().getName());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
handleLoadException(e);
|
handleLoadException(e);
|
||||||
}
|
}
|
||||||
} else if(input instanceof FileStoreEditorInput){
|
} else if(input instanceof FileStoreEditorInput){
|
||||||
try {
|
try {
|
||||||
getTrDatabase();
|
//database.load(((FileStoreEditorInput) input).getURI().toURL().openStream());
|
||||||
database.load(((FileStoreEditorInput) input).getURI().toURL().openStream());
|
File file=new File(((FileStoreEditorInput) input).getURI().getPath());
|
||||||
|
getTrDatabase(file);
|
||||||
setPartName(((FileStoreEditorInput) input).getName());
|
setPartName(((FileStoreEditorInput) input).getName());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
handleLoadException(e);
|
handleLoadException(e);
|
||||||
|
@ -119,16 +123,37 @@ public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void getTrDatabase() {
|
protected void getTrDatabase(File file) {
|
||||||
|
try {
|
||||||
BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
|
BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
|
||||||
ServiceReference<?> serviceReference = context.getServiceReference(ITransactionDbFactory.class.getName());
|
ServiceReference<?>[] serviceReferences = context.getServiceReferences(ITransactionDbFactory.class.getName(), null);
|
||||||
database = ((ITransactionDbFactory) context.getService(serviceReference)).createDatabase();
|
if(serviceReferences!=null){
|
||||||
|
for(ServiceReference<?> serviceReference:serviceReferences){
|
||||||
|
database = ((ITransactionDbFactory) context.getService(serviceReference)).createDatabase(file);
|
||||||
|
if(database!=null){
|
||||||
if(txDisplay !=null) database.addPropertyChangeListener(txDisplay);
|
if(txDisplay !=null) database.addPropertyChangeListener(txDisplay);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (InvalidSyntaxException e) {
|
||||||
|
}
|
||||||
|
MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(),
|
||||||
|
"Error loading database", "Could not find database loader implementation");
|
||||||
|
database=null;
|
||||||
|
// if(TxEditorPlugin.getDefault().getTransactionDbFactory()!=null){
|
||||||
|
// database = TxEditorPlugin.getDefault().getTransactionDbFactory().createDatabase();
|
||||||
|
// if(txDisplay !=null) database.addPropertyChangeListener(txDisplay);
|
||||||
|
// } else {
|
||||||
|
// MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(),
|
||||||
|
// "Error loading database", "Could not find database loader implementation");
|
||||||
|
// database=null;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleLoadException(Exception e) {
|
private void handleLoadException(Exception e) {
|
||||||
System.err.println("** Load failed. Using default model. **");
|
MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(),
|
||||||
e.printStackTrace();
|
"Error loading database", e.getMessage());
|
||||||
database = null;
|
database = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,20 +8,24 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IT Just working - initial API and implementation
|
* IT Just working - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package com.itjw.txviewer.ui;
|
package com.minres.scviewer.ui;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import org.eclipse.draw2d.ColorConstants;
|
|
||||||
import org.eclipse.jface.resource.ImageDescriptor;
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.graphics.Color;
|
import org.eclipse.swt.graphics.Color;
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||||
import org.eclipse.wb.swt.SWTResourceManager;
|
import org.eclipse.wb.swt.SWTResourceManager;
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
|
|
||||||
|
import com.minres.scviewer.database.ITransactionDbFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The activator class controls the plug-in life cycle
|
* The activator class controls the plug-in life cycle
|
||||||
*/
|
*/
|
||||||
|
@ -37,21 +41,19 @@ public class TxEditorPlugin extends AbstractUIPlugin {
|
||||||
public static final int headerFgColor=7;
|
public static final int headerFgColor=7;
|
||||||
|
|
||||||
// The plug-in ID
|
// The plug-in ID
|
||||||
public static final String PLUGIN_ID = "com.itjw.txviewer.ui"; //$NON-NLS-1$
|
public static final String PLUGIN_ID = "com.minres.scviewer.ui"; //$NON-NLS-1$
|
||||||
|
|
||||||
// The shared instance
|
// The shared instance
|
||||||
private static TxEditorPlugin plugin;
|
private static TxEditorPlugin plugin;
|
||||||
|
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
private TxEditorPart openedTxEditorPart;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The constructor
|
* The constructor
|
||||||
*/
|
*/
|
||||||
public TxEditorPlugin() {
|
// public TxEditorPlugin() {
|
||||||
openedTxEditorPart=null;
|
// openedTxEditorPart=null;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
|
@ -106,13 +108,13 @@ public class TxEditorPlugin extends AbstractUIPlugin {
|
||||||
public Color getColor(int idx){
|
public Color getColor(int idx){
|
||||||
switch (idx) {
|
switch (idx) {
|
||||||
case lineColor:
|
case lineColor:
|
||||||
return ColorConstants.red;
|
return SWTResourceManager.getColor(SWT.COLOR_RED);
|
||||||
case txBgColor:
|
case txBgColor:
|
||||||
return ColorConstants.green;
|
return SWTResourceManager.getColor(SWT.COLOR_GREEN);
|
||||||
case highliteLineColor:
|
case highliteLineColor:
|
||||||
return ColorConstants.cyan;
|
return SWTResourceManager.getColor(SWT.COLOR_CYAN);
|
||||||
case txHighliteBgColor:
|
case txHighliteBgColor:
|
||||||
return ColorConstants.darkGreen;
|
return SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN);
|
||||||
case trackBgLightColor:
|
case trackBgLightColor:
|
||||||
return SWTResourceManager.getColor(220, 220, 220);
|
return SWTResourceManager.getColor(220, 220, 220);
|
||||||
case trackBgDarkColor:
|
case trackBgDarkColor:
|
||||||
|
@ -124,11 +126,28 @@ public class TxEditorPlugin extends AbstractUIPlugin {
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return ColorConstants.black;
|
return SWTResourceManager.getColor(SWT.COLOR_BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceBundle getResourceBundle() {
|
public ResourceBundle getResourceBundle() {
|
||||||
return resourceBundle;
|
return resourceBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ITransactionDbFactory transactionDbFactory;
|
||||||
|
private List<ITransactionDbFactory> factories= new ArrayList<ITransactionDbFactory>();
|
||||||
|
public ITransactionDbFactory getTransactionDbFactory() {
|
||||||
|
return transactionDbFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTransactionDbFactory(ITransactionDbFactory transactionDbFactory) {
|
||||||
|
factories.add( transactionDbFactory);
|
||||||
|
System.out.println("Service bound");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unsetTransactionDbFactory(ITransactionDbFactory transactionDbFactory) {
|
||||||
|
factories.remove(transactionDbFactory);
|
||||||
|
System.out.println("Service unbound");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|