PQT_Gestionnaire_vent_stock/Workspace/client/src/main/java/com/pqt/client/module/query/QueryMessageFactory.java

70 lines
2.3 KiB
Java

package com.pqt.client.module.query;
import com.pqt.core.communication.IMessageToolFactory;
import com.pqt.core.entities.messages.Message;
import com.pqt.core.entities.messages.MessageType;
import com.pqt.core.entities.product.ProductUpdate;
import com.pqt.core.entities.sale.Sale;
import com.pqt.core.entities.user_account.Account;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//TODO écrire javadoc
class QueryMessageFactory {
private final IMessageToolFactory messageToolFactory;
QueryMessageFactory(IMessageToolFactory messageToolFactory) {
this.messageToolFactory = messageToolFactory;
}
Message newSaleMessage(Sale sale) {
Map<String, String> fields = new HashMap<>();
fields.put("sale", messageToolFactory.getObjectFormatter(Sale.class).format(sale));
return newSimpleMessage(MessageType.QUERY_SALE, fields);
}
Message newStockMessage() {
return newSimpleMessage(MessageType.QUERY_STOCK);
}
Message newStatMessage() {
return newSimpleMessage(MessageType.QUERY_STAT);
}
Message newUpdateMessage(List<ProductUpdate> updates) {
Map<String, String> fields = new HashMap<>();
fields.put("updates", messageToolFactory.getListFormatter(ProductUpdate.class).format(updates));
return newSimpleMessage(MessageType.QUERY_UPDATE, fields);
}
Message newAccountListMessage(){
return newSimpleMessage(MessageType.QUERY_ACCOUNT_LIST);
}
Message newConnectAccountMessage(Account account, boolean desiredState){
Map<String, String> fields = new HashMap<>();
fields.put("account", messageToolFactory.getObjectFormatter(Account.class).format(account));
fields.put("desired_state", messageToolFactory.getObjectFormatter(Boolean.class).format(desiredState));
return newSimpleMessage(MessageType.QUERY_CONNECT_ACCOUNT, fields);
}
Message newPingMessage(){
return newSimpleMessage(MessageType.QUERY_PING);
}
Message newConfigListMessage(){
return newSimpleMessage(MessageType.QUERY_CONFIG_LIST);
}
private Message newSimpleMessage(MessageType type, Map<String, String> fields){
return new Message(type, null, null, null, null, fields);
}
private Message newSimpleMessage(MessageType type){
return newSimpleMessage(type, null);
}
}