From eb64cc60c57ff6146ffc388b21ce0d11e55785bd Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Sat, 9 Jan 2021 12:43:02 +0100 Subject: [PATCH] fix copyright header, javadoc, and warnings --- .../scviewer/database/sqlite/TxGenerator.java | 1 + .../scviewer/database/sqlite/TxStream.java | 7 - .../db/SQLiteDatabaseSelectHandler.java | 6 +- .../database/text/AbstractTxStream.java | 130 ++++-- .../scviewer/database/text/ScvRelation.java | 34 +- .../minres/scviewer/database/text/ScvTx.java | 59 ++- .../scviewer/database/text/TextDbLoader.java | 421 ++++++++++++------ .../com/minres/scviewer/database/text/Tx.java | 161 +++++-- .../scviewer/database/text/TxAttribute.java | 48 +- .../database/text/TxAttributeType.java | 50 ++- .../scviewer/database/text/TxEvent.java | 74 ++- .../scviewer/database/text/TxGenerator.java | 74 ++- .../scviewer/database/text/TxRelation.java | 40 +- .../scviewer/database/text/TxStream.java | 78 +++- .../build.properties | 2 +- .../scviewer/database/AssociationType.java | 14 +- .../minres/scviewer/database/BitValue.java | 171 ++++--- .../minres/scviewer/database/BitVector.java | 133 ++++-- .../minres/scviewer/database/DataType.java | 54 ++- .../minres/scviewer/database/DoubleVal.java | 39 +- .../minres/scviewer/database/EventKind.java | 21 +- .../minres/scviewer/database/HierNode.java | 104 ++++- .../scviewer/database/IDerivedWaveform.java | 5 + .../com/minres/scviewer/database/IEvent.java | 31 +- .../minres/scviewer/database/IHierNode.java | 23 +- .../minres/scviewer/database/IWaveform.java | 56 ++- .../minres/scviewer/database/IWaveformDb.java | 49 +- .../scviewer/database/IWaveformDbFactory.java | 10 +- .../scviewer/database/IWaveformDbLoader.java | 65 ++- .../database/InputFormatException.java | 9 +- .../scviewer/database/RelationType.java | 54 ++- .../database/RelationTypeFactory.java | 38 +- .../scviewer/database/WaveformType.java | 21 +- .../database/internal/WaveformDb.java | 148 ++++-- .../database/internal/WaveformDbFactory.java | 14 +- .../com/minres/scviewer/database/tx/ITx.java | 66 ++- .../scviewer/database/tx/ITxAttribute.java | 11 +- .../database/tx/ITxAttributeType.java | 23 +- .../minres/scviewer/database/tx/ITxEvent.java | 19 +- .../scviewer/database/tx/ITxGenerator.java | 10 +- .../scviewer/database/tx/ITxRelation.java | 24 +- 41 files changed, 1856 insertions(+), 541 deletions(-) diff --git a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java index 1b5dd38..bad29aa 100644 --- a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java +++ b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java @@ -36,6 +36,7 @@ public class TxGenerator extends AbstractTxStream implements ITxGenerator { super(database, scvGenerator.getName(), stream.getId()); this.stream=stream; this.scvGenerator=scvGenerator; + stream.addChild(this); } @Override diff --git a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java index dbbf6ab..0d821ba 100644 --- a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java +++ b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java @@ -16,17 +16,10 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.NavigableMap; import java.util.TreeMap; -import com.minres.scviewer.database.EventKind; -import com.minres.scviewer.database.HierNode; import com.minres.scviewer.database.IEvent; import com.minres.scviewer.database.IWaveform; -import com.minres.scviewer.database.RelationType; -import com.minres.scviewer.database.RelationTypeFactory; -import com.minres.scviewer.database.WaveformType; import com.minres.scviewer.database.sqlite.db.IDatabase; import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler; import com.minres.scviewer.database.sqlite.tables.ScvGenerator; diff --git a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/db/SQLiteDatabaseSelectHandler.java b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/db/SQLiteDatabaseSelectHandler.java index 6b92957..17d861b 100644 --- a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/db/SQLiteDatabaseSelectHandler.java +++ b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/db/SQLiteDatabaseSelectHandler.java @@ -77,7 +77,6 @@ public class SQLiteDatabaseSelectHandler extends AbstractDatabaseHandler { * @throws InvocationTargetException */ public synchronized List selectObjects() throws SQLException, - SecurityException, IllegalArgumentException, InstantiationException, IllegalAccessException, IntrospectionException, InvocationTargetException { @@ -116,12 +115,11 @@ public class SQLiteDatabaseSelectHandler extends AbstractDatabaseHandler { * @throws InvocationTargetException */ private List createObjects(ResultSet resultSet) - throws SecurityException, IllegalArgumentException, - SQLException, InstantiationException, + throws SQLException, InstantiationException, IllegalAccessException, IntrospectionException, InvocationTargetException { - List list = new ArrayList(); + List list = new ArrayList<>(); while (resultSet.next()) { diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/AbstractTxStream.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/AbstractTxStream.java index 9c9e9b5..425e607 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/AbstractTxStream.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/AbstractTxStream.java @@ -1,5 +1,6 @@ /******************************************************************************* - * Copyright (c) 2012 IT Just working. + * Copyright (c) 2012 IT Just working + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,7 +13,6 @@ package com.minres.scviewer.database.text; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Map.Entry; import java.util.NavigableMap; import java.util.TreeMap; @@ -23,105 +23,137 @@ import com.minres.scviewer.database.IEvent; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.WaveformType; import com.minres.scviewer.database.tx.ITxEvent; -import com.minres.scviewer.database.tx.ITxGenerator; +/** + * The Class AbstractTxStream. + */ abstract class AbstractTxStream extends HierNode implements IWaveform { + /** The id. */ private Long id; - + + /** The loader. */ protected TextDbLoader loader; - + + /** The events. */ TreeMap events = new TreeMap<>(); - private int maxConcurrency = 0; - - private int concurrency = 0; - + /** The concurrency calculated. */ boolean concurrencyCalculated = false; - + + /** + * Instantiates a new abstract tx stream. + * + * @param loader the loader + * @param id the id + * @param name the name + */ public AbstractTxStream(TextDbLoader loader, Long id, String name) { super(name); - this.loader=loader; - this.id=id; - } - - void setConcurrency(int concurrency) { - this.concurrency = concurrency; - if(concurrency>maxConcurrency) - maxConcurrency = concurrency; - } - - int getConcurrency() { - return this.concurrency; - } - - - @Override - public int getWidth() { - return maxConcurrency; + this.loader = loader; + this.id = id; } + /** + * Adds the event. + * + * @param evt the evt + */ public void addEvent(ITxEvent evt) { - if(!events.containsKey(evt.getTime())) - events.put(evt.getTime(), new IEvent[] {evt}); + if (!events.containsKey(evt.getTime())) + events.put(evt.getTime(), new IEvent[] { evt }); else { IEvent[] evts = events.get(evt.getTime()); - IEvent[] newEvts = Arrays.copyOf(evts, evts.length+1); - newEvts[evts.length]=evt; + IEvent[] newEvts = Arrays.copyOf(evts, evts.length + 1); + newEvts[evts.length] = evt; events.put(evt.getTime(), newEvts); } } - + + /** + * Gets the events. + * + * @return the events + */ @Override public NavigableMap getEvents() { - if(!concurrencyCalculated) calculateConcurrency(); + if (!concurrencyCalculated) + calculateConcurrency(); return events; } + /** + * Gets the events at time. + * + * @param time the time + * @return the events at time + */ @Override public IEvent[] getEventsAtTime(Long time) { - if(!concurrencyCalculated) calculateConcurrency(); + if (!concurrencyCalculated) + calculateConcurrency(); return events.get(time); } - + + /** + * Gets the events before time. + * + * @param time the time + * @return the events before time + */ @Override public IEvent[] getEventsBeforeTime(Long time) { - if(!concurrencyCalculated) + if (!concurrencyCalculated) calculateConcurrency(); - Entry e = events.floorEntry(time); - if(e==null) - return new IEvent[] {}; - else - return events.floorEntry(time).getValue(); + Entry e = events.floorEntry(time); + if (e == null) + return new IEvent[] {}; + else + return events.floorEntry(time).getValue(); } + /** + * Gets the type. + * + * @return the type + */ @Override public WaveformType getType() { return WaveformType.TRANSACTION; } + /** + * Gets the id. + * + * @return the id + */ @Override public Long getId() { return id; } + /** + * Calculate concurrency. + */ synchronized void calculateConcurrency() { - if(concurrencyCalculated) return; + if (concurrencyCalculated) + return; ArrayList rowendtime = new ArrayList<>(); - events.entrySet().stream().forEach( entry -> { + events.entrySet().stream().forEach(entry -> { IEvent[] values = entry.getValue(); - Arrays.asList(values).stream().filter(e->e.getKind()==EventKind.BEGIN).forEach(evt -> { - Tx tx = (Tx) ((TxEvent)evt).getTransaction(); + Arrays.asList(values).stream().filter(e -> e.getKind() == EventKind.BEGIN).forEach(evt -> { + Tx tx = (Tx) ((TxEvent) evt).getTransaction(); int rowIdx = 0; - for(; rowIdxtx.getBeginTime(); rowIdx++); - if(rowendtime.size()<=rowIdx) + for (; rowIdx < rowendtime.size() && rowendtime.get(rowIdx) > tx.getBeginTime(); rowIdx++) + ; + if (rowendtime.size() <= rowIdx) rowendtime.add(tx.getEndTime()); else rowendtime.set(rowIdx, tx.getEndTime()); tx.setConcurrencyIndex(rowIdx); }); }); - concurrencyCalculated=true; + concurrencyCalculated = true; } } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvRelation.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvRelation.java index de07918..3c31980 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvRelation.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvRelation.java @@ -1,21 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database.text; import java.io.Serializable; import com.minres.scviewer.database.RelationType; +/** + * The Class ScvRelation. + */ class ScvRelation implements Serializable { - /** - * - */ + + /** The Constant serialVersionUID. */ private static final long serialVersionUID = -347668857680574140L; + /** The source. */ final long source; - + + /** The target. */ final long target; - + + /** The relation type. */ final RelationType relationType; - + + /** + * Instantiates a new scv relation. + * + * @param relationType the relation type + * @param source the source + * @param target the target + */ public ScvRelation(RelationType relationType, long source, long target) { this.source = source; this.target = target; diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvTx.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvTx.java index 92498f2..f94d609 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvTx.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/ScvTx.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,32 +17,54 @@ import java.util.List; import com.minres.scviewer.database.tx.ITxAttribute; -class ScvTx implements Serializable{ - - /** - * - */ +/** + * The Class ScvTx. + */ +class ScvTx implements Serializable { + + /** The Constant serialVersionUID. */ private static final long serialVersionUID = -855200240003328221L; + /** The id. */ final long id; - + + /** The generator id. */ final long generatorId; + /** The stream id. */ final long streamId; - + + /** The begin time. */ long beginTime; - + + /** The end time. */ long endTime; - + + /** The attributes. */ final List attributes = new ArrayList<>(); - - ScvTx(long id, long streamId, long generatorId, long begin){ - this.id=id; - this.streamId=streamId; - this.generatorId=generatorId; - this.beginTime=begin; - this.endTime=begin; + + /** + * Instantiates a new scv tx. + * + * @param id the id + * @param streamId the stream id + * @param generatorId the generator id + * @param begin the begin + */ + ScvTx(long id, long streamId, long generatorId, long begin) { + this.id = id; + this.streamId = streamId; + this.generatorId = generatorId; + this.beginTime = begin; + this.endTime = begin; + } + + /** + * Gets the id. + * + * @return the id + */ + Long getId() { + return id; } - - Long getId() {return id;} } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.java index 0b6d9c0..df575bc 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -47,101 +48,128 @@ import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.RelationTypeFactory; import com.minres.scviewer.database.tx.ITx; -public class TextDbLoader implements IWaveformDbLoader{ +/** + * The Class TextDbLoader. + */ +public class TextDbLoader implements IWaveformDbLoader { - private Long maxTime=0L; + /** The max time. */ + private Long maxTime = 0L; - DB mapDb=null; - - final List attrValues = new ArrayList<>(); + /** The map db. */ + DB mapDb = null; + /** The attr values. */ + final List attrValues = new ArrayList<>(); + + /** The relation types. */ final Map relationTypes = UnifiedMap.newMap(); - - final Map txStreams = UnifiedMap.newMap(); - - final Map txGenerators = UnifiedMap.newMap(); - - Map transactions = null; - final Map attributeTypes = UnifiedMap.newMap(); + /** The tx streams. */ + final Map txStreams = UnifiedMap.newMap(); + /** The tx generators. */ + final Map txGenerators = UnifiedMap.newMap(); + + /** The transactions. */ + Map transactions = null; + + /** The attribute types. */ + final Map attributeTypes = UnifiedMap.newMap(); + + /** The relations in. */ final HashMultimap relationsIn = HashMultimap.create(); + /** The relations out. */ final HashMultimap relationsOut = HashMultimap.create(); - HashMap txCache = new HashMap<>(); + /** The tx cache. */ + HashMap txCache = new HashMap<>(); - List threads = new ArrayList<>(); - - @Override + /** The threads. */ + List threads = new ArrayList<>(); + + /** + * Gets the max time. + * + * @return the max time + */ + @Override public Long getMaxTime() { return maxTime; } + /** + * Gets the all waves. + * + * @return the all waves + */ @Override public Collection getAllWaves() { return new ArrayList<>(txStreams.values()); } + /** The Constant x. */ static final byte[] x = "scv_tr_stream".getBytes(); + /** + * Load. + * + * @param db the db + * @param file the file + * @return true, if successful + * @throws InputFormatException the input format exception + */ @SuppressWarnings("unchecked") @Override - public boolean load(IWaveformDb db, File file) throws InputFormatException { + public boolean load(IWaveformDb db, File file) throws InputFormatException { dispose(); - if(file.isDirectory() || !file.exists()) return false; + if (file.isDirectory() || !file.exists()) + return false; TextDbParser parser = new TextDbParser(this); boolean gzipped = isGzipped(file); try { - if(!isTxfile(gzipped?new GZIPInputStream(new FileInputStream(file)):new FileInputStream(file))) - return false; - } catch(Exception e) { + if (!isTxfile(gzipped ? new GZIPInputStream(new FileInputStream(file)) : new FileInputStream(file))) + return false; + } catch (Exception e) { throw new InputFormatException(); } - - if(file.length() < 75000000*(gzipped?1:10) || "memory".equals(System.getProperty("ScvBackingDB", "file"))) - mapDb = DBMaker - .memoryDirectDB() - .allocateStartSize(512l*1024l*1024l) - .allocateIncrement(128l*1024l*1024l) - .cleanerHackEnable() - .make(); + + if (file.length() < 75000000 * (gzipped ? 1 : 10) + || "memory".equals(System.getProperty("ScvBackingDB", "file"))) + mapDb = DBMaker.memoryDirectDB().allocateStartSize(512l * 1024l * 1024l) + .allocateIncrement(128l * 1024l * 1024l).cleanerHackEnable().make(); else { File mapDbFile; try { - mapDbFile = File.createTempFile("."+file.getName(), ".mapdb", null /*file.parentFile*/); + mapDbFile = File.createTempFile("." + file.getName(), ".mapdb", null /* file.parentFile */); Files.delete(Paths.get(mapDbFile.getPath())); } catch (IOException e1) { return false; } - mapDb = DBMaker - .fileDB(mapDbFile) - .fileMmapEnable() // Always enable mmap - .fileMmapEnableIfSupported() - .fileMmapPreclearDisable() - .allocateStartSize(512l*1024l*1024l) - .allocateIncrement(128l*1024l*1024l) - .cleanerHackEnable() - .make(); + mapDb = DBMaker.fileDB(mapDbFile).fileMmapEnable() // Always enable mmap + .fileMmapEnableIfSupported().fileMmapPreclearDisable().allocateStartSize(512l * 1024l * 1024l) + .allocateIncrement(128l * 1024l * 1024l).cleanerHackEnable().make(); mapDbFile.deleteOnExit(); } try { - parser.txSink = mapDb.treeMap("transactions", Serializer.LONG,Serializer.JAVA).createFromSink(); - parser.parseInput(gzipped?new GZIPInputStream(new FileInputStream(file)):new FileInputStream(file)); + parser.txSink = mapDb.treeMap("transactions", Serializer.LONG, Serializer.JAVA).createFromSink(); + parser.parseInput(gzipped ? new GZIPInputStream(new FileInputStream(file)) : new FileInputStream(file)); transactions = parser.txSink.create(); - } catch(IllegalArgumentException|ArrayIndexOutOfBoundsException e) { - } catch(Exception e) { - System.out.println("---->>> Exception "+e.toString()+" caught while loading database"); + } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) { + } catch (Exception e) { + System.out.println("---->>> Exception " + e.toString() + " caught while loading database"); e.printStackTrace(); return false; } - for(TxStream stream:txStreams.values()) { + for (TxStream stream : txStreams.values()) { Thread t = new Thread() { @Override public void run() { try { - stream.calculateConcurrency(); - } catch (Exception e) {/* don't let exceptions bubble up */ } + stream.calculateConcurrency(); + } catch (Exception e) { + /* don't let exceptions bubble up */ } } }; threads.add(t); @@ -149,31 +177,41 @@ public class TextDbLoader implements IWaveformDbLoader{ } return true; } - + + /** + * Dispose. + */ @Override public void dispose() { attrValues.clear(); relationTypes.clear(); - txStreams.clear(); - txGenerators.clear(); - transactions = null; - attributeTypes.clear(); + txStreams.clear(); + txGenerators.clear(); + transactions = null; + attributeTypes.clear(); relationsIn.clear(); relationsOut.clear(); - if(mapDb!=null) { + if (mapDb != null) { mapDb.close(); - mapDb=null; + mapDb = null; } } - + + /** + * Checks if is txfile. + * + * @param istream the istream + * @return true, if is txfile + */ private static boolean isTxfile(InputStream istream) { byte[] buffer = new byte[x.length]; try { int readCnt = istream.read(buffer, 0, x.length); istream.close(); - if(readCnt==x.length){ - for(int i=0; i getAllRelationTypes(){ + /** + * Gets the all relation types. + * + * @return the all relation types + */ + public Collection getAllRelationTypes() { return relationTypes.values(); } + /** + * The Class TextDbParser. + */ static class TextDbParser { - static final Pattern scv_tr_stream = Pattern.compile("^scv_tr_stream\\s+\\(ID (\\d+),\\s+name\\s+\"([^\"]+)\",\\s+kind\\s+\"([^\"]+)\"\\)$"); - static final Pattern scv_tr_generator = Pattern.compile("^scv_tr_generator\\s+\\(ID\\s+(\\d+),\\s+name\\s+\"([^\"]+)\",\\s+scv_tr_stream\\s+(\\d+),$"); - static final Pattern begin_attribute = Pattern.compile("^begin_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$"); - static final Pattern end_attribute = Pattern.compile("^end_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$"); - + + /** The Constant scv_tr_stream. */ + static final Pattern scv_tr_stream = Pattern + .compile("^scv_tr_stream\\s+\\(ID (\\d+),\\s+name\\s+\"([^\"]+)\",\\s+kind\\s+\"([^\"]+)\"\\)$"); + + /** The Constant scv_tr_generator. */ + static final Pattern scv_tr_generator = Pattern + .compile("^scv_tr_generator\\s+\\(ID\\s+(\\d+),\\s+name\\s+\"([^\"]+)\",\\s+scv_tr_stream\\s+(\\d+),$"); + + /** The Constant begin_attribute. */ + static final Pattern begin_attribute = Pattern + .compile("^begin_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$"); + + /** The Constant end_attribute. */ + static final Pattern end_attribute = Pattern + .compile("^end_attribute \\(ID (\\d+), name \"([^\"]+)\", type \"([^\"]+)\"\\)$"); + + /** The loader. */ final TextDbLoader loader; - + + /** The transaction by id. */ HashMap transactionById = new HashMap<>(); - + + /** The tx sink. */ TreeMapSink txSink; - + + /** The reader. */ BufferedReader reader = null; - - TxGenerator generator=null; - + + /** The generator. */ + TxGenerator generator = null; + + /** The attr value lut. */ Map attrValueLut = new HashMap<>(); - + + /** + * Instantiates a new text db parser. + * + * @param loader the loader + */ public TextDbParser(TextDbLoader loader) { super(); this.loader = loader; } - void parseInput(InputStream inputStream) throws IOException{ + /** + * Parses the input. + * + * @param inputStream the input stream + * @throws IOException Signals that an I/O exception has occurred. + */ + void parseInput(InputStream inputStream) throws IOException { reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); String curLine = reader.readLine(); String nextLine = null; - while((nextLine=reader.readLine())!=null && curLine!=null) { - curLine=parseLine(curLine, nextLine); + while ((nextLine = reader.readLine()) != null && curLine != null) { + curLine = parseLine(curLine, nextLine); } - if(curLine!=null) + if (curLine != null) parseLine(curLine, nextLine); } - private TxAttributeType getAttrType(String name, DataType dataType, AssociationType type){ - String key =name+"-"+dataType.toString(); + /** + * Gets the attr type. + * + * @param name the name + * @param dataType the data type + * @param type the type + * @return the attr type + */ + private TxAttributeType getAttrType(String name, DataType dataType, AssociationType type) { + String key = name + "-" + dataType.toString(); TxAttributeType res; - if(loader.attributeTypes.containsKey(key)){ - res=loader.attributeTypes.get(key); + if (loader.attributeTypes.containsKey(key)) { + res = loader.attributeTypes.get(key); } else { - res=new TxAttributeType(name, dataType, type); + res = new TxAttributeType(name, dataType, type); loader.attributeTypes.put(key, res); } return res; } - private String parseLine(String curLine, String nextLine) throws IOException{ + /** + * Parses the line. + * + * @param curLine the cur line + * @param nextLine the next line + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + private String parseLine(String curLine, String nextLine) throws IOException { String[] tokens = curLine.split("\\s+"); - if("tx_record_attribute".equals(tokens[0])){ + if ("tx_record_attribute".equals(tokens[0])) { Long id = Long.parseLong(tokens[1]); String name = tokens[2].substring(1, tokens[2].length()); DataType type = DataType.valueOf(tokens[3]); - String remaining = tokens.length>5?String.join(" ", Arrays.copyOfRange(tokens, 5, tokens.length)):""; + String remaining = tokens.length > 5 ? String.join(" ", Arrays.copyOfRange(tokens, 5, tokens.length)) + : ""; TxAttributeType attrType = getAttrType(name, type, AssociationType.RECORD); transactionById.get(id).attributes.add(new TxAttribute(attrType, getAttrString(attrType, remaining))); - } else if("tx_begin".equals(tokens[0])){ + } else if ("tx_begin".equals(tokens[0])) { Long id = Long.parseLong(tokens[1]); Long genId = Long.parseLong(tokens[2]); - TxGenerator gen=loader.txGenerators.get(genId); - ScvTx scvTx = new ScvTx(id, gen.stream.getId(), genId, Long.parseLong(tokens[3])*stringToScale(tokens[4])); - loader.maxTime = loader.maxTime>scvTx.beginTime?loader.maxTime:scvTx.beginTime; + TxGenerator gen = loader.txGenerators.get(genId); + ScvTx scvTx = new ScvTx(id, gen.stream.getId(), genId, + Long.parseLong(tokens[3]) * stringToScale(tokens[4])); + loader.maxTime = loader.maxTime > scvTx.beginTime ? loader.maxTime : scvTx.beginTime; TxStream stream = loader.txStreams.get(gen.stream.getId()); - stream.setConcurrency(stream.getConcurrency()+1); - if(nextLine!=null && nextLine.charAt(0)=='a') { - int idx=0; - while(nextLine!=null && nextLine.charAt(0)=='a') { - String[] attrTokens=nextLine.split("\\s+"); + stream.setConcurrency(stream.getConcurrency() + 1); + if (nextLine != null && nextLine.charAt(0) == 'a') { + int idx = 0; + while (nextLine != null && nextLine.charAt(0) == 'a') { + String[] attrTokens = nextLine.split("\\s+"); TxAttributeType attrType = gen.beginAttrs.get(idx); TxAttribute attr = new TxAttribute(attrType, getAttrString(attrType, attrTokens[1])); scvTx.attributes.add(attr); idx++; - nextLine=reader.readLine(); + nextLine = reader.readLine(); } } txSink.put(id, scvTx); transactionById.put(id, scvTx); - } else if("tx_end".equals(tokens[0])){ + } else if ("tx_end".equals(tokens[0])) { Long id = Long.parseLong(tokens[1]); ScvTx scvTx = transactionById.get(id); - assert Long.parseLong(tokens[2])==scvTx.generatorId; - scvTx.endTime=Long.parseLong(tokens[3])*stringToScale(tokens[4]); - loader.maxTime = loader.maxTime>scvTx.endTime?loader.maxTime:scvTx.endTime; + assert Long.parseLong(tokens[2]) == scvTx.generatorId; + scvTx.endTime = Long.parseLong(tokens[3]) * stringToScale(tokens[4]); + loader.maxTime = loader.maxTime > scvTx.endTime ? loader.maxTime : scvTx.endTime; TxGenerator gen = loader.txGenerators.get(scvTx.generatorId); TxStream stream = loader.txStreams.get(gen.stream.getId()); - if(scvTx.beginTime==scvTx.endTime) - stream.addEvent(new TxEvent(loader, EventKind.SINGLE, id, scvTx.beginTime)); - else { - stream.addEvent(new TxEvent(loader, EventKind.BEGIN, id, scvTx.beginTime)); - stream.addEvent(new TxEvent(loader, EventKind.END, id, scvTx.endTime)); + if (scvTx.beginTime == scvTx.endTime) { + TxEvent evt = new TxEvent(loader, EventKind.SINGLE, id, scvTx.beginTime); + stream.addEvent(evt); + gen.addEvent(evt); + } else { + TxEvent begEvt = new TxEvent(loader, EventKind.BEGIN, id, scvTx.beginTime); + stream.addEvent(begEvt); + gen.addEvent(begEvt); + TxEvent endEvt = new TxEvent(loader, EventKind.END, id, scvTx.endTime); + stream.addEvent(endEvt); + gen.addEvent(endEvt); } - stream.setConcurrency(stream.getConcurrency()-1); - if(nextLine!=null && nextLine.charAt(0)=='a') { - int idx=0; - while(nextLine!=null && nextLine.charAt(0)=='a') { - String[] attrTokens=nextLine.split("\\s+"); + stream.setConcurrency(stream.getConcurrency() - 1); + if (nextLine != null && nextLine.charAt(0) == 'a') { + int idx = 0; + while (nextLine != null && nextLine.charAt(0) == 'a') { + String[] attrTokens = nextLine.split("\\s+"); TxAttributeType attrType = gen.endAttrs.get(idx); TxAttribute attr = new TxAttribute(attrType, getAttrString(attrType, attrTokens[1])); scvTx.attributes.add(attr); idx++; - nextLine=reader.readLine(); + nextLine = reader.readLine(); } } - } else if("tx_relation".equals(tokens[0])){ - Long tr2= Long.parseLong(tokens[2]); - Long tr1= Long.parseLong(tokens[3]); - String relType=tokens[1].substring(1, tokens[1].length()-1); - if(!loader.relationTypes.containsKey(relType)) + } else if ("tx_relation".equals(tokens[0])) { + Long tr2 = Long.parseLong(tokens[2]); + Long tr1 = Long.parseLong(tokens[3]); + String relType = tokens[1].substring(1, tokens[1].length() - 1); + if (!loader.relationTypes.containsKey(relType)) loader.relationTypes.put(relType, RelationTypeFactory.create(relType)); ScvRelation rel = new ScvRelation(loader.relationTypes.get(relType), tr1, tr2); loader.relationsOut.put(tr1, rel); loader.relationsIn.put(tr2, rel); - } else if("scv_tr_stream".equals(tokens[0])){ + } else if ("scv_tr_stream".equals(tokens[0])) { Matcher matcher = scv_tr_stream.matcher(curLine); if (matcher.matches()) { Long id = Long.parseLong(matcher.group(1)); TxStream stream = new TxStream(loader, id, matcher.group(2), matcher.group(3)); loader.txStreams.put(id, stream); } - } else if("scv_tr_generator".equals(tokens[0])){ + } else if ("scv_tr_generator".equals(tokens[0])) { Matcher matcher = scv_tr_generator.matcher(curLine); if ((matcher.matches())) { Long id = Long.parseLong(matcher.group(1)); - TxStream stream=loader.txStreams.get(Long.parseLong(matcher.group(3))); - generator=new TxGenerator(loader, id, matcher.group(2), stream); - loader.txGenerators.put(id, generator); + TxStream stream = loader.txStreams.get(Long.parseLong(matcher.group(3))); + generator = new TxGenerator(loader, id, matcher.group(2), stream); + loader.txGenerators.put(id, generator); } - } else if("begin_attribute".equals(tokens[0])){ + } else if ("begin_attribute".equals(tokens[0])) { Matcher matcher = begin_attribute.matcher(curLine); if ((matcher.matches())) { - TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)), AssociationType.BEGIN); + TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)), + AssociationType.BEGIN); generator.beginAttrs.add(attrType); } - } else if("end_attribute".equals(tokens[0])){ + } else if ("end_attribute".equals(tokens[0])) { Matcher matcher = end_attribute.matcher(curLine); if ((matcher.matches())) { - TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)), AssociationType.END); + TxAttributeType attrType = getAttrType(matcher.group(2), DataType.valueOf(matcher.group(3)), + AssociationType.END); generator.endAttrs.add(attrType); } - } else if(")".equals(tokens[0])){ - generator=null; - } else if("a".equals(tokens[0])){//matcher = line =~ /^a\s+(.+)$/ - System.out.println("Don't know what to do with: '"+curLine+"'"); + } else if (")".equals(tokens[0])) { + generator = null; + } else if ("a".equals(tokens[0])) {// matcher = line =~ /^a\s+(.+)$/ + System.out.println("Don't know what to do with: '" + curLine + "'"); } else - System.out.println("Don't know what to do with: '"+curLine+"'"); + System.out.println("Don't know what to do with: '" + curLine + "'"); return nextLine; } - + + /** + * Gets the attr string. + * + * @param attrType the attr type + * @param string the string + * @return the attr string + */ private String getAttrString(TxAttributeType attrType, String string) { String value; - switch(attrType.getDataType()){ + switch (attrType.getDataType()) { case STRING: case ENUMERATION: - value=string.substring(1, string.length()-1); + value = string.substring(1, string.length() - 1); break; default: - value=string; + value = string; } - if(attrValueLut.containsKey(value)){ + if (attrValueLut.containsKey(value)) { return loader.attrValues.get(attrValueLut.get(value)); } else { attrValueLut.put(value, loader.attrValues.size()); @@ -361,20 +475,38 @@ public class TextDbLoader implements IWaveformDbLoader{ } } - private long stringToScale(String scale){ + /** + * String to scale. + * + * @param scale the scale + * @return the long + */ + private long stringToScale(String scale) { String cmp = scale.trim(); - if("fs".equals(cmp)) return 1L; - if("ps".equals(cmp)) return 1000L; - if("ns".equals(cmp)) return 1000000L; - if("us".equals(cmp)) return 1000000000L; - if("ms".equals(cmp)) return 1000000000000L; - if("s".equals(cmp) ) return 1000000000000000L; + if ("fs".equals(cmp)) + return 1L; + if ("ps".equals(cmp)) + return 1000L; + if ("ns".equals(cmp)) + return 1000000L; + if ("us".equals(cmp)) + return 1000000000L; + if ("ms".equals(cmp)) + return 1000000000000L; + if ("s".equals(cmp)) + return 1000000000000000L; return 1L; } } + /** + * Gets the transaction. + * + * @param txId the tx id + * @return the transaction + */ public ITx getTransaction(long txId) { - if(txCache.containsKey(txId)) + if (txCache.containsKey(txId)) return txCache.get(txId); Tx tx = new Tx(this, txId); txCache.put(txId, tx); @@ -382,4 +514,3 @@ public class TextDbLoader implements IWaveformDbLoader{ } } - diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/Tx.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/Tx.java index cf24abc..3f288b1 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/Tx.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/Tx.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,111 +22,217 @@ import com.minres.scviewer.database.tx.ITxAttribute; import com.minres.scviewer.database.tx.ITxGenerator; import com.minres.scviewer.database.tx.ITxRelation; +/** + * The Class Tx. + */ class Tx implements ITx { - + + /** The loader. */ private final TextDbLoader loader; - + + /** The id. */ private long id; - - long beginTime=-1; - - long endTime=-1; - + + /** The begin time. */ + long beginTime = -1; + + /** The end time. */ + long endTime = -1; + + /** The concurrency index. */ private int concurrencyIndex; - + + /** + * Instantiates a new tx. + * + * @param loader the loader + * @param scvTx the scv tx + */ public Tx(TextDbLoader loader, ScvTx scvTx) { - this.loader=loader; - id=scvTx.id; + this.loader = loader; + id = scvTx.id; } + /** + * Instantiates a new tx. + * + * @param loader the loader + * @param txId the tx id + */ public Tx(TextDbLoader loader, long txId) { - this.loader=loader; - id=txId; + this.loader = loader; + id = txId; } + /** + * Gets the incoming relations. + * + * @return the incoming relations + */ @Override public Collection getIncomingRelations() { Set rels = loader.relationsIn.get(id); return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList()); } + /** + * Gets the outgoing relations. + * + * @return the outgoing relations + */ @Override public Collection getOutgoingRelations() { Set rels = loader.relationsOut.get(id); return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList()); } + /** + * Compare to. + * + * @param o the o + * @return the int + */ @Override public int compareTo(ITx o) { - int res =getBeginTime().compareTo(o.getBeginTime()); - if(res!=0) + int res = getBeginTime().compareTo(o.getBeginTime()); + if (res != 0) return res; else return getId().compareTo(o.getId()); } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - return this.getScvTx().equals(((Tx) obj).getScvTx()); - } + /** + * Equals. + * + * @param obj the obj + * @return true, if successful + */ @Override - public int hashCode() { + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + return this.getScvTx().equals(((Tx) obj).getScvTx()); + } + + /** + * Hash code. + * + * @return the int + */ + @Override + public int hashCode() { return getScvTx().hashCode(); } + /** + * To string. + * + * @return the string + */ @Override public String toString() { - return "tx#"+getId()+"["+getBeginTime()/1000000+"ns - "+getEndTime()/1000000+"ns]"; + return "tx#" + getId() + "[" + getBeginTime() / 1000000 + "ns - " + getEndTime() / 1000000 + "ns]"; } + /** + * Gets the id. + * + * @return the id + */ @Override public Long getId() { return getScvTx().id; } + /** + * Gets the stream. + * + * @return the stream + */ @Override public IWaveform getStream() { return loader.txStreams.get(getScvTx().streamId); } + /** + * Gets the generator. + * + * @return the generator + */ @Override public ITxGenerator getGenerator() { return loader.txGenerators.get(getScvTx().generatorId); } + /** + * Gets the begin time. + * + * @return the begin time + */ @Override public Long getBeginTime() { - if(beginTime<0) beginTime=getScvTx().beginTime; + if (beginTime < 0) + beginTime = getScvTx().beginTime; return beginTime; } + /** + * Gets the end time. + * + * @return the end time + */ @Override public Long getEndTime() { - if(endTime<0) endTime=getScvTx().endTime; + if (endTime < 0) + endTime = getScvTx().endTime; return endTime; } + /** + * Sets the end time. + * + * @param time the new end time + */ void setEndTime(Long time) { - getScvTx().endTime=time; + getScvTx().endTime = time; } + /** + * Gets the concurrency index. + * + * @return the concurrency index + */ @Override public int getConcurrencyIndex() { return concurrencyIndex; } + /** + * Sets the concurrency index. + * + * @param idx the new concurrency index + */ void setConcurrencyIndex(int idx) { - concurrencyIndex=idx; + concurrencyIndex = idx; } + /** + * Gets the attributes. + * + * @return the attributes + */ @Override public List getAttributes() { return getScvTx().attributes; } + /** + * Gets the scv tx. + * + * @return the scv tx + */ private ScvTx getScvTx() { return loader.transactions.get(id); } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttribute.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttribute.java index 26e316c..3f8976e 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttribute.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttribute.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,37 +17,66 @@ import com.minres.scviewer.database.AssociationType; import com.minres.scviewer.database.DataType; import com.minres.scviewer.database.tx.ITxAttribute; -public class TxAttribute implements ITxAttribute, Serializable { - - /** - * - */ +/** + * The Class TxAttribute. + */ +public class TxAttribute implements ITxAttribute, Serializable { + + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 4767726016651807152L; + /** The attribute type. */ private final TxAttributeType attributeType; + /** The value. */ private final String value; - - TxAttribute(TxAttributeType type, String value){ - this.attributeType=type; - this.value=value; + + /** + * Instantiates a new tx attribute. + * + * @param type the type + * @param value the value + */ + TxAttribute(TxAttributeType type, String value) { + this.attributeType = type; + this.value = value; } + /** + * Gets the name. + * + * @return the name + */ @Override public String getName() { return attributeType.getName(); } + /** + * Gets the type. + * + * @return the type + */ @Override public AssociationType getType() { return attributeType.getType(); } + /** + * Gets the data type. + * + * @return the data type + */ @Override public DataType getDataType() { return attributeType.getDataType(); } + /** + * Gets the value. + * + * @return the value + */ @Override public Object getValue() { return value; diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttributeType.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttributeType.java index 67c72aa..90e1b27 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttributeType.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxAttributeType.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,34 +17,61 @@ import com.minres.scviewer.database.AssociationType; import com.minres.scviewer.database.DataType; import com.minres.scviewer.database.tx.ITxAttributeType; +/** + * The Class TxAttributeType. + */ class TxAttributeType implements ITxAttributeType, Serializable { - /** - * - */ + + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 7159721937208946828L; - + + /** The name. */ private String name; - + + /** The data type. */ private DataType dataType; - + + /** The type. */ private AssociationType type; - - TxAttributeType(String name, DataType dataType, AssociationType type){ - this.name=name; - this.dataType=dataType; - this.type=type; + + /** + * Instantiates a new tx attribute type. + * + * @param name the name + * @param dataType the data type + * @param type the type + */ + TxAttributeType(String name, DataType dataType, AssociationType type) { + this.name = name; + this.dataType = dataType; + this.type = type; } + /** + * Gets the name. + * + * @return the name + */ @Override public String getName() { return name; } + /** + * Gets the data type. + * + * @return the data type + */ @Override public DataType getDataType() { return dataType; } + /** + * Gets the type. + * + * @return the type + */ @Override public AssociationType getType() { return type; diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxEvent.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxEvent.java index ad57e01..df76234 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxEvent.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxEvent.java @@ -1,3 +1,13 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database.text; import com.minres.scviewer.database.EventKind; @@ -5,50 +15,94 @@ import com.minres.scviewer.database.WaveformType; import com.minres.scviewer.database.tx.ITx; import com.minres.scviewer.database.tx.ITxEvent; +/** + * The Class TxEvent. + */ class TxEvent implements ITxEvent { + /** The loader. */ final TextDbLoader loader; - + + /** The kind. */ final EventKind kind; - + + /** The transaction. */ final long transaction; - + + /** The time. */ final long time; - + + /** + * Instantiates a new tx event. + * + * @param loader the loader + * @param kind the kind + * @param transaction the transaction + * @param time the time + */ TxEvent(TextDbLoader loader, EventKind kind, Long transaction, Long time) { - this.loader=loader; + this.loader = loader; this.kind = kind; this.transaction = transaction; this.time = time; } + /** + * Duplicate. + * + * @return the i tx event + * @throws CloneNotSupportedException the clone not supported exception + */ @Override - public - ITxEvent duplicate() throws CloneNotSupportedException { + public ITxEvent duplicate() throws CloneNotSupportedException { return new TxEvent(loader, kind, transaction, time); } + /** + * To string. + * + * @return the string + */ @Override - public - String toString() { - return kind.toString()+"@"+time+" of tx #"+transaction; + public String toString() { + return kind.toString() + "@" + time + " of tx #" + transaction; } + /** + * Gets the type. + * + * @return the type + */ @Override public WaveformType getType() { return WaveformType.TRANSACTION; } + /** + * Gets the kind. + * + * @return the kind + */ @Override public EventKind getKind() { return kind; } + /** + * Gets the time. + * + * @return the time + */ @Override public Long getTime() { return time; } + /** + * Gets the transaction. + * + * @return the transaction + */ @Override public ITx getTransaction() { return loader.getTransaction(transaction); diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java index dc55be7..d62feb1 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,39 +17,90 @@ import java.util.List; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.tx.ITxGenerator; +/** + * The Class TxGenerator. + */ class TxGenerator extends AbstractTxStream implements ITxGenerator { + /** The stream. */ TxStream stream; - - List beginAttrs = new ArrayList<>(); - - List endAttrs= new ArrayList<>(); - TxGenerator(TextDbLoader loader, Long id, String name, TxStream stream){ + /** The begin attrs. */ + List beginAttrs = new ArrayList<>(); + + /** The end attrs. */ + List endAttrs = new ArrayList<>(); + + /** + * Instantiates a new tx generator. + * + * @param loader the loader + * @param id the id + * @param name the name + * @param stream the stream + */ + TxGenerator(TextDbLoader loader, Long id, String name, TxStream stream) { super(loader, id, name); - this.stream=stream; + this.stream = stream; + stream.addChild(this); } - + + /** + * Gets the stream. + * + * @return the stream + */ @Override - public IWaveform getStream(){ + public IWaveform getStream() { return stream; } - + + /** + * Checks if is same. + * + * @param other the other + * @return true, if is same + */ @Override public boolean isSame(IWaveform other) { - return(other instanceof TxGenerator && this.getId().equals(other.getId())); + return (other instanceof TxGenerator && this.getId().equals(other.getId())); } - + + /** + * Gets the begin attrs. + * + * @return the begin attrs + */ public List getBeginAttrs() { return beginAttrs; } + /** + * Gets the end attrs. + * + * @return the end attrs + */ public List getEndAttrs() { return endAttrs; } + /** + * Gets the kind. + * + * @return the kind + */ @Override public String getKind() { return stream.getKind(); } + + /** + * Gets the width. + * + * @return the width + */ + @Override + public int getWidth() { + return stream.getWidth(); + } } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxRelation.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxRelation.java index 943fb05..78cd584 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxRelation.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxRelation.java @@ -1,30 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database.text; import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.tx.ITx; import com.minres.scviewer.database.tx.ITxRelation; +/** + * The Class TxRelation. + */ class TxRelation implements ITxRelation { + /** The loader. */ final TextDbLoader loader; - + + /** The scv relation. */ final ScvRelation scvRelation; - + + /** + * Instantiates a new tx relation. + * + * @param loader the loader + * @param scvRelation the scv relation + */ public TxRelation(TextDbLoader loader, ScvRelation scvRelation) { this.loader = loader; this.scvRelation = scvRelation; } + /** + * Gets the relation type. + * + * @return the relation type + */ @Override public RelationType getRelationType() { return scvRelation.relationType; } + /** + * Gets the source. + * + * @return the source + */ @Override public ITx getSource() { return loader.getTransaction(scvRelation.source); } + /** + * Gets the target. + * + * @return the target + */ @Override public ITx getTarget() { return loader.getTransaction(scvRelation.target); diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java index c0ab7d0..4a346cd 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2012 IT Just working. + * Copyright (c) 2020 MINRES Technologies GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,23 +13,82 @@ package com.minres.scviewer.database.text; import com.minres.scviewer.database.IWaveform; +/** + * The Class TxStream. + */ class TxStream extends AbstractTxStream { - + + /** The kind. */ final String kind; - - TxStream(TextDbLoader loader, Long id, String name, String kind){ + + /** + * Instantiates a new tx stream. + * + * @param loader the loader + * @param id the id + * @param name the name + * @param kind the kind + */ + TxStream(TextDbLoader loader, Long id, String name, String kind) { super(loader, id, name); - this.kind=kind; - } - - @Override - public boolean isSame(IWaveform other) { - return(other instanceof TxStream && this.getId().equals(other.getId())); + this.kind = kind; } + /** + * Checks if is same. + * + * @param other the other + * @return true, if is same + */ + @Override + public boolean isSame(IWaveform other) { + return (other instanceof TxStream && this.getId().equals(other.getId())); + } + + /** + * Gets the kind. + * + * @return the kind + */ @Override public String getKind() { return kind; } + /** The max concurrency. */ + private int maxConcurrency = 0; + + /** The concurrency. */ + private int concurrency = 0; + + /** + * Sets the concurrency. + * + * @param concurrency the new concurrency + */ + void setConcurrency(int concurrency) { + this.concurrency = concurrency; + if (concurrency > maxConcurrency) + maxConcurrency = concurrency; + } + + /** + * Gets the concurrency. + * + * @return the concurrency + */ + int getConcurrency() { + return this.concurrency; + } + + /** + * Gets the width. + * + * @return the width + */ + @Override + public int getWidth() { + return maxConcurrency; + } + } diff --git a/plugins/com.minres.scviewer.database/build.properties b/plugins/com.minres.scviewer.database/build.properties index 7856cb9..f5c8f4f 100644 --- a/plugins/com.minres.scviewer.database/build.properties +++ b/plugins/com.minres.scviewer.database/build.properties @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2014, 2015 MINRES Technologies GmbH and others. +# Copyright (c) 2014, 2015 - 2020 MINRES Technologies GmbH and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/AssociationType.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/AssociationType.java index e9e2437..26be0d0 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/AssociationType.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/AssociationType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,6 +10,16 @@ *******************************************************************************/ package com.minres.scviewer.database; +// TODO: Auto-generated Javadoc +/** + * The Enum AssociationType. + */ public enum AssociationType { - BEGIN, RECORD, END + + /** The begin. */ + BEGIN, + /** The record. */ + RECORD, + /** The end. */ + END } \ No newline at end of file diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitValue.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitValue.java index aae3703..32173d0 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitValue.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitValue.java @@ -1,68 +1,125 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database; + +/** + * The Enum BitValue. + */ public enum BitValue { - ZERO, - ONE, - X, - Z; - private static final BitValue[] ORDINAL_TABLE = BitValue.values(); + /** The zero. */ + ZERO, - public static BitValue fromChar(char c) { - switch (c) { - case '0': - return ZERO; - case '1': - return ONE; - case 'x': - case 'X': - return X; - case 'z': - case 'Z': - return Z; - default: - throw new NumberFormatException("unknown digit " + c); - } - } + /** The one. */ + ONE, - public char toChar() { - switch (this) { - case ZERO: - return '0'; - case ONE: - return '1'; - case X: - return 'x'; - case Z: - return 'z'; - } + /** The x. */ + X, - return ' '; // Unreachable? - } + /** The z. */ + Z; - public static BitValue fromInt(int i) { - if (i == 0) { - return ZERO; - } else { - return ONE; - } - } + /** The Constant ORDINAL_TABLE. */ + private static final BitValue[] ORDINAL_TABLE = BitValue.values(); - public int toInt() { - return (this == ONE) ? 1 : 0; - } + /** + * From char. + * + * @param c the c + * @return the bit value + */ + public static BitValue fromChar(char c) { + switch (c) { + case '0': + return ZERO; + case '1': + return ONE; + case 'x': + case 'X': + return X; + case 'z': + case 'Z': + return Z; + default: + throw new NumberFormatException("unknown digit " + c); + } + } - public static BitValue fromOrdinal(int ord) { - return ORDINAL_TABLE[ord]; - } + /** + * To char. + * + * @return the char + */ + public char toChar() { + switch (this) { + case ZERO: + return '0'; + case ONE: + return '1'; + case X: + return 'x'; + case Z: + return 'z'; + } - public int compare(BitValue other) { - if (this == ONE && other == ZERO) { - return 1; - } else if (this == ZERO && other == ONE) { - return -1; - } else { - // Either these are equal, or there is an X and Z, which match everything. - return 0; - } - } + return ' '; // Unreachable? + } + + /** + * From int. + * + * @param i the i + * @return the bit value + */ + public static BitValue fromInt(int i) { + if (i == 0) { + return ZERO; + } else { + return ONE; + } + } + + /** + * To int. + * + * @return the int + */ + public int toInt() { + return (this == ONE) ? 1 : 0; + } + + /** + * From ordinal. + * + * @param ord the ord + * @return the bit value + */ + public static BitValue fromOrdinal(int ord) { + return ORDINAL_TABLE[ord]; + } + + /** + * Compare. + * + * @param other the other + * @return the int + */ + public int compare(BitValue other) { + if (this == ONE && other == ZERO) { + return 1; + } else if (this == ZERO && other == ONE) { + return -1; + } else { + // Either these are equal, or there is an X and Z, which match everything. + return 0; + } + } } \ No newline at end of file diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitVector.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitVector.java index 7ca5888..c53fc27 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitVector.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/BitVector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,34 +10,56 @@ *******************************************************************************/ package com.minres.scviewer.database; +/** + * The Class BitVector. + */ public class BitVector implements IEvent { + /** The width. */ private final int width; + /** The packed values. */ private int[] packedValues; + /** + * Instantiates a new bit vector. + * + * @param netWidth the net width + */ public BitVector(int netWidth) { - this.width=netWidth; - packedValues = new int[(netWidth+15)/16]; - for(int i=0; i> 5; int bitOffset = bitIndex & 31; packedValues[wordOffset] &= ~(3 << bitOffset); packedValues[wordOffset] |= value.ordinal() << bitOffset; } + /** + * Gets the value. + * + * @return the value + */ public char[] getValue() { int bitOffset = 0; int wordOffset = 0; char[] res = new char[width]; // Copy values out of packed array for (int i = 0; i < width; i++) { - int currentWord = (packedValues[wordOffset] >> bitOffset)&3; - res[width-i-1]=BitValue.fromInt(currentWord).toChar(); + int currentWord = (packedValues[wordOffset] >> bitOffset) & 3; + res[width - i - 1] = BitValue.fromInt(currentWord).toChar(); bitOffset += 2; if (bitOffset == 32) { wordOffset++; @@ -47,6 +69,11 @@ public class BitVector implements IEvent { return res; } + /** + * Sets the value. + * + * @param value the new value + */ public void setValue(char[] value) { int bitIndex = width; int wordOffset = bitIndex >> 4; @@ -61,41 +88,61 @@ public class BitVector implements IEvent { } } + /** + * Gets the width. + * + * @return the width + */ public int getWidth() { return width; } - public String toString(){ + /** + * To string. + * + * @return the string + */ + public String toString() { return new String(getValue()); } - public String toHexString(){ - int resWidth=(width-1)/4+1; - char[] value=getValue(); + /** + * To hex string. + * + * @return the string + */ + public String toHexString() { + int resWidth = (width - 1) / 4 + 1; + char[] value = getValue(); char[] res = new char[resWidth]; - for(int i=resWidth-1; i>=0; i--){ - int digit=0; - for(int j=3; j>=0; j--){ - if((4*i+j)= 0; i--) { + int digit = 0; + for (int j = 3; j >= 0; j--) { + if ((4 * i + j) < value.length) { + BitValue val = BitValue.fromChar(value[4 * i + j]); + switch (val) { case X: case Z: - res[i]=val.toChar(); + res[i] = val.toChar(); continue; case ONE: - digit+=1<<(3-j); + digit += 1 << (3 - j); break; default: break; } } } - res[i]=Character.forDigit(digit, 16); //((digit < 10) ? '0' + digit : 'a' + digit -10) + res[i] = Character.forDigit(digit, 16); // ((digit < 10) ? '0' + digit : 'a' + digit -10) } - return new String(res); + return new String(res); } + /** + * To unsigned value. + * + * @return the long + */ public long toUnsignedValue() { long res = 0; int bitOffset = 0; @@ -103,10 +150,11 @@ public class BitVector implements IEvent { int currentWord = 0; // Copy values out of packed array for (int i = 0; i < width; i++) { - if(bitOffset==0) currentWord = packedValues[wordOffset]; + if (bitOffset == 0) + currentWord = packedValues[wordOffset]; switch (currentWord & 3) { case 1: - res|=1<>= 2; } } - if(lastVal!=0) - res |= -1l< childs; - + + /** The pcs. */ protected PropertyChangeSupport pcs; + /** + * Instantiates a new hier node. + */ public HierNode() { childs = new ArrayList<>(); - pcs=new PropertyChangeSupport(this); + pcs = new PropertyChangeSupport(this); } + /** + * Instantiates a new hier node. + * + * @param name the name + */ public HierNode(String name) { this(); - this.name=name; + this.name = name; } + /** + * Instantiates a new hier node. + * + * @param name the name + * @param parent the parent + */ public HierNode(String name, IHierNode parent) { this(); - this.name=name; - this.parent=parent; + this.name = name; + this.parent = parent; } + /** + * Adds the property change listener. + * + * @param l the l + */ @Override public void addPropertyChangeListener(PropertyChangeListener l) { pcs.addPropertyChangeListener(l); } + /** + * Removes the property change listener. + * + * @param l the l + */ @Override public void removePropertyChangeListener(PropertyChangeListener l) { pcs.removePropertyChangeListener(l); } - + /** + * Gets the full name. + * + * @return the full name + */ @Override public String getFullName() { - if(parent!=null) - return parent.getFullName()+"."+name; + if (parent != null) + return parent.getFullName() + "." + name; else return name; } + /** + * Gets the name. + * + * @return the name + */ @Override public String getName() { return name; } + /** + * Sets the name. + * + * @param name the new name + */ @Override public void setName(String name) { - this.name=name; + this.name = name; } + /** + * Sets the parent. + * + * @param parent the new parent + */ @Override public void setParent(IHierNode parent) { - this.parent=parent; + this.parent = parent; } + /** + * Gets the child nodes. + * + * @return the child nodes + */ @Override public List getChildNodes() { return childs; } + /** + * Adds the child. + * + * @param child the child + */ + public void addChild(IHierNode child) { + if (!childs.contains(child)) { + childs.add(child); + child.setParent(this); + } + } + + /** + * Compare to. + * + * @param o the o + * @return the int + */ @Override public int compareTo(IHierNode o) { return getFullName().compareTo(o.getFullName()); } + /** + * Derive waveform. + * + * @return the i derived waveform + */ @Override public IDerivedWaveform deriveWaveform() { return null; diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IDerivedWaveform.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IDerivedWaveform.java index 10beacd..60205db 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IDerivedWaveform.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IDerivedWaveform.java @@ -15,5 +15,10 @@ package com.minres.scviewer.database; */ public interface IDerivedWaveform extends IWaveform { + /** + * Adds the source waveform. + * + * @param waveform the waveform + */ void addSourceWaveform(IWaveform waveform); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IEvent.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IEvent.java index 6d0bf25..08d235f 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IEvent.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IEvent.java @@ -1,11 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database; +/** + * The Interface IEvent. + */ public interface IEvent { + /** + * Duplicate. + * + * @return the i event + * @throws CloneNotSupportedException the clone not supported exception + */ public IEvent duplicate() throws CloneNotSupportedException; + /** + * Gets the kind. + * + * @return the kind + */ public EventKind getKind(); - + + /** + * Gets the type. + * + * @return the type + */ public WaveformType getType(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IHierNode.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IHierNode.java index e91ea84..e81576e 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IHierNode.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IHierNode.java @@ -16,25 +16,22 @@ import java.util.List; /** * The Interface IHierNode. */ -public interface IHierNode extends Comparable{ - +public interface IHierNode extends Comparable { + /** * Attach a non-null PropertyChangeListener to this object. * - * @param l - * a non-null PropertyChangeListener instance - * @throws IllegalArgumentException - * if the parameter is null + * @param l a non-null PropertyChangeListener instance + * @throws IllegalArgumentException if the parameter is null */ public void addPropertyChangeListener(PropertyChangeListener l); /** * Remove a PropertyChangeListener from this component. * - * @param l - * a PropertyChangeListener instance + * @param l a PropertyChangeListener instance */ - public void removePropertyChangeListener(PropertyChangeListener l) ; + public void removePropertyChangeListener(PropertyChangeListener l); /** * Gets the full name. @@ -42,21 +39,21 @@ public interface IHierNode extends Comparable{ * @return the full name */ public String getFullName(); - + /** * Gets the name. * * @return the name */ public String getName(); - + /** * Sets the name. * * @param name the new name */ public void setName(String name); - + /** * Sets the parent. * @@ -70,7 +67,7 @@ public interface IHierNode extends Comparable{ * @return the child nodes */ public List getChildNodes(); - + /** * Derive waveform. * diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java index 85856a3..9e1bd83 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,22 +12,70 @@ package com.minres.scviewer.database; import java.util.NavigableMap; +/** + * The Interface IWaveform. + * + * @author eyck + */ public interface IWaveform extends IHierNode { + /** + * Gets the id. + * + * @return the id + */ public Long getId(); + /** + * Checks if is same. + * + * @param other the other + * @return true, if is same + */ public boolean isSame(IWaveform other); + /** + * Gets the events. + * + * @return the events + */ public NavigableMap getEvents(); + /** + * Gets the events at time. + * + * @param time the time + * @return the events at time + */ public IEvent[] getEventsAtTime(Long time); + /** + * Gets the events before time. + * + * @param time the time + * @return the events before time + */ public IEvent[] getEventsBeforeTime(Long time); - + + /** + * Gets the type. + * + * @return the type + */ public WaveformType getType(); - + + /** + * Gets the kind. + * + * @return the kind + */ public String getKind(); - + + /** + * Gets the width. + * + * @return the width + */ public int getWidth(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java index 2dee198..435c6f7 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,21 +13,58 @@ package com.minres.scviewer.database; import java.io.File; import java.util.List; - +/** + * The Interface IWaveformDb. + */ public interface IWaveformDb extends IHierNode { + /** + * Gets the max time. + * + * @return the max time + */ public Long getMaxTime(); - + + /** + * Gets the stream by name. + * + * @param name the name + * @return the stream by name + */ public IWaveform getStreamByName(String name); - + + /** + * Gets the all waves. + * + * @return the all waves + */ public List getAllWaves(); - + + /** + * Gets the all relation types. + * + * @return the all relation types + */ public List getAllRelationTypes(); - + + /** + * Load. + * + * @param inp the inp + * @return true, if successful + */ public boolean load(File inp); + /** + * Checks if is loaded. + * + * @return true, if is loaded + */ public boolean isLoaded(); + /** + * Clear. + */ public void clear(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbFactory.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbFactory.java index bfc39f6..cb40d78 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbFactory.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,7 +10,15 @@ *******************************************************************************/ package com.minres.scviewer.database; +/** + * A factory for creating IWaveformDb objects. + */ public interface IWaveformDbFactory { + /** + * Gets the database. + * + * @return the database + */ IWaveformDb getDatabase(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java index 0042008..099fa63 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,15 +13,66 @@ package com.minres.scviewer.database; import java.io.File; import java.util.Collection; +/** + * The Interface IWaveformDbLoader. + */ public interface IWaveformDbLoader { +// static final String STREAM_ADDED = "StreamAdded"; +// +// static final String GENERATOR_ADDED = "GeneratorAdded"; +// +// static final String LOADING_FINISHED = "LoadingFinished"; +// /** +// * Attach a non-null PropertyChangeListener to this object. +// * +// * @param l +// * a non-null PropertyChangeListener instance +// * @throws IllegalArgumentException +// * if the parameter is null +// */ +// public void addPropertyChangeListener(PropertyChangeListener l); +// +// /** +// * Remove a PropertyChangeListener from this component. +// * +// * @param l +// * a PropertyChangeListener instance +// */ +// public void removePropertyChangeListener(PropertyChangeListener l) ; + /** + * Load. + * + * @param db the db + * @param inp the inp + * @return true, if successful + * @throws InputFormatException the input format exception + */ public boolean load(IWaveformDb db, File inp) throws InputFormatException; - + + /** + * Gets the max time. + * + * @return the max time + */ public Long getMaxTime(); - - public Collection getAllWaves() ; - - public Collection getAllRelationTypes() ; - + + /** + * Gets the all waves. + * + * @return the all waves + */ + public Collection getAllWaves(); + + /** + * Gets the all relation types. + * + * @return the all relation types + */ + public Collection getAllRelationTypes(); + + /** + * Dispose. + */ public void dispose(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/InputFormatException.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/InputFormatException.java index e116321..2ed0124 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/InputFormatException.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/InputFormatException.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,11 +10,12 @@ *******************************************************************************/ package com.minres.scviewer.database; +/** + * The Class InputFormatException. + */ public class InputFormatException extends Exception { - /** - * - */ + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 8676129878197783368L; } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java index 16de19c..3fe2ceb 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,40 +12,74 @@ package com.minres.scviewer.database; import java.io.Serializable; +/** + * The Class RelationType. + */ public class RelationType implements Serializable { - /** - * - */ + + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 6394859077558971735L; + /** The name. */ private String name; + /** + * Instantiates a new relation type. + * + * @param name the name + */ RelationType(String name) { super(); this.name = name; } + /** + * Gets the name. + * + * @return the name + */ public String getName() { return name; } + /** + * Sets the name. + * + * @param name the new name + */ public void setName(String name) { this.name = name; } - - public String toString(){ + + /** + * To string. + * + * @return the string + */ + public String toString() { return name; } - + + /** + * Hash code. + * + * @return the int + */ @Override public int hashCode() { return name.hashCode(); } - + + /** + * Equals. + * + * @param obj the obj + * @return true, if successful + */ @Override public boolean equals(Object obj) { - if(obj instanceof RelationType) - return name.equals(((RelationType)obj).name); + if (obj instanceof RelationType) + return name.equals(((RelationType) obj).name); else return false; } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationTypeFactory.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationTypeFactory.java index 582805b..81336df 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationTypeFactory.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationTypeFactory.java @@ -1,22 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database; import java.util.HashMap; +/** + * A factory for creating RelationType objects. + */ public class RelationTypeFactory { - - public static RelationType create(String name){ - if(registry.containsKey(name)){ + + /** + * Creates the. + * + * @param name the name + * @return the relation type + */ + public static RelationType create(String name) { + if (registry.containsKey(name)) { return registry.get(name); - }else{ + } else { RelationType relType = new RelationType(name); registry.put(name, relType); return relType; } - + } - private RelationTypeFactory() {} - + /** + * Instantiates a new relation type factory. + */ + private RelationTypeFactory() { + } + + /** The registry. */ private static HashMap registry = new HashMap<>(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/WaveformType.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/WaveformType.java index 9e56f65..209f3c9 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/WaveformType.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/WaveformType.java @@ -1,5 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2020 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ package com.minres.scviewer.database; +/** + * The Enum WaveformType. + */ public enum WaveformType { - SIGNAL, TRANSACTION, FILTER + + /** The signal. */ + SIGNAL, + /** The transaction. */ + TRANSACTION, + /** The filter. */ + FILTER } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java index 32d20e8..5e548e5 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -25,67 +25,114 @@ import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbLoader; import com.minres.scviewer.database.RelationType; +/** + * The Class WaveformDb. + */ public class WaveformDb extends HierNode implements IWaveformDb { - private static List loaders=new LinkedList<>(); + /** The loaders. */ + private static List loaders = new LinkedList<>(); + /** The loaded. */ private boolean loaded; + /** The relation types. */ private List relationTypes; - + + /** The waveforms. */ private Map waveforms; + /** The max time. */ private Long maxTime; - - - public synchronized void bind(IWaveformDbLoader loader){ + + /** + * Bind. + * + * @param loader the loader + */ + public synchronized void bind(IWaveformDbLoader loader) { loaders.add(loader); } - public synchronized void unbind(IWaveformDbLoader loader){ + /** + * Unbind. + * + * @param loader the loader + */ + public synchronized void unbind(IWaveformDbLoader loader) { loaders.remove(loader); } - + /** + * Gets the loaders. + * + * @return the loaders + */ public static List getLoaders() { return Collections.unmodifiableList(loaders); } + /** + * Instantiates a new waveform db. + */ public WaveformDb() { super(); waveforms = new HashMap<>(); - relationTypes=new ArrayList<>(); - maxTime=0L; + relationTypes = new ArrayList<>(); + maxTime = 0L; } + /** + * Gets the max time. + * + * @return the max time + */ @Override public Long getMaxTime() { return maxTime; } + /** + * Gets the stream by name. + * + * @param name the name + * @return the stream by name + */ @Override public IWaveform getStreamByName(String name) { return waveforms.get(name); } + /** + * Gets the all waves. + * + * @return the all waves + */ @Override public List getAllWaves() { return new ArrayList<>(waveforms.values()); } + /** + * Load. + * + * @param inp the inp + * @return true, if successful + */ @Override - public boolean load(File inp){ - for(IWaveformDbLoader loader:loaders){ + public boolean load(File inp) { + for (IWaveformDbLoader loader : loaders) { try { - if(loader.load(this, inp)){ - for(IWaveform w:loader.getAllWaves()){ - waveforms.put(w.getFullName(),w); + if (loader.load(this, inp)) { + for (IWaveform w : loader.getAllWaves()) { + waveforms.put(w.getFullName(), w); } - if(loader.getMaxTime()>maxTime){ - maxTime=loader.getMaxTime(); + if (loader.getMaxTime() > maxTime) { + maxTime = loader.getMaxTime(); } - if(name==null) name=getFileBasename(inp.getName()); - buildHierarchyNodes() ; + if (name == null) + name = getFileBasename(inp.getName()); + buildHierarchyNodes(); relationTypes.addAll(loader.getAllRelationTypes()); pcs.firePropertyChange("WAVEFORMS", null, waveforms); pcs.firePropertyChange("CHILDS", null, childs); @@ -95,67 +142,94 @@ public class WaveformDb extends HierNode implements IWaveformDb { } catch (Exception e) { return false; } - } + } return false; } + /** + * Gets the file basename. + * + * @param f the f + * @return the file basename + */ protected static String getFileBasename(String f) { - String ext = ""; - int i = f.lastIndexOf('.'); - if (i > 0 && i < f.length() - 1) { - ext = f.substring(0, i); - } - return ext; - } + String ext = ""; + int i = f.lastIndexOf('.'); + if (i > 0 && i < f.length() - 1) { + ext = f.substring(0, i); + } + return ext; + } + /** + * Clear. + */ @Override public void clear() { waveforms.clear(); childs.clear(); - loaded=false; + loaded = false; } + /** + * Checks if is loaded. + * + * @return true, if is loaded + */ public boolean isLoaded() { return loaded; } + /** + * Builds the hierarchy nodes. + */ private void buildHierarchyNodes() { - for(IWaveform stream:getAllWaves()){ + for (IWaveform stream : getAllWaves()) { String[] hier = stream.getName().split("\\."); IHierNode node = this; - for(int i=0; i o1.getName().compareTo(o2.getName())); - for(IHierNode n:node.getChildNodes()) { - if(!n.getChildNodes().isEmpty()) + for (IHierNode n : node.getChildNodes()) { + if (!n.getChildNodes().isEmpty()) sortRecursive(n); } } + /** + * Gets the all relation types. + * + * @return the all relation types + */ @Override public List getAllRelationTypes() { return relationTypes; diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDbFactory.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDbFactory.java index 08b237d..3fb710c 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDbFactory.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDbFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -17,12 +17,20 @@ import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbFactory; /** - * @author eyck + * A factory for creating WaveformDb objects. * + * @author eyck */ public class WaveformDbFactory implements IWaveformDbFactory { - /* (non-Javadoc) + /** + * Gets the database. + * + * @return the database + */ + /* + * (non-Javadoc) + * * @see com.minres.scviewer.database.IWaveformDbFactory#getDatabase() */ @Override diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITx.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITx.java index 73e72d7..524a70a 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITx.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITx.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,23 +15,71 @@ import java.util.List; import com.minres.scviewer.database.IWaveform; -public interface ITx extends Comparable{ +/** + * The Interface ITx. + */ +public interface ITx extends Comparable { + /** + * Gets the id. + * + * @return the id + */ public Long getId(); - + + /** + * Gets the stream. + * + * @return the stream + */ public IWaveform getStream(); - + + /** + * Gets the generator. + * + * @return the generator + */ public ITxGenerator getGenerator(); - + + /** + * Gets the begin time. + * + * @return the begin time + */ public Long getBeginTime(); - + + /** + * Gets the end time. + * + * @return the end time + */ public Long getEndTime(); - + + /** + * Gets the concurrency index. + * + * @return the concurrency index + */ public int getConcurrencyIndex(); - + + /** + * Gets the attributes. + * + * @return the attributes + */ public List getAttributes(); - + + /** + * Gets the incoming relations. + * + * @return the incoming relations + */ public Collection getIncomingRelations(); + /** + * Gets the outgoing relations. + * + * @return the outgoing relations + */ public Collection getOutgoingRelations(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttribute.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttribute.java index 1e06781..39c4a6c 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttribute.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttribute.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,6 +10,15 @@ *******************************************************************************/ package com.minres.scviewer.database.tx; +/** + * The Interface ITxAttribute. + */ public interface ITxAttribute extends ITxAttributeType { + + /** + * Gets the value. + * + * @return the value + */ public Object getValue(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttributeType.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttributeType.java index fe21390..e204094 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttributeType.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxAttributeType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,8 +13,29 @@ package com.minres.scviewer.database.tx; import com.minres.scviewer.database.AssociationType; import com.minres.scviewer.database.DataType; +/** + * The Interface ITxAttributeType. + */ public interface ITxAttributeType { + + /** + * Gets the name. + * + * @return the name + */ public String getName(); + + /** + * Gets the data type. + * + * @return the data type + */ public DataType getDataType(); + + /** + * Gets the type. + * + * @return the type + */ public AssociationType getType(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxEvent.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxEvent.java index 1aada15..7c4930a 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxEvent.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxEvent.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,9 +12,22 @@ package com.minres.scviewer.database.tx; import com.minres.scviewer.database.IEvent; +/** + * The Interface ITxEvent. + */ public interface ITxEvent extends IEvent { + /** + * Gets the time. + * + * @return the time + */ public Long getTime(); - - public ITx getTransaction(); + + /** + * Gets the transaction. + * + * @return the transaction + */ + public ITx getTransaction(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxGenerator.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxGenerator.java index 7226b0c..5daf7bb 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxGenerator.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxGenerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,8 +12,16 @@ package com.minres.scviewer.database.tx; import com.minres.scviewer.database.IWaveform; +/** + * The Interface ITxGenerator. + */ public interface ITxGenerator extends IWaveform { + /** + * Gets the stream. + * + * @return the stream + */ public IWaveform getStream(); } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxRelation.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxRelation.java index 40eafe1..f994357 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxRelation.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/tx/ITxRelation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. + * Copyright (c) 2015 - 2020 MINRES Technologies GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,11 +12,29 @@ package com.minres.scviewer.database.tx; import com.minres.scviewer.database.RelationType; +/** + * The Interface ITxRelation. + */ public interface ITxRelation { + /** + * Gets the relation type. + * + * @return the relation type + */ RelationType getRelationType(); - + + /** + * Gets the source. + * + * @return the source + */ ITx getSource(); - + + /** + * Gets the target. + * + * @return the target + */ ITx getTarget(); }