diff --git a/src/main/java/fucoin/configurations/AbstractConfiguration.java b/src/main/java/fucoin/configurations/AbstractConfiguration.java index f4e3e7d4e8e73d4ede787d4153740eaf15d364e1..eba6a5e4a811f663cfa488cfa56d397738c93b2e 100644 --- a/src/main/java/fucoin/configurations/AbstractConfiguration.java +++ b/src/main/java/fucoin/configurations/AbstractConfiguration.java @@ -14,6 +14,7 @@ import fucoin.actions.transaction.ActionGetAmount; import fucoin.actions.transaction.ActionGetAmountAnswer; import fucoin.actions.transaction.ActionNotifyObserver; import fucoin.configurations.internal.ConfigurationCreator; +import fucoin.configurations.internal.NodeHelper; import fucoin.supervisor.SuperVisorImpl; import fucoin.wallet.WalletImpl; import org.gephi.graph.api.Edge; @@ -98,7 +99,7 @@ public abstract class AbstractConfiguration extends AbstractNode { public void spawnWalletsFromNodes(Collection<Node> nodes, boolean createGUI) throws Exception { Future<Object> future = Patterns.ask(superVisor, new ActionAnnounceWalletCreation(nodes.size(), self()), timeout); for (Node node : nodes) { - String nameOfTheWallet = node.getLabel(); + String nameOfTheWallet = NodeHelper.nameOfNode(node); createWallet(nameOfTheWallet, createGUI); } Await.result(future, timeout.duration()); @@ -108,7 +109,7 @@ public abstract class AbstractConfiguration extends AbstractNode { * Fetch a random wallet */ public ActorRef getRandomWallet() { - return activeActors.get(ThreadLocalRandom.current().nextInt(activeActors.size())); + return wallets().get(ThreadLocalRandom.current().nextInt(activeActors.size())); } public List<ActorRef> wallets() { @@ -218,7 +219,7 @@ public abstract class AbstractConfiguration extends AbstractNode { } nodes.stream().forEach(node -> { - ActorRef wallet = walletByName(node.getLabel()); + ActorRef wallet = getWalletForNode(node); Edge[] edges = g.getEdges(node).toArray(); // Search for all reachable neighbours of the node @@ -229,9 +230,13 @@ public abstract class AbstractConfiguration extends AbstractNode { return edge.getTarget(); } return edge.getSource(); - }).map(target -> walletByName(target.getLabel())).collect(Collectors.toList()); + }).map(this::getWalletForNode).collect(Collectors.toList()); wallet.tell(new ActionAddOverlayNeighbours(overlayNeighbours), self()); }); } + + protected ActorRef getWalletForNode(Node node) { + return walletByName(NodeHelper.nameOfNode(node)); + } } diff --git a/src/main/java/fucoin/configurations/GephiConfiguration.java b/src/main/java/fucoin/configurations/GephiConfiguration.java index 6347f786b8cf359227aa2c8ae34d50202f211235..bdf2360515b9a9662276ee73bd09a6b6c04dd0bc 100644 --- a/src/main/java/fucoin/configurations/GephiConfiguration.java +++ b/src/main/java/fucoin/configurations/GephiConfiguration.java @@ -8,9 +8,11 @@ import fucoin.actions.transaction.ActionGetAmount; import fucoin.actions.transaction.ActionGetAmountAnswer; import fucoin.configurations.internal.ConfigurationName; import fucoin.configurations.internal.GephiLoader; +import fucoin.configurations.internal.NodeHelper; import fucoin.gui.gephi.GephiFileSelector; import fucoin.gui.gephi.GraphWindow; import org.gephi.graph.api.Graph; +import org.gephi.graph.api.Node; import scala.concurrent.Future; import scala.concurrent.duration.Duration; @@ -50,7 +52,7 @@ public class GephiConfiguration extends AbstractConfiguration { graphWindow.addNodeClickHandler((node, event) -> { // get associated wallet and ask for its amount - ActorRef wallet = walletByName(node.getLabel()); + ActorRef wallet = getWalletForNode(node); Future<Object> future = Patterns.ask(wallet, new ActionGetAmount(), timeout); future.onSuccess(new OnSuccess<Object>() { @@ -58,7 +60,7 @@ public class GephiConfiguration extends AbstractConfiguration { public void onSuccess(Object result) throws Throwable { // display the amount when an answer is received ActionGetAmountAnswer answer = (ActionGetAmountAnswer) result; - graphWindow.setInfobarText(node.getLabel()+" has "+answer.amount+" FUCs"); + graphWindow.setInfobarText(NodeHelper.nameOfNode(node)+" has "+answer.amount+" FUCs"); } }, context().dispatcher()); }); diff --git a/src/main/java/fucoin/configurations/internal/NodeHelper.java b/src/main/java/fucoin/configurations/internal/NodeHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..abb0280e6e7b212cd1b38df0b95b544e607f3fee --- /dev/null +++ b/src/main/java/fucoin/configurations/internal/NodeHelper.java @@ -0,0 +1,21 @@ +package fucoin.configurations.internal; + +import org.gephi.graph.api.Node; + +public class NodeHelper { + + public static String nameOfNode(Node n) { + String label = n.getLabel(); + + if (label == null || label.isEmpty()) { + return "Wallet" + n.getId(); + } + + if (Character.isDigit(label.charAt(0))) { + return "Wallet" + label; + } + + return label; + } + +}