Added end to Transaction and Action, improved Signature

This commit is contained in:
Tomáš Musil 2020-12-22 16:33:40 +01:00
parent 9119ebb8ce
commit 127bdd1270
6 changed files with 31 additions and 6 deletions

View File

@ -18,6 +18,11 @@ public class Action extends OperationBase {
product.setStateToReadyForDispatch(); product.setStateToReadyForDispatch();
} }
public void endAction() {
this.setTimeEnd();
product.setStateToAvailable();
}
public IOperation getLastOperation() { public IOperation getLastOperation() {
return lastOperation; return lastOperation;
} }

View File

@ -25,8 +25,8 @@ public class OperationBase {
return timeEnd; return timeEnd;
} }
public void setTimeEnd(LocalDateTime timeEnd) { public void setTimeEnd() {
this.timeEnd = timeEnd; this.timeEnd = LocalDateTime.now();
} }
public INode getNodeCreator() { public INode getNodeCreator() {

View File

@ -18,6 +18,12 @@ public class ProductTransaction extends Transaction {
product.setStateToReadyForDispatch(); product.setStateToReadyForDispatch();
} }
@Override
public void endTransaction() {
super.endTransaction();
product.setStateToAvailable();
}
public IOperation getLastOperation() { public IOperation getLastOperation() {
return lastOperation; return lastOperation;
} }

View File

@ -17,6 +17,10 @@ public abstract class Transaction extends OperationBase {
signature = SignatureManager.signTransaction(this); signature = SignatureManager.signTransaction(this);
} }
public void endTransaction() {
this.setTimeEnd();
}
public TransactionType getTransactionType() { public TransactionType getTransactionType() {
return transactionType; return transactionType;
} }

View File

@ -3,17 +3,20 @@ package cz.cvut.fel.sit.omo.foodchain.signature;
import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; import cz.cvut.fel.sit.omo.foodchain.operation.Transaction;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.UUID;
public class Signature { public class Signature {
private String managerCode; private final String managerCode;
private Transaction transaction; private final Transaction transaction;
private LocalDateTime signedDate; private final LocalDateTime signedDate;
private final UUID uuid;
public Signature(String code, Transaction transaction) { public Signature(String code, Transaction transaction) {
managerCode = code; managerCode = code;
this.transaction = transaction; this.transaction = transaction;
signedDate = LocalDateTime.now(); signedDate = LocalDateTime.now();
uuid = UUID.randomUUID();
} }
public Transaction getTransaction(String code) { public Transaction getTransaction(String code) {
@ -27,4 +30,10 @@ public class Signature {
return signedDate; return signedDate;
return null; return null;
} }
public UUID getUuid(String code) {
if (code.equals(managerCode))
return uuid;
return null;
}
} }

View File

@ -11,6 +11,7 @@ public class SignatureManager {
} }
public static boolean validateSignature(Transaction transaction) { public static boolean validateSignature(Transaction transaction) {
return transaction == transaction.getSignature().getTransaction(MANAGER_CODE); return transaction.equals(transaction.getSignature().getTransaction(MANAGER_CODE))
&& transaction.getSignature().getUuid(MANAGER_CODE).equals(transaction.getSignature().getTransaction(MANAGER_CODE).getSignature().getUuid(MANAGER_CODE));
} }
} }