v++
Любое взаимодействие с серверами сведено до единстенной команды.
This commit is contained in:
@@ -62,7 +62,7 @@ public class Visualiser extends Component {
|
||||
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
|
||||
@Override
|
||||
public void GetVersionInfo() {
|
||||
version = 1142;
|
||||
version = 1143;
|
||||
String pattern = "MMM dd yyyy HH:mm:ss";
|
||||
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
|
||||
date_text = df.format(getClassBuildTime());
|
||||
|
||||
@@ -188,121 +188,119 @@ public abstract class RepositoryServer<D extends Database> {
|
||||
out = new ObjectOutputStream(clientSocket.getOutputStream());
|
||||
in = new ObjectInputStream(clientSocket.getInputStream());
|
||||
//->
|
||||
//todo убрать цикл. пусть читает лишь одну команду.было зависание как раз на чтении второй
|
||||
while (true) {
|
||||
DBObject dbObject = null;
|
||||
Pair<Class, Object> p = null;
|
||||
Print("Ожидание команды от клиента...");
|
||||
Object transport = in.readObject(); //может висеть!!!!
|
||||
Print("Команда прочитана.");
|
||||
if (transport instanceof ServerExchangeUnit_2021) {
|
||||
request = (ServerExchangeUnit_2021) transport;
|
||||
response = null;
|
||||
Print("клиент_2021: <- " + (request.codeName));
|
||||
try {
|
||||
code = request.getCode();
|
||||
//базовый функционал.
|
||||
switch (code) {
|
||||
//<editor-fold desc="файлы и почта">
|
||||
case ReadFile:
|
||||
Print("Отправить клиенту текст файла по пути " + Utils_.Brackets(request.arg));
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK, "", Utils.ReadAllText(new File(request.arg)));
|
||||
break;
|
||||
case SendFile:
|
||||
//нам пришел файл.
|
||||
Print("Получить от клиента файл, и распаковать его по пути " + Utils_.Brackets(request.arg));
|
||||
request.Unpack(); //распаковка идет по его аргу-пути назначения
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case ReceiveFile:
|
||||
Print("Отправить клиенту файл по пути " + Utils_.Brackets(request.arg));
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
File file = new File(request.arg);
|
||||
response.object = file.exists() ? Utils_.fileToBytes(file) : null;
|
||||
break;
|
||||
case Email:
|
||||
Print("Отправка сообщения электронной почты");
|
||||
Email((EmailMessage) request.object, request.arg);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case EmailBroadcast:
|
||||
EmailBroadcast();
|
||||
break;
|
||||
//</editor-fold>
|
||||
//<editor-fold desc="Главная база данных">
|
||||
case CheckObjectExistense:
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
Print("Проверить существование объекта класса " + p.getKey().toString() + " с ключом " + p.getValue());
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = db.checkObjectExistense(p.getKey(), p.getValue());
|
||||
break;
|
||||
case EditObject:
|
||||
DBObject new_object = (DBObject) request.object;
|
||||
Print("Редактировать объект " + new_object.getPK());
|
||||
db.UpdateWithCheck(new_object);
|
||||
afterEditAction(new_object);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case DeleteObject: //устарело. потом убрать. сейчас на это баг репорты повязаны.
|
||||
dbObject = (DBObject) request.object;
|
||||
Print("Удалить объект " + dbObject.getPK());
|
||||
db.DeleteWithCheck(dbObject);
|
||||
afterDeleteAction(dbObject);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case GetObjectCopyByPK:
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
Print("Получить копию объекта класса " + p.getKey().toString() + " по ключу " + p.getValue());
|
||||
dbObject = db.getObjectCopyByPK(p.getKey(), p.getValue());
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = dbObject;
|
||||
break;
|
||||
case GetObjectsCopiesByPK:
|
||||
Print("Получить список копий объектов по ключам");
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
|
||||
break;
|
||||
case PublishObject:
|
||||
PublishObject();
|
||||
break;
|
||||
case PublishObjects:
|
||||
PublishObjects();
|
||||
break;
|
||||
case DeleteObjectByPK:
|
||||
DeleteObjectByPK();
|
||||
break;
|
||||
case DeleteObjectsByPK:
|
||||
DeleteObjectsByPK();
|
||||
break;
|
||||
case CloneObjectByPK:
|
||||
CloneObject();
|
||||
break;
|
||||
//</editor-fold>
|
||||
case EXIT:
|
||||
Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА");
|
||||
System.exit(0);
|
||||
break;
|
||||
case Ping:
|
||||
Print("Проверка активности сервера");
|
||||
Ping();
|
||||
break;
|
||||
default:
|
||||
Session();
|
||||
break;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
response = new ServerExchangeUnit_2021(ServerCode.FAIL, "Исключение сервера", ex);
|
||||
} finally {
|
||||
Print("сервер: -> " + response.codeName);
|
||||
out.writeObject(response);
|
||||
Print("Ответ отправлен.");
|
||||
DBObject dbObject = null;
|
||||
Pair<Class, Object> p = null;
|
||||
Print("Ожидание команды от клиента...");
|
||||
Object transport = in.readObject();
|
||||
Print("Команда прочитана.");
|
||||
if (transport instanceof ServerExchangeUnit_2021) {
|
||||
request = (ServerExchangeUnit_2021) transport;
|
||||
response = null;
|
||||
Print("клиент_2021: <- " + (request.codeName));
|
||||
try {
|
||||
code = request.getCode();
|
||||
//базовый функционал.
|
||||
switch (code) {
|
||||
//<editor-fold desc="файлы и почта">
|
||||
case ReadFile:
|
||||
Print("Отправить клиенту текст файла по пути " + Utils_.Brackets(request.arg));
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK, "", Utils.ReadAllText(new File(request.arg)));
|
||||
break;
|
||||
case SendFile:
|
||||
//нам пришел файл.
|
||||
Print("Получить от клиента файл, и распаковать его по пути " + Utils_.Brackets(request.arg));
|
||||
request.Unpack(); //распаковка идет по его аргу-пути назначения
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case ReceiveFile:
|
||||
Print("Отправить клиенту файл по пути " + Utils_.Brackets(request.arg));
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
File file = new File(request.arg);
|
||||
response.object = file.exists() ? Utils_.fileToBytes(file) : null;
|
||||
break;
|
||||
case Email:
|
||||
Print("Отправка сообщения электронной почты");
|
||||
Email((EmailMessage) request.object, request.arg);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case EmailBroadcast:
|
||||
EmailBroadcast();
|
||||
break;
|
||||
//</editor-fold>
|
||||
//<editor-fold desc="Главная база данных">
|
||||
case CheckObjectExistense:
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
Print("Проверить существование объекта класса " + p.getKey().toString() + " с ключом " + p.getValue());
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = db.checkObjectExistense(p.getKey(), p.getValue());
|
||||
break;
|
||||
case EditObject:
|
||||
DBObject new_object = (DBObject) request.object;
|
||||
Print("Редактировать объект " + new_object.getPK());
|
||||
db.UpdateWithCheck(new_object);
|
||||
afterEditAction(new_object);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case DeleteObject: //устарело. потом убрать. сейчас на это баг репорты повязаны.
|
||||
dbObject = (DBObject) request.object;
|
||||
Print("Удалить объект " + dbObject.getPK());
|
||||
db.DeleteWithCheck(dbObject);
|
||||
afterDeleteAction(dbObject);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case GetObjectCopyByPK:
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
Print("Получить копию объекта класса " + p.getKey().toString() + " по ключу " + p.getValue());
|
||||
dbObject = db.getObjectCopyByPK(p.getKey(), p.getValue());
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = dbObject;
|
||||
break;
|
||||
case GetObjectsCopiesByPK:
|
||||
Print("Получить список копий объектов по ключам");
|
||||
p = (Pair<Class, Object>) request.object;
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
|
||||
break;
|
||||
case PublishObject:
|
||||
PublishObject();
|
||||
break;
|
||||
case PublishObjects:
|
||||
PublishObjects();
|
||||
break;
|
||||
case DeleteObjectByPK:
|
||||
DeleteObjectByPK();
|
||||
break;
|
||||
case DeleteObjectsByPK:
|
||||
DeleteObjectsByPK();
|
||||
break;
|
||||
case CloneObjectByPK:
|
||||
CloneObject();
|
||||
break;
|
||||
//</editor-fold>
|
||||
case EXIT:
|
||||
Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА");
|
||||
System.exit(0);
|
||||
break;
|
||||
case Ping:
|
||||
Print("Проверка активности сервера");
|
||||
Ping();
|
||||
break;
|
||||
default:
|
||||
Session();
|
||||
break;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
response = new ServerExchangeUnit_2021(ServerCode.FAIL, "Исключение сервера", ex);
|
||||
} finally {
|
||||
Print("сервер: -> " + response.codeName);
|
||||
out.writeObject(response);
|
||||
Print("Ответ отправлен.");
|
||||
}
|
||||
}
|
||||
Print("Соединение с клиентом завершено.");
|
||||
//->
|
||||
} catch (Exception ex) {
|
||||
Print("Соединение с клиентом завершено.");
|
||||
Print("Исключение.Соединение с клиентом завершено.");
|
||||
} finally {
|
||||
//->
|
||||
try {
|
||||
@@ -374,8 +372,8 @@ public abstract class RepositoryServer<D extends Database> {
|
||||
dst.sender_name = packed[0];
|
||||
dst.sender_address = packed[1];
|
||||
db.Insert(dst);
|
||||
afterCloneAction(src,dst);
|
||||
response.object= (Serializable) dst.getPK();
|
||||
afterCloneAction(src, dst);
|
||||
response.object = (Serializable) dst.getPK();
|
||||
}
|
||||
}
|
||||
protected void afterCloneAction(riDBObject src, riDBObject dst) throws Exception {
|
||||
@@ -407,11 +405,4 @@ public abstract class RepositoryServer<D extends Database> {
|
||||
public void Ping() {
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
}
|
||||
//---
|
||||
/*
|
||||
public <T extends DBObject> T getActual(T object_in, Class<T> object_class)throws Exception{
|
||||
return (T) ClientRequest(ServerCode.GetObjectCopyByPK, "",
|
||||
new Pair<>(object_class, object_in.getPK()));
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user