/*
* Copyright (C) 2010-2011 Dmitry Petuhov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.pvoid.apteryxaustralis.storage.osmp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;
import android.util.Log;
import org.pvoid.apteryxaustralis.types.Account;
import org.pvoid.apteryxaustralis.types.Group;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
class Storage
{
public static final String DB_NAME = "apteryx";
public static final int DB_VERSION = 6;
/**
* Описание таблицы аккаунтов
*/
private static interface Accounts
{
static final String TABLE_NAME = "accounts";
//////// Колонки
static final String COLUMN_ID = "id";
static final String COLUMN_TITLE = "title";
static final String COLUMN_LOGIN = "login";
static final String COLUMN_PASSWORD = "password";
static final String COLUMN_TERMINAL = "terminal";
//////// Запросы
static final String CREATE_SQL = "create table " + TABLE_NAME + " (" +
COLUMN_ID + " text primary key," +
COLUMN_TITLE + " text not null," +
COLUMN_LOGIN + " text not null," +
COLUMN_PASSWORD + " text not null," +
COLUMN_TERMINAL + " text not null);";
static final String ID_CLAUSE = COLUMN_ID+"=?";
}
/**
* Описание таблицы агентов
*/
private static interface Agents
{
static final String TABLE_NAME = "agents";
static final String COLUMN_ACCOUNT = "account";
static final String COLUMN_AGENT = "agent_id";
static final String COLUMN_AGENT_NAME = "agent_name";
static final String COLUMN_BALANCE = "agent_balance";
static final String COLUMN_OVERDRAFT = "agent_overdraft";
static final String COLUMN_LAST_UPDATE = "last_update";
static final String CREATE_SQL = "create table " + TABLE_NAME +" ("+
COLUMN_ACCOUNT+" text not null," +
COLUMN_AGENT_NAME+" text not null," +
COLUMN_BALANCE+" text not null," +
COLUMN_OVERDRAFT+" text not null," +
COLUMN_LAST_UPDATE+" integer not null,"+
COLUMN_AGENT+" text not null primary key)";
static final String ACTIVE_AGENTS_QUERY = "select a."+COLUMN_AGENT+","+
"a."+COLUMN_AGENT_NAME+","+
"a."+COLUMN_LAST_UPDATE+","+
"a."+COLUMN_BALANCE+","+
"a."+COLUMN_OVERDRAFT+
" from "+TABLE_NAME+" a inner join "+Terminals.TABLE_NAME+" t"+
" on a."+COLUMN_AGENT+"=t."+Terminals.COLUMN_AGENTID+
" group by a."+COLUMN_AGENT;
static final String ACCOUNT_CLAUSE = COLUMN_ACCOUNT + "=?";
}
/**
* Описание таблицы терминалов
*/
private static interface Terminals
{
static final String TABLE_NAME = "terminals";
//////// Колонки
static final String COLUMN_ID = "id";
static final String COLUMN_ADDRESS = "address";
static final String COLUMN_STATE = "state";
static final String COLUMN_MS = "ms";
static final String COLUMN_PRINTERSTATE = "printer_state";
static final String COLUMN_CASHBINSTATE = "cashbin_state";
static final String COLUMN_LPD = "lpd";
static final String COLUMN_CASH = "cash";
static final String COLUMN_LASTACTIVITY = "last_activity";
static final String COLUMN_LASTPAYMENT = "last_payment";
static final String COLUMN_BONDS = "bonds_count";
static final String COLUMN_BALANCE = "balance";
static final String COLUMN_SIGNALLEVEL = "signal_level";
static final String COLUMN_SOFTVERSION = "soft_version";
static final String COLUMN_PRINTERMODEL = "printer_model";
static final String COLUMN_CASHBINMODEL = "cashbin_model";
static final String COLUMN_BONDS10 = "bonds_10";
static final String COLUMN_BONDS50 = "bonds_50";
static final String COLUMN_BONDS100 = "bonds_100";
static final String COLUMN_BONDS500 = "bonds_500";
static final String COLUMN_BONDS1000 = "bonds_1000";
static final String COLUMN_BONDS5000 = "bonds_5000";
static final String COLUMN_BONDS10000 = "bonds_10000";
static final String COLUMN_PAYSPERHOUR = "pays_per_hour";
static final String COLUMN_AGENTID = "agent_id";
static final String COLUMN_AGENTNAME = "agent_name";
static final String COLUMN_ACCOUNTID = "account_id";
//////// Запросы
static final String CREATE_SQL = "create table "+TABLE_NAME+" ("+
COLUMN_ID +" integer not null primary key asc,"+
COLUMN_ADDRESS + " text not null,"+
COLUMN_STATE + " integer," +
COLUMN_MS + " integer not null," +
COLUMN_ACCOUNTID + " integer not null,"+
COLUMN_PRINTERSTATE + " text not null,"+
COLUMN_CASHBINSTATE + " text not null," +
COLUMN_LPD + " text not null,"+
COLUMN_CASH + " integer not null,"+
COLUMN_LASTACTIVITY + " text not null,"+
COLUMN_LASTPAYMENT + " text not null,"+
COLUMN_BONDS + " integer not null," +
COLUMN_BALANCE + " text not null,"+
COLUMN_SIGNALLEVEL + " integer not null,"+
COLUMN_SOFTVERSION + " text not null," +
COLUMN_PRINTERMODEL + " text not null,"+
COLUMN_CASHBINMODEL + " text null," +
COLUMN_BONDS10 + " integer not null,"+
COLUMN_BONDS50 + " integer not null,"+
COLUMN_BONDS100 + " integer not null," +
COLUMN_BONDS500 + " integer not null,"+
COLUMN_BONDS1000 + " integer not null,"+
COLUMN_BONDS5000 + " integer not null," +
COLUMN_BONDS10000 + " integer not null,"+
COLUMN_PAYSPERHOUR + " text not null,"+
COLUMN_AGENTID + " text not null," +
COLUMN_AGENTNAME + " text not null);";
static final String AGENT_ID_CLAUSE = COLUMN_AGENTID+"=?";
static final String TERMINAL_ID_CLAUSE = COLUMN_ID+"=?";
}
private static String ACCOUNT_FROM_AGENT_QUERY = "select c."+Accounts.COLUMN_ID + ",c." +
Accounts.COLUMN_TITLE + ",c." +
Accounts.COLUMN_LOGIN + ",c." +
Accounts.COLUMN_PASSWORD + ",c." +
Accounts.COLUMN_TERMINAL +
" from " + Accounts.TABLE_NAME + " c inner join " + Agents.TABLE_NAME+
" a on c." + Accounts.COLUMN_ID + "=a." + Agents.COLUMN_ACCOUNT +
" where a."+Agents.COLUMN_AGENT+"=?";
private DatabaseHelper _mDatabase;
private Context _Context;
private final Object _mLock = new Object();
private static class DatabaseHelper extends SQLiteOpenHelper
{
public DatabaseHelper(Context context)
{
super(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(Accounts.CREATE_SQL);
db.execSQL(Terminals.CREATE_SQL);
db.execSQL(Agents.CREATE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d(Storage.class.getSimpleName(),"Old db version: " + oldVersion + " new db version: " + newVersion);
switch(oldVersion)
{
case 2:
db.execSQL("alter table " + Terminals.TABLE_NAME + " add column " + Terminals.COLUMN_ACCOUNTID + " integer not null default 0");
db.execSQL("alter table " + Agents.TABLE_NAME + " add column " + Agents.COLUMN_AGENT_NAME + " text not null default ''");
db.execSQL("alter table " + Agents.TABLE_NAME + " add column " + Agents.COLUMN_BALANCE + " text not null default '0'");
db.execSQL("alter table " + Agents.TABLE_NAME + " add column " + Agents.COLUMN_OVERDRAFT + " text not null default '0'");
db.execSQL("drop table balances");
case 3:
db.execSQL("alter table " + Terminals.TABLE_NAME + " add column " + Terminals.COLUMN_MS + " integer not null default 0");
case 4:
db.execSQL("alter table " + Agents.TABLE_NAME + " add column " + Agents.COLUMN_LAST_UPDATE + " integer not null default '0'");
case 5:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
TimeZone timezone = TimeZone.getTimeZone("Europe/Moscow");
dateFormat.setTimeZone(timezone);
Cursor cursor = db.query(Terminals.TABLE_NAME,
new String[]{Terminals.COLUMN_ID, Terminals.COLUMN_LASTACTIVITY, Terminals.COLUMN_LASTPAYMENT},
null,null,null,null,null);
ArrayList<ContentValues> values = new ArrayList<ContentValues>();
if(cursor!=null)
try
{
while(cursor.moveToNext())
{
ContentValues value = new ContentValues();
value.put(Terminals.COLUMN_ID,cursor.getLong(0));
try
{
value.put(Terminals.COLUMN_LASTACTIVITY,dateFormat.parse(cursor.getString(1)).getTime());
value.put(Terminals.COLUMN_LASTPAYMENT,dateFormat.parse(cursor.getString(2)).getTime());
}
catch(ParseException e)
{
e.printStackTrace();
value.put(Terminals.COLUMN_LASTACTIVITY,0);
value.put(Terminals.COLUMN_LASTPAYMENT,0);
}
values.add(value);
}
}
finally
{
cursor.close();
}
for(ContentValues value : values)
{
db.update(Terminals.TABLE_NAME,value,Terminals.COLUMN_ID+"=?",new String[] {value.getAsString(Terminals.COLUMN_ID)});
}
}
}
}
private synchronized SQLiteDatabase OpenWrite()
{
if(_mDatabase==null)
_mDatabase = new DatabaseHelper(_Context);
return(_mDatabase.getWritableDatabase());
}
private synchronized SQLiteDatabase OpenRead()
{
if(_mDatabase==null)
_mDatabase = new DatabaseHelper(_Context);
return(_mDatabase.getReadableDatabase());
}
public Storage(Context context)
{
_Context = context;
}
public boolean addAccount(long id, String title, String login, String password, String terminal)
{
synchronized(_mLock)
{
ContentValues values = new ContentValues();
values.put(Accounts.COLUMN_ID, Long.toString(id));
values.put(Accounts.COLUMN_TITLE, title);
values.put(Accounts.COLUMN_LOGIN, login);
values.put(Accounts.COLUMN_PASSWORD, password);
values.put(Accounts.COLUMN_TERMINAL, terminal);
SQLiteDatabase db = OpenWrite();
try
{
boolean result = db.insert(Accounts.TABLE_NAME, null, values)!=-1;
return(result);
}
finally
{
db.close();
}
}
}
public Account getAccount(long id)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.query(Accounts.TABLE_NAME, new String[] {Accounts.COLUMN_ID,
Accounts.COLUMN_TITLE,
Accounts.COLUMN_LOGIN,
Accounts.COLUMN_PASSWORD,
Accounts.COLUMN_TERMINAL},
Accounts.COLUMN_ID+"=?", new String[] {Long.toString(id)}, null, null, null, null);
if(cursor!=null)
{
try
{
if(cursor.moveToFirst())
{
return new Account(Long.parseLong(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4));
}
}
finally
{
cursor.close();
}
}
}
finally
{
db.close();
}
return null;
}
}
public void EditAccount(long id,String title, String login, String password, String terminal)
{
synchronized(_mLock)
{
ContentValues values = new ContentValues();
values.put(Accounts.COLUMN_TITLE, title);
values.put(Accounts.COLUMN_LOGIN, login);
values.put(Accounts.COLUMN_PASSWORD, password);
values.put(Accounts.COLUMN_TERMINAL, terminal);
SQLiteDatabase db = OpenWrite();
try
{
db.update(Accounts.TABLE_NAME, values, Accounts.ID_CLAUSE, new String[] {Long.toString(id)});
}
finally
{
db.close();
}
}
}
public void DeleteAccount(long id)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenWrite();
try
{
db.delete(Accounts.TABLE_NAME, Accounts.ID_CLAUSE, new String[] {Long.toString(id)});
// TODO: Удалить агентов и терминалы
}
finally
{
db.close();
}
}
}
/**
* Возвращает все имеющиеся учетные записи
* @param adapter Куда записать
*/
public void getAccounts(final List<Account> adapter)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.query(Accounts.TABLE_NAME, new String[] {Accounts.COLUMN_ID,
Accounts.COLUMN_TITLE,
Accounts.COLUMN_LOGIN,
Accounts.COLUMN_PASSWORD,
Accounts.COLUMN_TERMINAL},
null, null, null, null, null, null);
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
do
{
adapter.add(new Account(Long.parseLong(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4)));
}
while(cursor.moveToNext());
}
}
finally
{
cursor.close();
}
}
finally
{
db.close();
}
}
}
public Account getAccountFromAgent(long agentId)
{
Account result = null;
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.rawQuery(ACCOUNT_FROM_AGENT_QUERY,new String[] {Long.toString(agentId)});
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
result = new Account(cursor.getLong(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4));
}
}
finally
{
cursor.close();
}
return result;
}
finally
{
db.close();
}
}
public void saveTerminals(long accountId, final List<Terminal> terminals)
{
synchronized(_mLock)
{
ContentValues values = new ContentValues();
SQLiteDatabase db = OpenWrite();
db.delete(Terminals.TABLE_NAME, Terminals.COLUMN_ACCOUNTID + "=?", new String[] {Long.toString(accountId)});
for(Terminal terminal : terminals )
{
values.put(Terminals.COLUMN_ID, terminal.id());
values.put(Terminals.COLUMN_ADDRESS, terminal.Address());
values.put(Terminals.COLUMN_STATE, terminal.State());
values.put(Terminals.COLUMN_PRINTERSTATE,terminal.printer_state);
values.put(Terminals.COLUMN_CASHBINSTATE,terminal.cashbin_state);
values.put(Terminals.COLUMN_LPD,0);
values.put(Terminals.COLUMN_CASH,terminal.cash);
values.put(Terminals.COLUMN_LASTACTIVITY,terminal.lastActivity);
values.put(Terminals.COLUMN_LASTPAYMENT,terminal.lastPayment);
values.put(Terminals.COLUMN_BONDS,terminal.bondsCount);
values.put(Terminals.COLUMN_BALANCE,terminal.balance);
values.put(Terminals.COLUMN_SIGNALLEVEL,terminal.signalLevel);
values.put(Terminals.COLUMN_SOFTVERSION,terminal.softVersion);
values.put(Terminals.COLUMN_PRINTERMODEL,terminal.printerModel);
values.put(Terminals.COLUMN_CASHBINMODEL,terminal.cashbinModel);
values.put(Terminals.COLUMN_BONDS10,terminal.bonds10count);
values.put(Terminals.COLUMN_BONDS50,terminal.bonds50count);
values.put(Terminals.COLUMN_BONDS100,terminal.bonds100count);
values.put(Terminals.COLUMN_BONDS500,terminal.bonds500count);
values.put(Terminals.COLUMN_BONDS1000,terminal.bonds1000count);
values.put(Terminals.COLUMN_BONDS5000,terminal.bonds5000count);
values.put(Terminals.COLUMN_BONDS10000,terminal.bonds10000count);
values.put(Terminals.COLUMN_PAYSPERHOUR,terminal.paysPerHour);
values.put(Terminals.COLUMN_AGENTID,terminal.agentId);
values.put(Terminals.COLUMN_AGENTNAME,terminal.agentName);
values.put(Terminals.COLUMN_ACCOUNTID,accountId);
values.put(Terminals.COLUMN_MS,terminal.ms);
db.replace(Terminals.TABLE_NAME, null, values);
}
///////
db.close();
}
}
public boolean hasAccounts()
{
synchronized(_mLock)
{
boolean result = false;
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.rawQuery("select count(*) from "+Accounts.TABLE_NAME, null);
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
if(cursor.getInt(0)>0)
result = true;
}
}
finally
{
cursor.close();
}
}
finally
{
db.close();
}
return(result);
}
}
public void getTerminals(final long agentId, final List<Terminal> terminals)
{
synchronized(_mLock)
{
String clause = null;
String[] clauseArgs = null;
if(agentId!=0)
{
clause = Terminals.AGENT_ID_CLAUSE;
clauseArgs = new String[] {Long.toString(agentId)};
}
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.query(Terminals.TABLE_NAME, new String[] {Terminals.COLUMN_ID,
Terminals.COLUMN_ADDRESS,
Terminals.COLUMN_STATE,
Terminals.COLUMN_PRINTERSTATE,
Terminals.COLUMN_CASHBINSTATE,
Terminals.COLUMN_CASH,
Terminals.COLUMN_LASTACTIVITY,
Terminals.COLUMN_LASTPAYMENT,
Terminals.COLUMN_BONDS,
Terminals.COLUMN_BALANCE,
Terminals.COLUMN_SIGNALLEVEL,
Terminals.COLUMN_SOFTVERSION,
Terminals.COLUMN_PRINTERMODEL,
Terminals.COLUMN_CASHBINMODEL,
Terminals.COLUMN_BONDS10,
Terminals.COLUMN_BONDS50,
Terminals.COLUMN_BONDS100,
Terminals.COLUMN_BONDS500,
Terminals.COLUMN_BONDS1000,
Terminals.COLUMN_BONDS5000,
Terminals.COLUMN_BONDS10000,
Terminals.COLUMN_PAYSPERHOUR,
Terminals.COLUMN_AGENTID,
Terminals.COLUMN_AGENTNAME,
Terminals.COLUMN_MS},
clause,clauseArgs,null,null,null,null);
if(cursor!=null)
{
try
{
if(cursor.moveToFirst())
do
{
Terminal terminal = new Terminal(cursor.getLong(0), cursor.getString(1));
terminal.State(cursor.getInt(2));
terminal.printer_state = cursor.getString(3);
terminal.cashbin_state = cursor.getString(4);
terminal.cash = cursor.getInt(5);
terminal.lastActivity = cursor.getLong(6);
terminal.lastPayment = cursor.getLong(7);
terminal.bondsCount = cursor.getInt(8);
terminal.balance = cursor.getString(9);
terminal.signalLevel = cursor.getInt(10);
terminal.softVersion = cursor.getString(11);
terminal.printerModel = cursor.getString(12);
terminal.cashbinModel = cursor.getString(13);
terminal.bonds10count = cursor.getInt(14);
terminal.bonds50count = cursor.getInt(15);
terminal.bonds100count = cursor.getInt(16);
terminal.bonds500count = cursor.getInt(17);
terminal.bonds1000count = cursor.getInt(18);
terminal.bonds5000count = cursor.getInt(19);
terminal.bonds10000count = cursor.getInt(20);
terminal.paysPerHour = cursor.getString(21);
terminal.agentId = Long.parseLong(cursor.getString(22));
terminal.agentName = cursor.getString(23);
terminal.ms = cursor.getInt(24);
terminals.add(terminal);
}
while(cursor.moveToNext());
}
finally
{
cursor.close();
}
}
}
finally
{
db.close();
}
}
}
public boolean saveAgents(long account, List<Group> groups)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenWrite();
try
{
ContentValues values = new ContentValues();
values.put(Agents.COLUMN_ACCOUNT, Long.toString(account));
for(Group group : groups)
{
values.put(Agents.COLUMN_AGENT, group.id);
values.put(Agents.COLUMN_AGENT_NAME, group.name);
values.put(Agents.COLUMN_BALANCE, group.balance);
values.put(Agents.COLUMN_OVERDRAFT, group.overdraft);
values.put(Agents.COLUMN_LAST_UPDATE,System.currentTimeMillis());
if(db.update(Agents.TABLE_NAME, values, Agents.COLUMN_AGENT+"=?",new String[] {Long.toString(group.id)})<1)
db.insert(Agents.TABLE_NAME, null, values);
}
}
finally
{
db.close();
}
return(true);
}
}
public void ClearAgents(long account)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenWrite();
try
{
db.delete(Agents.TABLE_NAME, Agents.ACCOUNT_CLAUSE,new String[] {Long.toString(account)});
}
finally
{
db.close();
}
}
}
public void getAgents(long account, List<Group> groups)
{
synchronized(_mLock)
{
String clause = null;
String[] args = null;
//////////
if(account!=0)
{
clause = Agents.ACCOUNT_CLAUSE;
args = new String[] {Long.toString(account)};
}
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.query(Agents.TABLE_NAME,
new String[] {Agents.COLUMN_AGENT, Agents.COLUMN_AGENT_NAME, Agents.COLUMN_BALANCE, Agents.COLUMN_OVERDRAFT, Agents.COLUMN_LAST_UPDATE},
clause,
args,
null, null, null);
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
do
{
Group group = new Group();
group.id = cursor.getLong(0);
group.name = cursor.getString(1);
group.balance = cursor.getDouble(2);
group.overdraft = cursor.getDouble(3);
group.lastUpdate = cursor.getLong(4);
groups.add(group);
}
while(cursor.moveToNext());
}
}
finally
{
cursor.close();
}
}
finally
{
db.close();
}
}
}
public void getAgentsActive(List<Group> groups)
{
synchronized(_mLock)
{
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.rawQuery(Agents.ACTIVE_AGENTS_QUERY,null);
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
do
{
Group group = new Group();
group.id = cursor.getLong(0);
group.name = cursor.getString(1);
group.lastUpdate = cursor.getLong(2);
group.balance = cursor.getDouble(3);
group.overdraft = cursor.getDouble(4);
groups.add(group);
}
while(cursor.moveToNext());
}
}
finally
{
cursor.close();
}
}
finally
{
db.close();
}
}
}
public Terminal getTerminal(long id)
{
synchronized(_mLock)
{
Terminal terminal = null;
SQLiteDatabase db = OpenRead();
try
{
Cursor cursor = db.query(Terminals.TABLE_NAME, new String[] {Terminals.COLUMN_ID,
Terminals.COLUMN_ADDRESS,
Terminals.COLUMN_STATE,
Terminals.COLUMN_PRINTERSTATE,
Terminals.COLUMN_CASHBINSTATE,
Terminals.COLUMN_CASH,
Terminals.COLUMN_LASTACTIVITY,
Terminals.COLUMN_LASTPAYMENT,
Terminals.COLUMN_BONDS,
Terminals.COLUMN_BALANCE,
Terminals.COLUMN_SIGNALLEVEL,
Terminals.COLUMN_SOFTVERSION,
Terminals.COLUMN_PRINTERMODEL,
Terminals.COLUMN_CASHBINMODEL,
Terminals.COLUMN_BONDS10,
Terminals.COLUMN_BONDS50,
Terminals.COLUMN_BONDS100,
Terminals.COLUMN_BONDS500,
Terminals.COLUMN_BONDS1000,
Terminals.COLUMN_BONDS5000,
Terminals.COLUMN_BONDS10000,
Terminals.COLUMN_PAYSPERHOUR,
Terminals.COLUMN_AGENTID,
Terminals.COLUMN_AGENTNAME,
Terminals.COLUMN_MS},
Terminals.TERMINAL_ID_CLAUSE,new String[] {Long.toString(id)},null,null,null,null);
if(cursor!=null)
try
{
if(cursor.moveToFirst())
{
terminal = new Terminal(cursor.getLong(0), cursor.getString(1));
terminal.State(cursor.getInt(2));
terminal.printer_state = cursor.getString(3);
terminal.cashbin_state = cursor.getString(4);
terminal.cash = cursor.getInt(5);
terminal.lastActivity = cursor.getLong(6);
terminal.lastPayment = cursor.getLong(7);
terminal.bondsCount = cursor.getInt(8);
terminal.balance = cursor.getString(9);
terminal.signalLevel = cursor.getInt(10);
terminal.softVersion = cursor.getString(11);
terminal.printerModel = cursor.getString(12);
terminal.cashbinModel = cursor.getString(13);
terminal.bonds10count = cursor.getInt(14);
terminal.bonds50count = cursor.getInt(15);
terminal.bonds100count = cursor.getInt(16);
terminal.bonds500count = cursor.getInt(17);
terminal.bonds1000count = cursor.getInt(18);
terminal.bonds5000count = cursor.getInt(19);
terminal.bonds10000count = cursor.getInt(20);
terminal.paysPerHour = cursor.getString(21);
terminal.agentId = Long.parseLong(cursor.getString(22));
terminal.agentName = cursor.getString(23);
terminal.ms = cursor.getInt(24);
}
}
finally
{
cursor.close();
}
}
finally
{
db.close();
}
return terminal;
}
}
}