diff --git a/Documentation/.~lock.Interactions_serveur-clients.ods# b/Documentation/.~lock.Interactions_serveur-clients.ods# new file mode 100644 index 00000000..2af99208 --- /dev/null +++ b/Documentation/.~lock.Interactions_serveur-clients.ods# @@ -0,0 +1 @@ +,Notmoo-PC/Guillaume,Notmoo-PC,26.07.2017 21:36,file:///C:/Users/Guillaume/AppData/Roaming/LibreOffice/4; \ No newline at end of file diff --git a/Documentation/Interactions_serveur-clients.ods b/Documentation/Interactions_serveur-clients.ods index b9561dc4..4c252517 100644 Binary files a/Documentation/Interactions_serveur-clients.ods and b/Documentation/Interactions_serveur-clients.ods differ diff --git a/Workspace/core/src/main/java/com/pqt/core/entities/query/ConnectQuery.java b/Workspace/core/src/main/java/com/pqt/core/entities/query/ConnectQuery.java deleted file mode 100644 index f5caa308..00000000 --- a/Workspace/core/src/main/java/com/pqt/core/entities/query/ConnectQuery.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.pqt.core.entities.query; - -public class ConnectQuery extends SimpleQuery { - - private String serverAddress; - - public ConnectQuery(String serverAddress) { - super(QueryType.CONNECT); - this.serverAddress = serverAddress; - } - - public String getServerAddress() { - return serverAddress; - } - - public void setServerAddress(String serverAddress) { - this.serverAddress = serverAddress; - } -} diff --git a/Workspace/core/src/main/java/com/pqt/core/entities/query/LogQuery.java b/Workspace/core/src/main/java/com/pqt/core/entities/query/LogQuery.java deleted file mode 100644 index 106d5fd7..00000000 --- a/Workspace/core/src/main/java/com/pqt/core/entities/query/LogQuery.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.pqt.core.entities.query; - -import com.pqt.core.entities.user_account.Account; - -public class LogQuery extends SimpleQuery { - - private Account account; - - private boolean newDesiredState; - - public LogQuery(Account account, boolean newDesiredState) { - super(QueryType.LOG); - this.account = account; - this.newDesiredState = newDesiredState; - } - - public Account getAccount() { - return account; - } - - public void setAccount(Account account) { - this.account = account; - } - - public boolean isNewDesiredState() { - return newDesiredState; - } - - public void setNewDesiredState(boolean newDesiredState) { - this.newDesiredState = newDesiredState; - } -} diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/Server.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/Server.java deleted file mode 100644 index 7e88ea10..00000000 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/Server.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.pqt.server; - -public class Server { - public static void main(String[] args){ - - } -} diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/controller/SimpleMessageHandler.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/controller/SimpleMessageHandler.java index 008640c3..db41df3f 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/controller/SimpleMessageHandler.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/controller/SimpleMessageHandler.java @@ -2,11 +2,14 @@ package com.pqt.server.controller; import com.pqt.core.communication.GSonMessageToolFactory; import com.pqt.core.communication.IMessageToolFactory; +import com.pqt.core.entities.members.Client; import com.pqt.core.entities.messages.Message; import com.pqt.core.entities.messages.MessageType; import com.pqt.core.entities.product.LightweightProduct; import com.pqt.core.entities.product.Product; +import com.pqt.core.entities.product.ProductUpdate; import com.pqt.core.entities.sale.Sale; +import com.pqt.core.entities.user_account.Account; import com.pqt.server.exception.ServerQueryException; import com.pqt.server.module.account.AccountService; import com.pqt.server.module.client.ClientService; @@ -16,8 +19,10 @@ import com.pqt.server.module.statistics.StatisticsService; import com.pqt.server.module.stock.StockService; import java.util.HashMap; +import java.util.List; import java.util.Map; +//TODO ajouter des messages d'erreur spécifiques pour les NullPointerException si le param du message vaut null public class SimpleMessageHandler implements IMessageHandler { private final String header_ref_query = "Detail_refus"; @@ -55,7 +60,7 @@ public class SimpleMessageHandler implements IMessageHandler { long saleId = saleService.submitSale(messageToolFactory.getObjectParser(Sale.class).parse(message.getField("sale"))); fields.put("saleId", Long.toString(saleId)); return new Message(MessageType.ACK_SALE, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); - }catch(ServerQueryException e){ + }catch(ServerQueryException | NullPointerException e){ fields.put(header_ref_query, e.toString()); return new Message(MessageType.REFUSED_QUERY, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); } @@ -64,7 +69,7 @@ public class SimpleMessageHandler implements IMessageHandler { try{ saleService.submitSaleRevert(messageToolFactory.getObjectParser(Long.class).parse(message.getField("saleId"))); return new Message(MessageType.ACK_REVERT_SALE, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, null); - }catch(ServerQueryException e){ + }catch(ServerQueryException | NullPointerException e){ Map fields = new HashMap<>(); fields.put(header_err_query, e.toString()); return new Message(MessageType.ERROR_QUERY, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); @@ -84,16 +89,15 @@ public class SimpleMessageHandler implements IMessageHandler { return new Message(MessageType.MSG_STAT, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); }); queryHandlers.put(MessageType.QUERY_UPDATE, (message)->{ - //TODO Supporter les query update - return null; - }); - queryHandlers.put(MessageType.QUERY_CONNECT, (message)->{ - //TODO Supporter les query client - return null; - }); - queryHandlers.put(MessageType.QUERY_LOGIN, (message)->{ - //TODO Supporter les query account - return null; + try{ + List updates = messageToolFactory.getListParser(ProductUpdate.class).parse(message.getField("updates")); + stockService.applyUpdateList(updates); + return new Message(MessageType.ACK_UPDATE, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, null); + }catch (ServerQueryException | NullPointerException e){ + Map fields = new HashMap<>(); + fields.put(header_err_query, e.toString()); + return new Message(MessageType.ERROR_QUERY, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); + } }); } @@ -102,10 +106,6 @@ public class SimpleMessageHandler implements IMessageHandler { Map fields = new HashMap<>(); - if(!checkClient(message)){ - fields.put(header_ref_query, "client non enregistré sur le serveur"); - return new Message(MessageType.REFUSED_QUERY, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); - } if(!isAccountRegistered(message)){ fields.put(header_ref_query, "Compte utilisateur inconnu"); return new Message(MessageType.REFUSED_QUERY, serverStateService.getServer(), message.getEmitter(), message.getUser(), message, fields); @@ -127,11 +127,6 @@ public class SimpleMessageHandler implements IMessageHandler { Message execute(Message request); } - private boolean checkClient(Message message){ - //TODO faire ça - return false; - } - private boolean isAccountRegistered(Message message){ //TODO faire ça return false; diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java index 3c7c6abb..c7eb5548 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java @@ -20,4 +20,7 @@ public class AccountService { return dao.setAccountConnected(acc, connected); } + public boolean isAccountRegistered(Account acc){ + return dao.isAccountRegistered(acc); + } } diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java index 61a76a54..2160d2df 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java @@ -10,4 +10,5 @@ public interface IAccountDao { boolean setAccountConnected(Account acc, boolean connected); + boolean isAccountRegistered(Account acc); } diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/StockService.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/StockService.java index a4cb6ec8..a5e08643 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/StockService.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/StockService.java @@ -1,6 +1,8 @@ package com.pqt.server.module.stock; import com.pqt.core.entities.product.Product; +import com.pqt.core.entities.product.ProductUpdate; +import com.pqt.server.exception.ServerQueryException; import java.util.List; @@ -22,15 +24,29 @@ public class StockService { return dao.getProduct(id); } - public void addProduct(Product product) { + public void applyUpdateList(List updates) throws ServerQueryException{ + for(ProductUpdate upd : updates){ + if(upd.getOldVersion()==null){ + addProduct(upd.getNewVersion()); + }else if(upd.getNewVersion()==null){ + removeProduct(upd.getOldVersion().getId()); + }else if(upd.getOldVersion()!=null && upd.getNewVersion()!=null){ + modifyProduct(upd.getOldVersion().getId(), upd.getNewVersion()); + }else{ + //TODO écrit le throw d'une ServerQueryException + } + } + } + + private void addProduct(Product product) { dao.addProduct(product); } - public void removeProduct(long id) { + private void removeProduct(long id) { dao.removeProduct(id); } - public void modifyProduct(long id, Product product) { + private void modifyProduct(long id, Product product) { dao.modifyProduct(id, product); } }