try {
EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
boolean flag = false;
UserItemValue user = form.getUser(accID);
if (user == null) {
user = new UserItemValue(accID);
flag = true;
}
user.terminalAddress = _pkg.get("executableAddress");
user.balance = bal;
user.profit = prof;
user.terminalConnected = true;
user.currency = crnc;
if (flag) {
form.addUser(user);
form.saveUserList();
}
ans.set("symbols", form.symbolList.getSymbolList());
OrderList.OrderItem order = user.history.getLastByID();
if (order != null)
ans.set("lastHistOrderID", Long.toString(order.id));
else ans.set("lastHistOrderID", Long.toString(-1));
}
});
// -- отправка ответа
sendPackage(ans);
} catch (Exception e) {
e.printStackTrace();
}
}
//</editor-fold>
//<editor-fold desc=" Обновление информации ">
else if ("data-update".equals(cmd)) {
final double b = Double.parseDouble(pkg.get("balance"));
final double p = Double.parseDouble(pkg.get("profit"));
String sbuf = pkg.get("time");
final long tm = (sbuf == null ? 0L : Integer.parseInt(sbuf) * 1000L);
// -- вытаскиваем ордера
String str = pkg.get("orders");
PSPackage orderspkg = null;
if (str != null) {
orderspkg = new PSPackage();
if (!orderspkg.unpack(new StringBuilder(str)))
orderspkg = null;
}
final PSPackage _opkg = orderspkg;
// -- обновление информации о символах
final String symbolData = pkg.get("symbols");
try {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
UserItemValue item = form.getUser(accID);
if (item == null) return;
// получение списока ордеров в аккаунте
if (_opkg != null) {
item.orders.refreshOrders(_opkg, true);
}
// обновление серверного времени
if (tm != 0L)
form.setCurrentTime(tm);
// обновление данных аккаунта
boolean flag =
Math.abs(item.balance - b) > 1d ||
Math.abs(item.profit - p) > 1d;
item.balance = b;
item.profit = p;
if (flag) form.lstUsers.repaint();
// -- обновление MarketInfo
if (symbolData != null)
form.symbolList.refreshSymbolData(symbolData);
// обновление панелей
List<UserItemValue> uList = form.getSelectedUsers();
if (uList.contains(item))
form.onUserSelected(uList, form.paneCurrent);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
//</editor-fold>
//<editor-fold desc=" История ордеров ">
else if ("orders-history".equals(cmd)) {
try {
final PSPackage _pkg = pkg;
EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
UserItemValue user = form.getUser(accID);
if (user != null) {
user.history.refreshOrders(_pkg, false);
user.saveOrdersHistory();
}
// обновление панелей
List<UserItemValue> uList = form.getSelectedUsers();
if (uList.contains(user))