From 6f5a772fab326fc0008f1bb468ac036e24a4fffe Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 28 Jun 2018 15:33:46 +0200
Subject: [PATCH] Use LoadedMachine instead of getChildren in :browse

---
 .../prob2/jupyter/commands/BrowseCommand.java | 26 ++++++-------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
index d7b7448..c95f78d 100644
--- a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
@@ -3,17 +3,12 @@ package de.prob2.jupyter.commands;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 import com.google.inject.Inject;
 
 import de.prob.animator.domainobjects.FormulaExpand;
-import de.prob.model.representation.AbstractElement;
-import de.prob.model.representation.Constant;
-import de.prob.model.representation.Set;
-import de.prob.model.representation.Variable;
 import de.prob.statespace.AnimationSelector;
+import de.prob.statespace.LoadedMachine;
 import de.prob.statespace.Trace;
 import de.prob.statespace.Transition;
 
@@ -52,13 +47,8 @@ public final class BrowseCommand implements Command {
 		return "The output shows the names of all sets, constants, and variables defined by the current machine, as well as a list of transitions that are available in the current state. Each transition has a numeric ID, which can be passed to `:exec` to execute that transition.";
 	}
 	
-	private static <T extends AbstractElement> @NotNull String elementsToString(
-		final @NotNull AbstractElement element,
-		final @NotNull Class<T> clazz,
-		final @NotNull Function<@NotNull T, @NotNull String> func
-	) {
-		final String elements = element.getChildrenOfType(clazz).stream().map(func).collect(Collectors.joining(", "));
-		return elements.isEmpty() ? "(none)" : elements;
+	private static @NotNull String listToString(final List<String> list) {
+		return list.isEmpty() ? "(none)" : String.join(", ", list);
 	}
 	
 	@Override
@@ -69,14 +59,14 @@ public final class BrowseCommand implements Command {
 		
 		final Trace trace = this.animationSelector.getCurrentTrace();
 		final StringBuilder sb = new StringBuilder("Machine: ");
-		final AbstractElement mainComponent = trace.getStateSpace().getMainComponent();
-		sb.append(mainComponent);
+		sb.append(trace.getStateSpace().getMainComponent());
+		final LoadedMachine lm = trace.getStateSpace().getLoadedMachine();
 		sb.append("\nSets: ");
-		sb.append(elementsToString(mainComponent, Set.class, Set::getName));
+		sb.append(listToString(lm.getSetNames()));
 		sb.append("\nConstants: ");
-		sb.append(elementsToString(mainComponent, Constant.class, Object::toString));
+		sb.append(listToString(lm.getConstantNames()));
 		sb.append("\nVariables: ");
-		sb.append(elementsToString(mainComponent, Variable.class, Variable::getName));
+		sb.append(listToString(lm.getVariableNames()));
 		sb.append("\nOperations: ");
 		final List<Transition> sortedTransitions = new ArrayList<>(trace.getNextTransitions(true, FormulaExpand.TRUNCATE));
 		// Transition IDs are strings, but they almost always contain numbers.
-- 
GitLab