Merge branch 'hotfix/tx_end_time_fix' into develop
This commit is contained in:
commit
d53db967b3
|
@ -76,6 +76,8 @@ public class TextDbLoader implements IWaveformDbLoader {
|
||||||
/** The transactions. */
|
/** The transactions. */
|
||||||
Map<Long, ScvTx> transactions = null;
|
Map<Long, ScvTx> transactions = null;
|
||||||
|
|
||||||
|
Map<Long, Long> id2index = new HashMap<>();
|
||||||
|
|
||||||
/** The attribute types. */
|
/** The attribute types. */
|
||||||
final Map<String, TxAttributeType> attributeTypes = UnifiedMap.newMap();
|
final Map<String, TxAttributeType> attributeTypes = UnifiedMap.newMap();
|
||||||
|
|
||||||
|
@ -107,6 +109,10 @@ public class TextDbLoader implements IWaveformDbLoader {
|
||||||
return maxTime;
|
return maxTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ScvTx getScvTx(long id) {
|
||||||
|
return transactions.get(id2index.get(id));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the all waves.
|
* Gets the all waves.
|
||||||
*
|
*
|
||||||
|
@ -280,6 +286,7 @@ public class TextDbLoader implements IWaveformDbLoader {
|
||||||
/** The attr value lut. */
|
/** The attr value lut. */
|
||||||
Map<String, Integer> attrValueLut = new HashMap<>();
|
Map<String, Integer> attrValueLut = new HashMap<>();
|
||||||
|
|
||||||
|
long indexCount = 0;
|
||||||
/**
|
/**
|
||||||
* Instantiates a new text db parser.
|
* Instantiates a new text db parser.
|
||||||
*
|
*
|
||||||
|
@ -367,7 +374,6 @@ public class TextDbLoader implements IWaveformDbLoader {
|
||||||
nextLine = reader.readLine();
|
nextLine = reader.readLine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
txSink.put(id, scvTx);
|
|
||||||
transactionById.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]);
|
Long id = Long.parseLong(tokens[1]);
|
||||||
|
@ -401,6 +407,9 @@ public class TextDbLoader implements IWaveformDbLoader {
|
||||||
nextLine = reader.readLine();
|
nextLine = reader.readLine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
txSink.put(indexCount, scvTx);
|
||||||
|
loader.id2index.put(scvTx.getId(), indexCount++);
|
||||||
|
transactionById.remove(id);
|
||||||
} else if ("tx_relation".equals(tokens[0])) {
|
} else if ("tx_relation".equals(tokens[0])) {
|
||||||
Long tr2 = Long.parseLong(tokens[2]);
|
Long tr2 = Long.parseLong(tokens[2]);
|
||||||
Long tr1 = Long.parseLong(tokens[3]);
|
Long tr1 = Long.parseLong(tokens[3]);
|
||||||
|
|
|
@ -113,7 +113,7 @@ class Tx implements ITx {
|
||||||
return true;
|
return true;
|
||||||
if (obj == null || getClass() != obj.getClass())
|
if (obj == null || getClass() != obj.getClass())
|
||||||
return false;
|
return false;
|
||||||
return this.getScvTx().equals(((Tx) obj).getScvTx());
|
return this.loader.getScvTx(id).equals(((Tx) obj).loader.getScvTx(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,7 +123,7 @@ class Tx implements ITx {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return getScvTx().hashCode();
|
return loader.getScvTx(id).hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -143,7 +143,7 @@ class Tx implements ITx {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
return getScvTx().id;
|
return loader.getScvTx(id).id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -153,7 +153,7 @@ class Tx implements ITx {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public IWaveform getStream() {
|
public IWaveform getStream() {
|
||||||
return loader.txStreams.get(getScvTx().streamId);
|
return loader.txStreams.get(loader.getScvTx(id).streamId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163,7 +163,7 @@ class Tx implements ITx {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ITxGenerator getGenerator() {
|
public ITxGenerator getGenerator() {
|
||||||
return loader.txGenerators.get(getScvTx().generatorId);
|
return loader.txGenerators.get(loader.getScvTx(id).generatorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -174,7 +174,7 @@ class Tx implements ITx {
|
||||||
@Override
|
@Override
|
||||||
public Long getBeginTime() {
|
public Long getBeginTime() {
|
||||||
if (beginTime < 0)
|
if (beginTime < 0)
|
||||||
beginTime = getScvTx().beginTime;
|
beginTime = loader.getScvTx(id).beginTime;
|
||||||
return beginTime;
|
return beginTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ class Tx implements ITx {
|
||||||
@Override
|
@Override
|
||||||
public Long getEndTime() {
|
public Long getEndTime() {
|
||||||
if (endTime < 0)
|
if (endTime < 0)
|
||||||
endTime = getScvTx().endTime;
|
endTime = loader.getScvTx(id).endTime;
|
||||||
return endTime;
|
return endTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ class Tx implements ITx {
|
||||||
* @param time the new end time
|
* @param time the new end time
|
||||||
*/
|
*/
|
||||||
void setEndTime(Long time) {
|
void setEndTime(Long time) {
|
||||||
getScvTx().endTime = time;
|
loader.getScvTx(id).endTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,15 +225,7 @@ class Tx implements ITx {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<ITxAttribute> getAttributes() {
|
public List<ITxAttribute> getAttributes() {
|
||||||
return getScvTx().attributes;
|
return loader.getScvTx(id).attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the scv tx.
|
|
||||||
*
|
|
||||||
* @return the scv tx
|
|
||||||
*/
|
|
||||||
private ScvTx getScvTx() {
|
|
||||||
return loader.transactions.get(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,5 +120,15 @@ public class DatabaseServicesTest {
|
||||||
assertEquals(1, waveformDb.getChildNodes().size());
|
assertEquals(1, waveformDb.getChildNodes().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLargeTxText() throws Exception {
|
||||||
|
File f = new File("inputs/hw_config_10_10.txlog").getAbsoluteFile();
|
||||||
|
assertTrue(f.exists());
|
||||||
|
waveformDb.load(f);
|
||||||
|
assertNotNull(waveformDb);
|
||||||
|
List<IWaveform> waveforms = waveformDb.getAllWaves();
|
||||||
|
assertEquals(100, waveforms.size());
|
||||||
|
assertEquals(1, waveformDb.getChildNodes().size());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue