From 4cb34ef90b51ac2d488db454387d36db6a3d6f47 Mon Sep 17 00:00:00 2001
From: Luca Keidel <info@lucakeidel.de>
Date: Tue, 14 Jun 2016 12:15:48 +0200
Subject: [PATCH] Unified logging (no more chaos on stdout)

---
 src/main/java/fucoin/AbstractNode.java                   | 8 +++++++-
 src/main/java/fucoin/Main.java                           | 2 +-
 src/main/java/fucoin/actions/Action.java                 | 5 -----
 src/main/java/fucoin/actions/join/ActionJoinAnswer.java  | 2 +-
 .../actions/search/ActionSearchWalletReference.java      | 2 +-
 .../ActionCommitDistributedCommittedTransfer.java        | 6 +++---
 .../ActionInvokeDistributedCommittedTransfer.java        | 2 +-
 .../actions/transaction/ActionInvokeSentMoney.java       | 2 +-
 .../ActionPrepareDistributedCommittedTransferAnswer.java | 6 +++---
 src/main/java/fucoin/gui/SuperVisorGuiControl.java       | 2 ++
 src/main/java/fucoin/gui/SuperVisorGuiControlImpl.java   | 7 +++++++
 src/main/java/fucoin/supervisor/SuperVisorImpl.java      | 9 ++++++++-
 12 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/src/main/java/fucoin/AbstractNode.java b/src/main/java/fucoin/AbstractNode.java
index c57568b..9deab96 100644
--- a/src/main/java/fucoin/AbstractNode.java
+++ b/src/main/java/fucoin/AbstractNode.java
@@ -66,7 +66,13 @@ public abstract class AbstractNode extends UntypedActor implements Serializable
     }
 
     public void log(String string) {
-        System.out.println(getSelf().path().name() + ": " + string);
+        if (this instanceof AbstractWallet){
+            System.out.println("Yes: "+string);
+            ((AbstractWallet) this).log(string);
+        }else{
+            System.out.println("No: "+this.getClass());
+            System.out.println(getSelf().path().name() + ": " + string);
+        }
     }
 
 }
\ No newline at end of file
diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java
index a0909bb..620d8d9 100644
--- a/src/main/java/fucoin/Main.java
+++ b/src/main/java/fucoin/Main.java
@@ -16,7 +16,7 @@ import java.util.List;
 
 public class Main {
 
-    private static int numberOfWallets = 4;
+    private static int numberOfWallets = 1;
 
     private static ActorSystem cSystem;
 
diff --git a/src/main/java/fucoin/actions/Action.java b/src/main/java/fucoin/actions/Action.java
index f51e4de..7bb94e8 100644
--- a/src/main/java/fucoin/actions/Action.java
+++ b/src/main/java/fucoin/actions/Action.java
@@ -15,9 +15,4 @@ public abstract class Action<T extends AbstractNode> {
 
     protected abstract void onAction(ActorRef sender, ActorRef self,
                                      UntypedActorContext context, T abstractNode);
-
-    public void log(String string) {
-        System.out.println(self.path().name() + ": " + string);
-    }
-
 }
diff --git a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
index 4a86c83..0f534a3 100644
--- a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
+++ b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
@@ -16,7 +16,7 @@ public class ActionJoinAnswer extends ClientAction {
 
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        log("Addressed to " + self.path().name() + " from " + sender.path().name() + ": someNeighbors:" + someNeighbors);
+        wallet.log("Addressed to " + self.path().name() + " from " + sender.path().name() + ": someNeighbors:" + someNeighbors);
         for (Entry<String, ActorRef> neighbor : someNeighbors.entrySet()) {
             wallet.addKnownNeighbor(neighbor.getKey(), neighbor.getValue());
         }
diff --git a/src/main/java/fucoin/actions/search/ActionSearchWalletReference.java b/src/main/java/fucoin/actions/search/ActionSearchWalletReference.java
index 950b7fd..fe514e2 100644
--- a/src/main/java/fucoin/actions/search/ActionSearchWalletReference.java
+++ b/src/main/java/fucoin/actions/search/ActionSearchWalletReference.java
@@ -23,7 +23,7 @@ public class ActionSearchWalletReference extends Search {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        log(wallet.getKnownNeighbors() + "contains " + name + "?");
+        wallet.log(wallet.getKnownNeighbors() + "contains " + name + "?");
         ttl.add(self);
         ActionSearchWalletReferenceAnswer answer = null;
         if (this.name.equals(wallet.getName())) {
diff --git a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
index 0c3a622..92df3ff 100644
--- a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
@@ -39,7 +39,7 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        System.out.println(self.path().name() + ": ActionCommitDistributedCommittedTransfer is granted?" + granted);
+        wallet.log("ActionCommitDistributedCommittedTransfer is granted? " + granted);
         if (granted) {
 
             Integer sourceAmount = wallet.amounts.getOrDefault(source, 0);
@@ -56,9 +56,9 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
             }
 
         } else {
-            log("abort transaction with id" + id);
+            wallet.log("abort transaction with id" + id);
         }
-        log("wallet.amounts:" + wallet.amounts);
+        wallet.log("wallet.amounts:" + wallet.amounts);
     }
 
 }
diff --git a/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
index 8279580..b754ec9 100644
--- a/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
@@ -21,7 +21,7 @@ public class ActionInvokeDistributedCommittedTransfer extends CoordinatorTransac
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, SuperVisorImpl superVisor) {
-        log("invoke transaction " + source.path().name() +
+        superVisor.log("invoke transaction " + source.path().name() +
                 " sends " + amount +
                 " to " + target.path().name());
 
diff --git a/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java b/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
index 688b3f7..6f3bd3e 100644
--- a/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
+++ b/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
@@ -18,7 +18,7 @@ public class ActionInvokeSentMoney extends Transaction {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        log(wallet.getKnownNeighbors() + "");
+        wallet.log(wallet.getKnownNeighbors() + "");
         if (wallet.getKnownNeighbors().containsKey(name)) {
             wallet.getRemoteSuperVisorActor().tell(
                     new ActionInvokeDistributedCommittedTransfer(self, wallet.getKnownNeighbors().get(name), amount), sender);
diff --git a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
index 6c0c473..7fc3c79 100644
--- a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
@@ -27,14 +27,14 @@ public class ActionPrepareDistributedCommittedTransferAnswer extends Coordinator
 	@Override
 	protected void onAction(ActorRef sender, ActorRef self,
 			UntypedActorContext context, SuperVisorImpl superVisor) {
-		log(""+superVisor.getKnownNeighbors());
-		log("granted?"+granted);
+		superVisor.log(""+superVisor.getKnownNeighbors());
+		superVisor.log("granted?"+granted);
 		DistributedCommittedTransferRequest request = superVisor.getRequest(id);
 		if(granted){
 			if(request==null)//unknown DistributedCommittedTransferRequest ignore
 				return;
 			int newCount = request.addPositiveAnswer(sender);
-			System.out.println(newCount+" have agreed on request"+id);
+
 			if(newCount == superVisor.getKnownNeighbors().size()){
 				ActionCommitDistributedCommittedTransfer acdct = new ActionCommitDistributedCommittedTransfer(source,target,amount,true,timestamp,id);
 				for(ActorRef neighbor : request.getAnswers()){
diff --git a/src/main/java/fucoin/gui/SuperVisorGuiControl.java b/src/main/java/fucoin/gui/SuperVisorGuiControl.java
index d27cf2c..bea5e7a 100644
--- a/src/main/java/fucoin/gui/SuperVisorGuiControl.java
+++ b/src/main/java/fucoin/gui/SuperVisorGuiControl.java
@@ -5,4 +5,6 @@ public interface SuperVisorGuiControl {
      * Call from SuperVisorImpl after poison pill or kill
      */
     void onLeave();
+
+    void log(String message);
 }
diff --git a/src/main/java/fucoin/gui/SuperVisorGuiControlImpl.java b/src/main/java/fucoin/gui/SuperVisorGuiControlImpl.java
index 1ca6922..992a851 100644
--- a/src/main/java/fucoin/gui/SuperVisorGuiControlImpl.java
+++ b/src/main/java/fucoin/gui/SuperVisorGuiControlImpl.java
@@ -59,4 +59,11 @@ public class SuperVisorGuiControlImpl implements SuperVisorGuiControl {
     public void onLeave() {
         frame.dispose();
     }
+
+    @Override
+    public void log(String message) {
+        // One day, we may have a server log GUI as well..
+        // Until then, we just print it to the console
+        System.out.println(message);
+    }
 }
diff --git a/src/main/java/fucoin/supervisor/SuperVisorImpl.java b/src/main/java/fucoin/supervisor/SuperVisorImpl.java
index 4f708ef..9249ec4 100644
--- a/src/main/java/fucoin/supervisor/SuperVisorImpl.java
+++ b/src/main/java/fucoin/supervisor/SuperVisorImpl.java
@@ -69,7 +69,6 @@ public class SuperVisorImpl extends AbstractNode {
 
     public void addDistributedCommitedTransferRequest(
             DistributedCommittedTransferRequest request) {
-        System.out.println("Add request to queue: " + request.getId());
         requestQueue.put(request.getId(), request);
     }
 
@@ -116,4 +115,12 @@ public class SuperVisorImpl extends AbstractNode {
     public void setAmountTableModel(AmountTableModel amountTableModel) {
         this.amountTableModel = amountTableModel;
     }
+
+    public void log(String message){
+        if (this.gui != null){
+            this.gui.log(message);
+        } else {
+            System.out.println(message);
+        }
+    }
 }
-- 
GitLab