Added MapDB backing store for Text based Transactions, cleanup of

imports etc.
This commit is contained in:
2018-11-06 08:24:26 +01:00
parent c080773878
commit 47a285bf6d
24 changed files with 116 additions and 150 deletions

View File

@ -96,16 +96,15 @@ public class BitVector {
public long toUnsignedValue() {
long res = 0;
int bitOffset = width * 2;
int wordOffset = bitOffset >> 5;
bitOffset &= 31;
int currentWord = packedValues[wordOffset] >> bitOffset;
int bitOffset = 0;
int wordOffset = 0;
int currentWord = 0;
// Copy values out of packed array
for (int i = 0; i < width; i++) {
res<<=1;
if(bitOffset==0) currentWord = packedValues[wordOffset];
switch (currentWord & 3) {
case 1:
res++;
res|=1<<i;
break;
case 2:
case 3:
@ -116,7 +115,6 @@ public class BitVector {
bitOffset += 2;
if (bitOffset == 32) {
wordOffset++;
currentWord = packedValues[wordOffset];
bitOffset = 0;
} else {
currentWord >>= 2;
@ -126,42 +124,46 @@ public class BitVector {
}
public long toSignedValue() {
Boolean negative=null;
long res = 0;
int bitOffset = width * 2;
int wordOffset = bitOffset >> 5;
bitOffset &= 31;
int currentWord = packedValues[wordOffset] >> bitOffset;
int bitOffset = 0;
int wordOffset = 0;
int currentWord = 0;
int lastVal=0;
// Copy values out of packed array
for (int i = 0; i < width; i++) {
if(negative == null) {
switch (currentWord & 3) {
case 1: negative=true; break;
case 0: negative=false; break;
case 2:
case 3: return 0;
default:
}
} else {
res<<=1;
switch (currentWord & 3) {
case 1: if(!negative) res++; break;
case 0: if(negative) res++; break;
case 2:
case 3: return 0;
default:
}
if(bitOffset==0) currentWord = packedValues[wordOffset];
lastVal=0;
switch (currentWord & 3) {
case 1:
res|=1<<i;
lastVal=1;
break;
case 2:
case 3:
return 0;
default:
}
bitOffset += 2;
if (bitOffset == 32) {
wordOffset++;
currentWord = packedValues[wordOffset];
bitOffset = 0;
} else {
currentWord >>= 2;
}
}
return negative?-1*(res+1):res;
for(int i=width; i<64; i++) {
if(bitOffset==0) currentWord = packedValues[wordOffset];
res|=lastVal<<i;
bitOffset += 2;
if (bitOffset == 32) {
wordOffset++;
bitOffset = 0;
} else {
currentWord >>= 2;
}
}
return res;
}
}

View File

@ -24,7 +24,7 @@ public interface IWaveformDb extends IHierNode {
public List<RelationType> getAllRelationTypes();
public boolean load(File inp) throws Exception;
public boolean load(File inp);
public boolean isLoaded();

View File

@ -22,12 +22,9 @@ import java.util.Map;
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;
import com.minres.scviewer.database.RelationType;
@ -82,22 +79,26 @@ public class WaveformDb extends HierNode implements IWaveformDb {
}
@Override
public boolean load(File inp) throws Exception {
public boolean load(File inp){
for(IWaveformDbLoader loader:loaders){
if(loader.load(this, inp)){
for(IWaveform w:loader.getAllWaves()){
waveforms.put(w.getFullName(),w);
try {
if(loader.load(this, inp)){
for(IWaveform w:loader.getAllWaves()){
waveforms.put(w.getFullName(),w);
}
if(loader.getMaxTime()>maxTime){
maxTime=loader.getMaxTime();
}
if(name==null) name=getFileBasename(inp.getName());
buildHierarchyNodes() ;
relationTypes.addAll(loader.getAllRelationTypes());
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
pcs.firePropertyChange("CHILDS", null, childNodes);
loaded = true;
return true;
}
if(loader.getMaxTime()>maxTime){
maxTime=loader.getMaxTime();
}
if(name==null) name=getFileBasename(inp.getName());
buildHierarchyNodes() ;
relationTypes.addAll(loader.getAllRelationTypes());
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
pcs.firePropertyChange("CHILDS", null, childNodes);
loaded = true;
return true;
} catch (Exception e) {
return false;
}
}
return false;