mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-12-22 15:31:08 +00:00
Merge branch 'feature/#2_CORE_Ajout_outils_protocole_communication' into develop
This commit is contained in:
commit
9c2c2a2acd
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
#Ignoring Intellij workspace specific folders and files
|
||||
/**/.idea/workspace.xml
|
||||
/**/tasks.xml
|
||||
/**/*.iml
|
||||
|
||||
/**/.idea/libraries
|
||||
|
||||
#Ignoring target folders
|
||||
**/target/
|
Binary file not shown.
Binary file not shown.
1264
Workspace/.idea/workspace.xml
generated
1264
Workspace/.idea/workspace.xml
generated
File diff suppressed because it is too large
Load Diff
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="core" />
|
||||
</component>
|
||||
</module>
|
@ -1,6 +1,6 @@
|
||||
package com.pqt.client.module.sale;
|
||||
|
||||
import com.pqt.core.entities.client.Client;
|
||||
import com.pqt.core.entities.members.Client;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
import com.pqt.core.entities.sale.SaleStatus;
|
||||
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
@ -12,4 +12,14 @@
|
||||
<artifactId>core</artifactId>
|
||||
|
||||
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.8.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,39 @@
|
||||
package com.pqt.core.communication;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.pqt.core.entities.members.PqtMember;
|
||||
import com.pqt.core.entities.members.PqtMemberType;
|
||||
import com.pqt.core.entities.messages.Message;
|
||||
import com.pqt.core.entities.messages.MessageType;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.product.ProductUpdate;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//TODO écrire Javadoc
|
||||
public class GSonMessageToolFactory implements IMessageToolFactory {
|
||||
private Gson gson;
|
||||
|
||||
public GSonMessageToolFactory() {
|
||||
gson = new GsonBuilder().create();
|
||||
}
|
||||
|
||||
public <T> IObjectFormatter<T> getObjectFormatter(Class<T> clazz){
|
||||
return (obj)->gson.toJson(obj);
|
||||
}
|
||||
public <T> IObjectParser<T> getObjectParser(Class<T> clazz){
|
||||
return (str)->gson.fromJson(str, clazz);
|
||||
}
|
||||
public <T> IObjectFormatter<List<T>> getListFormatter(Class<T> clazz){
|
||||
return (obj)->gson.toJson(obj);
|
||||
}
|
||||
public <T> IObjectParser<List<T>> getListParser(Class<T> clazz){
|
||||
Type listType = new TypeToken<ArrayList<T>>(){}.getType();
|
||||
return (str)->gson.fromJson(str, listType);
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.pqt.core.communication;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.pqt.core.entities.members.PqtMember;
|
||||
import com.pqt.core.entities.members.PqtMemberType;
|
||||
import com.pqt.core.entities.messages.Message;
|
||||
import com.pqt.core.entities.messages.MessageType;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.product.ProductUpdate;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public interface IMessageToolFactory {
|
||||
|
||||
<T> IObjectFormatter<T> getObjectFormatter(Class<T> clazz);
|
||||
|
||||
<T> IObjectParser<T> getObjectParser(Class<T> clazz);
|
||||
|
||||
<T> IObjectFormatter<List<T>> getListFormatter(Class<T> clazz);
|
||||
|
||||
<T> IObjectParser<List<T>> getListParser(Class<T> clazz);
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.pqt.core.communication;
|
||||
|
||||
public interface IObjectFormatter<T> {
|
||||
|
||||
String format(T obj);
|
||||
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package com.pqt.core.communication;
|
||||
|
||||
public interface IObjectParser<T> {
|
||||
|
||||
T parse(String str);
|
||||
}
|
@ -1,6 +1,4 @@
|
||||
package com.pqt.core.entities.client;
|
||||
|
||||
import com.pqt.core.entities.log.ILoggable;
|
||||
package com.pqt.core.entities.members;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@ -8,29 +6,27 @@ import java.util.Date;
|
||||
/**
|
||||
* Created by Notmoo on 18/07/2017.
|
||||
*/
|
||||
public class Client implements ILoggable, Serializable {
|
||||
public class Client extends PqtMember{
|
||||
|
||||
private int id;
|
||||
private String address;
|
||||
private Date lastUpdate;
|
||||
|
||||
public Client() {
|
||||
super(-1, PqtMemberType.CLIENT);
|
||||
}
|
||||
|
||||
public Client(int id, String address) {
|
||||
super(id, PqtMemberType.CLIENT);
|
||||
this.address = address;
|
||||
this.lastUpdate = new Date();
|
||||
}
|
||||
|
||||
public Client(int id, String address, Date lastUpdate) {
|
||||
this.id = id;
|
||||
super(id, PqtMemberType.CLIENT);
|
||||
this.address = address;
|
||||
this.lastUpdate = lastUpdate;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.pqt.core.entities.members;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
public class DataServer extends PqtMember{
|
||||
|
||||
private String address;
|
||||
private Date lastUpdate;
|
||||
|
||||
public DataServer() {
|
||||
super(-1, PqtMemberType.DATA_SERVER);
|
||||
}
|
||||
|
||||
public DataServer(long id, String address) {
|
||||
super(id, PqtMemberType.DATA_SERVER);
|
||||
this.address = address;
|
||||
this.lastUpdate = new Date();
|
||||
}
|
||||
|
||||
public DataServer(long id, String address, Date lastUpdate) {
|
||||
super(id, PqtMemberType.DATA_SERVER);
|
||||
this.address = address;
|
||||
this.lastUpdate = lastUpdate;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public Date getLastUpdate() {
|
||||
return lastUpdate;
|
||||
}
|
||||
|
||||
public void setLastUpdate(Date lastUpdate) {
|
||||
this.lastUpdate = lastUpdate;
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.pqt.core.entities.members;
|
||||
|
||||
import com.pqt.core.entities.log.ILoggable;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class PqtMember implements ILoggable, Serializable {
|
||||
|
||||
private long id;
|
||||
private PqtMemberType type;
|
||||
|
||||
public PqtMember() {
|
||||
}
|
||||
|
||||
public PqtMember(long id, PqtMemberType type) {
|
||||
this.id = id;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public PqtMemberType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(PqtMemberType type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.pqt.core.entities.members;
|
||||
|
||||
public enum PqtMemberType {
|
||||
|
||||
CLIENT, DATA_SERVER;
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.pqt.core.entities.messages;
|
||||
|
||||
import com.pqt.core.entities.members.PqtMember;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Message {
|
||||
|
||||
private Map<String, String> fields;
|
||||
private MessageType type;
|
||||
private PqtMember emitter, receiver;
|
||||
|
||||
public Message(MessageType type, PqtMember emitter, PqtMember receiver) {
|
||||
this(type, emitter, receiver, null);
|
||||
}
|
||||
|
||||
public Message(MessageType type, PqtMember emitter, PqtMember receiver, Map<String, String> fields) {
|
||||
this.emitter = emitter;
|
||||
this.receiver = receiver;
|
||||
this.type = type;
|
||||
this.fields = new HashMap<>();
|
||||
if(fields!=null)
|
||||
for(String key : fields.keySet()){
|
||||
this.fields.put(key, fields.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, String> getFields() {
|
||||
return new HashMap<>(fields);
|
||||
}
|
||||
|
||||
public boolean hasField(String header){
|
||||
return fields.containsKey(header);
|
||||
}
|
||||
|
||||
public String getField(String header){
|
||||
return fields.get(header);
|
||||
}
|
||||
|
||||
public PqtMember getEmitter() {
|
||||
return emitter;
|
||||
}
|
||||
|
||||
public PqtMember getReceiver() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
public MessageType getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.pqt.core.entities.messages;
|
||||
|
||||
public enum MessageType {
|
||||
QUERY_CONNECT,
|
||||
ACK_CONNECT,
|
||||
ERR_CONNECT,
|
||||
REF_CONNECT,
|
||||
|
||||
QUERY_SALE,
|
||||
ACK_SALE,
|
||||
ERR_SALE,
|
||||
REF_SALE,
|
||||
|
||||
QUERY_REVERT_SALE,
|
||||
ACK_REVERT_SALE,
|
||||
ERR_REVERT_SALE,
|
||||
REF_REVERT_SALE,
|
||||
|
||||
QUERY_STAT,
|
||||
MSG_STAT,
|
||||
ERR_STAT,
|
||||
REF_STAT,
|
||||
|
||||
QUERY_STOCK,
|
||||
MSG_STOCK,
|
||||
ERR_STOCK,
|
||||
REF_STOCK,
|
||||
|
||||
QUERY_LOGIN,
|
||||
ACK_LOGIN,
|
||||
ERR_LOGIN,
|
||||
REF_LOGIN,
|
||||
|
||||
QUERY_UPDATE,
|
||||
ACK_UPDATE,
|
||||
ERR_UPDATE,
|
||||
REF_UPDATE
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.pqt.core.entities.product;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LightweightProduct {
|
||||
private long id;
|
||||
private String name;
|
||||
private int amountRemaining;
|
||||
private int amountSold;
|
||||
private boolean sellable;
|
||||
private double price;
|
||||
private List<Long> componentIds;
|
||||
private Category category;
|
||||
|
||||
public LightweightProduct() {
|
||||
componentIds = new ArrayList<>();
|
||||
}
|
||||
|
||||
public LightweightProduct(Product product) {
|
||||
this.id = product.getId();
|
||||
this.name = product.getName();
|
||||
this.amountRemaining = product.getAmountRemaining();
|
||||
this.amountSold = product.getAmountSold();
|
||||
this.sellable = product.isSellable();
|
||||
this.price = product.getPrice();
|
||||
this.category = product.getCategory();
|
||||
this.componentIds = new ArrayList<>();
|
||||
if(componentIds!=null){
|
||||
product.getComponents().stream().forEach((component -> componentIds.add(component.getId())));
|
||||
}
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAmountRemaining() {
|
||||
return amountRemaining;
|
||||
}
|
||||
|
||||
public void setAmountRemaining(int amountRemaining) {
|
||||
this.amountRemaining = amountRemaining;
|
||||
}
|
||||
|
||||
public int getAmountSold() {
|
||||
return amountSold;
|
||||
}
|
||||
|
||||
public void setAmountSold(int amountSold) {
|
||||
this.amountSold = amountSold;
|
||||
}
|
||||
|
||||
public boolean isSellable() {
|
||||
return sellable;
|
||||
}
|
||||
|
||||
public void setSellable(boolean sellable) {
|
||||
this.sellable = sellable;
|
||||
}
|
||||
|
||||
public double getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(double price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
public List<Long> getComponentIds() {
|
||||
return componentIds;
|
||||
}
|
||||
|
||||
public void setComponentIds(List<Long> componentIds) {
|
||||
this.componentIds = componentIds;
|
||||
}
|
||||
|
||||
public Category getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public void setCategory(Category category) {
|
||||
this.category = category;
|
||||
}
|
||||
}
|
@ -10,12 +10,12 @@ import java.util.List;
|
||||
* Created by Notmoo on 18/07/2017.
|
||||
*/
|
||||
public class Product implements ILoggable, Serializable{
|
||||
private int id;
|
||||
private long id;
|
||||
private String name;
|
||||
private int amountRemaining;
|
||||
private int amountSold;
|
||||
private boolean sellable;
|
||||
private boolean price;
|
||||
private double price;
|
||||
private List<Product> components;
|
||||
private Category category;
|
||||
|
||||
@ -23,22 +23,25 @@ public class Product implements ILoggable, Serializable{
|
||||
components = new ArrayList<>();
|
||||
}
|
||||
|
||||
public Product(int id, String name, int amountRemaining, int amountSold, boolean sellable, boolean price, List<Product> components, Category category) {
|
||||
public Product(long id, String name, int amountRemaining, int amountSold, boolean sellable, double price, List<Product> components, Category category) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.amountRemaining = amountRemaining;
|
||||
this.amountSold = amountSold;
|
||||
this.sellable = sellable;
|
||||
this.price = price;
|
||||
this.components = components;
|
||||
this.category = category;
|
||||
this.components = new ArrayList<>();
|
||||
if(components!=null){
|
||||
this.components.addAll(components);
|
||||
}
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@ -74,11 +77,11 @@ public class Product implements ILoggable, Serializable{
|
||||
this.sellable = sellable;
|
||||
}
|
||||
|
||||
public boolean isPrice() {
|
||||
public double getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(boolean price) {
|
||||
public void setPrice(double price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
|
@ -2,5 +2,5 @@ package com.pqt.core.entities.query;
|
||||
|
||||
public enum QueryType {
|
||||
|
||||
CONNECT, SALE, STOCL, STAT, LOG, UPDATE
|
||||
CONNECT, SALE, STOCK, STAT, LOG, UPDATE
|
||||
}
|
||||
|
@ -0,0 +1,102 @@
|
||||
package com.pqt.core.entities.sale;
|
||||
|
||||
import com.pqt.core.entities.members.Client;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.user_account.Account;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class LightweightSale {
|
||||
|
||||
private int id;
|
||||
private Map<Long, Integer> products;
|
||||
private Date orderedAt;
|
||||
private Client orderedWith;
|
||||
private Account orderedBy;
|
||||
private Account orderedFor;
|
||||
private SaleType type;
|
||||
private SaleStatus status;
|
||||
|
||||
public LightweightSale() {
|
||||
}
|
||||
|
||||
public LightweightSale(Sale sale) {
|
||||
this.id = sale.getId();
|
||||
this.orderedAt = sale.getOrderedAt();
|
||||
this.orderedWith = sale.getOrderedWith();
|
||||
this.orderedBy = sale.getOrderedBy();
|
||||
this.orderedFor = sale.getOrderedFor();
|
||||
this.type = sale.getType();
|
||||
this.status = sale.getStatus();
|
||||
products = new HashMap<>();
|
||||
for(Product product : sale.getProducts().keySet()){
|
||||
products.put(product.getId(), sale.getProducts().get(product));
|
||||
}
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Map<Long, Integer> getProducts() {
|
||||
return products;
|
||||
}
|
||||
|
||||
public void setProducts(Map<Long, Integer> products) {
|
||||
this.products = products;
|
||||
}
|
||||
|
||||
public Date getOrderedAt() {
|
||||
return orderedAt;
|
||||
}
|
||||
|
||||
public void setOrderedAt(Date orderedAt) {
|
||||
this.orderedAt = orderedAt;
|
||||
}
|
||||
|
||||
public Client getOrderedWith() {
|
||||
return orderedWith;
|
||||
}
|
||||
|
||||
public void setOrderedWith(Client orderedWith) {
|
||||
this.orderedWith = orderedWith;
|
||||
}
|
||||
|
||||
public Account getOrderedBy() {
|
||||
return orderedBy;
|
||||
}
|
||||
|
||||
public void setOrderedBy(Account orderedBy) {
|
||||
this.orderedBy = orderedBy;
|
||||
}
|
||||
|
||||
public Account getOrderedFor() {
|
||||
return orderedFor;
|
||||
}
|
||||
|
||||
public void setOrderedFor(Account orderedFor) {
|
||||
this.orderedFor = orderedFor;
|
||||
}
|
||||
|
||||
public SaleType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(SaleType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public SaleStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(SaleStatus status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.pqt.core.entities.sale;
|
||||
|
||||
import com.pqt.core.entities.log.ILoggable;
|
||||
import com.pqt.core.entities.client.Client;
|
||||
import com.pqt.core.entities.members.Client;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.user_account.Account;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user