Fixed bugs and enhanced functionality to allow E4 application
This commit is contained in:
@@ -19,6 +19,8 @@ public class HierNode implements IHierNode {
|
||||
|
||||
protected String name;
|
||||
|
||||
protected String parentName;
|
||||
|
||||
protected ArrayList<IHierNode> childs;
|
||||
|
||||
protected PropertyChangeSupport pcs;
|
||||
@@ -29,8 +31,13 @@ public class HierNode implements IHierNode {
|
||||
}
|
||||
|
||||
public HierNode(String name) {
|
||||
this(name, "");
|
||||
}
|
||||
|
||||
public HierNode(String name, String parentName) {
|
||||
this();
|
||||
this.name=name;
|
||||
this.parentName=parentName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,7 +53,10 @@ public class HierNode implements IHierNode {
|
||||
|
||||
@Override
|
||||
public String getFullName() {
|
||||
return name;
|
||||
if(parentName!=null && parentName.length()>0)
|
||||
return parentName+"."+name;
|
||||
else
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +69,11 @@ public class HierNode implements IHierNode {
|
||||
this.name=name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setParentName(String name) {
|
||||
this.parentName=name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IHierNode> getChildNodes() {
|
||||
return childs;
|
||||
|
@@ -39,6 +39,8 @@ public interface IHierNode extends Comparable<IHierNode>{
|
||||
|
||||
public void setName(String name);
|
||||
|
||||
public void setParentName(String name);
|
||||
|
||||
public List<IHierNode> getChildNodes();
|
||||
|
||||
}
|
||||
|
@@ -18,5 +18,7 @@ public interface IWaveform<T extends IWaveformEvent> extends IHierNode {
|
||||
public String getKind();
|
||||
|
||||
public IWaveformDb getDb();
|
||||
|
||||
public Boolean equals(IWaveform<? extends IWaveformEvent> other);
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,6 @@
|
||||
package com.minres.scviewer.database;
|
||||
|
||||
public interface IWaveformDbFactory {
|
||||
|
||||
IWaveformDb getDatabase();
|
||||
}
|
@@ -8,7 +8,7 @@
|
||||
* Contributors:
|
||||
* MINRES Technologies GmbH - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package com.minres.scviewer.database;
|
||||
package com.minres.scviewer.database.internal;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -18,6 +18,17 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.minres.scviewer.database.HierNode;
|
||||
import com.minres.scviewer.database.IHierNode;
|
||||
import com.minres.scviewer.database.ISignal;
|
||||
import com.minres.scviewer.database.ITxStream;
|
||||
import com.minres.scviewer.database.IWaveform;
|
||||
import com.minres.scviewer.database.IWaveformDb;
|
||||
import com.minres.scviewer.database.IWaveformDbLoader;
|
||||
import com.minres.scviewer.database.IWaveformEvent;
|
||||
import com.minres.scviewer.database.InputFormatException;
|
||||
|
||||
public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
|
||||
private static List<IWaveformDbLoader> loaders=new LinkedList<IWaveformDbLoader>();
|
||||
@@ -29,11 +40,11 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
private Long maxTime;
|
||||
|
||||
|
||||
public void bind(IWaveformDbLoader loader){
|
||||
public synchronized void bind(IWaveformDbLoader loader){
|
||||
loaders.add(loader);
|
||||
}
|
||||
|
||||
public void unbind(IWaveformDbLoader loader){
|
||||
public synchronized void unbind(IWaveformDbLoader loader){
|
||||
loaders.remove(loader);
|
||||
}
|
||||
|
||||
@@ -73,8 +84,8 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
if(loader.getMaxTime()>maxTime){
|
||||
maxTime=loader.getMaxTime();
|
||||
}
|
||||
buildHierarchyNodes() ;
|
||||
if(name==null) name=getFileBasename(inp.getName());
|
||||
buildHierarchyNodes() ;
|
||||
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
|
||||
pcs.firePropertyChange("CHILDS", null, childNodes);
|
||||
return true;
|
||||
@@ -102,16 +113,18 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
childNodes= new ArrayList<IHierNode>();
|
||||
for(IWaveform<?> stream:getAllWaves()){
|
||||
updateMaxTime(stream);
|
||||
String[] hier = stream.getFullName().split("\\.");
|
||||
String[] hier = stream.getName().split("\\.");
|
||||
IHierNode node = this;
|
||||
List<String> path=new LinkedList<String>();
|
||||
path.add(name);
|
||||
for(String name:hier){
|
||||
IHierNode n1 = null;
|
||||
for (IHierNode n : node.getChildNodes()) {
|
||||
if (n.getName().equals(name)) {
|
||||
n1=n;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (IHierNode n : node.getChildNodes()) {
|
||||
if (n.getName().equals(name)) {
|
||||
n1=n;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(name == hier[hier.length-1]){ //leaf
|
||||
if(n1!=null) {
|
||||
if(n1 instanceof HierNode){
|
||||
@@ -123,6 +136,7 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
}
|
||||
}
|
||||
stream.setName(name);
|
||||
stream.setParentName(Joiner.on(".").join(path));
|
||||
node.getChildNodes().add(stream);
|
||||
Collections.sort(node.getChildNodes());
|
||||
node=stream;
|
||||
@@ -130,12 +144,13 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
if(n1 != null) {
|
||||
node=n1;
|
||||
} else {
|
||||
HierNode newNode = new HierNode(name);
|
||||
HierNode newNode = new HierNode(name, Joiner.on(".").join(path));
|
||||
node.getChildNodes().add(newNode);
|
||||
Collections.sort(node.getChildNodes());
|
||||
node=newNode;
|
||||
}
|
||||
}
|
||||
path.add(name);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package com.minres.scviewer.database.internal;
|
||||
|
||||
import com.minres.scviewer.database.IWaveformDb;
|
||||
import com.minres.scviewer.database.IWaveformDbFactory;
|
||||
|
||||
/**
|
||||
* @author eyck
|
||||
*
|
||||
*/
|
||||
public class WaveformDbFactory implements IWaveformDbFactory {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.minres.scviewer.database.IWaveformDbFactory#getDatabase()
|
||||
*/
|
||||
@Override
|
||||
public IWaveformDb getDatabase() {
|
||||
return new WaveformDb();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user