2015-01-03 16:34:32 +01:00
|
|
|
package com.minres.scviewer.database.sqlite;
|
|
|
|
|
|
|
|
import java.beans.IntrospectionException;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
|
|
|
2015-01-06 17:14:16 +01:00
|
|
|
import com.minres.scviewer.database.HierNode;
|
|
|
|
import com.minres.scviewer.database.ITxGenerator;
|
|
|
|
import com.minres.scviewer.database.ITxStream;
|
|
|
|
import com.minres.scviewer.database.ITx;
|
2015-01-03 16:34:32 +01:00
|
|
|
import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler;
|
|
|
|
import com.minres.scviewer.database.sqlite.tables.ScvGenerator;
|
|
|
|
import com.minres.scviewer.database.sqlite.tables.ScvStream;
|
|
|
|
import com.minres.scviewer.database.sqlite.tables.ScvTx;
|
|
|
|
|
2015-01-06 17:14:16 +01:00
|
|
|
public class TxStream extends HierNode implements ITxStream {
|
2015-01-03 16:34:32 +01:00
|
|
|
|
|
|
|
private String fullName;
|
2015-01-06 17:14:16 +01:00
|
|
|
|
2015-01-03 16:34:32 +01:00
|
|
|
private SQLiteDb db;
|
2015-01-06 17:14:16 +01:00
|
|
|
|
2015-01-03 16:34:32 +01:00
|
|
|
private ScvStream scvStream;
|
|
|
|
|
2015-01-06 17:14:16 +01:00
|
|
|
private HashMap<Integer, TxGenerator> generators;
|
|
|
|
|
|
|
|
private List<ITx> transactions;
|
2015-01-03 16:34:32 +01:00
|
|
|
|
2015-01-06 17:14:16 +01:00
|
|
|
public TxStream(SQLiteDb trSQLiteDb, ScvStream scvStream) {
|
2015-01-03 16:34:32 +01:00
|
|
|
super(scvStream.getName());
|
|
|
|
fullName=scvStream.getName();
|
|
|
|
this.scvStream=scvStream;
|
|
|
|
db=trSQLiteDb;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getFullName() {
|
|
|
|
return fullName;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Long getId() {
|
|
|
|
return (long) scvStream.getId();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getKind() {
|
|
|
|
return scvStream.getKind();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public SQLiteDb getDb() {
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-01-06 17:14:16 +01:00
|
|
|
public List<ITxGenerator> getGenerators() {
|
2015-01-03 16:34:32 +01:00
|
|
|
if(generators==null){
|
|
|
|
SQLiteDatabaseSelectHandler<ScvGenerator> handler = new SQLiteDatabaseSelectHandler<ScvGenerator>(
|
|
|
|
ScvGenerator.class, db.getDb(), "stream="+scvStream.getId());
|
2015-01-06 17:14:16 +01:00
|
|
|
generators=new HashMap<Integer, TxGenerator>();
|
2015-01-03 16:34:32 +01:00
|
|
|
try {
|
|
|
|
for(ScvGenerator scvGenerator:handler.selectObjects()){
|
2015-01-06 17:14:16 +01:00
|
|
|
generators.put(scvGenerator.getId(), new TxGenerator(this, scvGenerator));
|
2015-01-03 16:34:32 +01:00
|
|
|
}
|
|
|
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
|
|
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
2015-01-06 17:14:16 +01:00
|
|
|
return new ArrayList<ITxGenerator>(generators.values());
|
2015-01-03 16:34:32 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-01-06 17:14:16 +01:00
|
|
|
public List<ITx> getTransactions() {
|
2015-01-03 16:34:32 +01:00
|
|
|
checkTransactions();
|
|
|
|
return transactions;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-01-06 17:14:16 +01:00
|
|
|
public ITx getTransactionById(long id) {
|
2015-01-03 16:34:32 +01:00
|
|
|
checkTransactions();
|
2015-01-06 17:14:16 +01:00
|
|
|
for(ITx trans:transactions){
|
2015-01-03 16:34:32 +01:00
|
|
|
if(trans.getId()==id)
|
|
|
|
return trans;
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected void checkTransactions() {
|
|
|
|
if(transactions==null){
|
|
|
|
if(generators==null) getGenerators();
|
|
|
|
SQLiteDatabaseSelectHandler<ScvTx> handler = new SQLiteDatabaseSelectHandler<ScvTx>(ScvTx.class, db.getDb(),
|
|
|
|
"stream="+scvStream.getId());
|
2015-01-06 17:14:16 +01:00
|
|
|
transactions=new ArrayList<ITx>();
|
2015-01-03 16:34:32 +01:00
|
|
|
try {
|
|
|
|
for(ScvTx scvTx:handler.selectObjects()){
|
2015-01-06 17:14:16 +01:00
|
|
|
transactions.add(new Tx(this, generators.get(scvTx.getGenerator()), scvTx));
|
2015-01-03 16:34:32 +01:00
|
|
|
}
|
|
|
|
} catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException
|
|
|
|
| InvocationTargetException | SQLException | IntrospectionException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|