Fixed bugs and enhanced functionality to allow E4 application

This commit is contained in:
2015-10-22 00:02:58 +02:00
parent 1f338cbf3f
commit ef3ce7273a
25 changed files with 1066 additions and 727 deletions

View File

@ -7,7 +7,8 @@ Bundle-Vendor: MINRES Technologies GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: com.minres.scviewer.database
Bundle-ActivationPolicy: lazy
Service-Component: OSGI-INF/component.xml
Service-Component: OSGI-INF/component.xml,OSGI-INF/component2.xml
Require-Bundle: org.eclipse.equinox.ds;bundle-version="1.4.200",
org.eclipse.equinox.util;bundle-version="1.0.500",
org.eclipse.osgi.services;bundle-version="3.4.0"
org.eclipse.osgi.services;bundle-version="3.4.0",
org.eclipse.wb.core.lib

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.minres.scviewer.database">
<implementation class="com.minres.scviewer.database.WaveformDb"/>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.minres.scviewer.database.loader">
<implementation class="com.minres.scviewer.database.internal.WaveformDb"/>
<reference bind="bind" cardinality="1..n" interface="com.minres.scviewer.database.IWaveformDbLoader" name="IWaveformDbLoader" policy="dynamic" unbind="unbind"/>
</scr:component>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.minres.scviewer.database">
<implementation class="com.minres.scviewer.database.internal.WaveformDbFactory"/>
<service>
<provide interface="com.minres.scviewer.database.IWaveformDbFactory"/>
</service>
</scr:component>

View File

@ -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;

View File

@ -39,6 +39,8 @@ public interface IHierNode extends Comparable<IHierNode>{
public void setName(String name);
public void setParentName(String name);
public List<IHierNode> getChildNodes();
}

View File

@ -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);
}

View File

@ -0,0 +1,6 @@
package com.minres.scviewer.database;
public interface IWaveformDbFactory {
IWaveformDb getDatabase();
}

View File

@ -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);
}
}
}

View File

@ -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();
}
}