From c02b3ced4c3c261031a4239152387d96d6c195ca Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 8 Dec 2022 10:28:23 +0100
Subject: [PATCH] Remove unused and broken LoadClassicalBModelCommand

The underlying Prolog predicate load_b_project/3 was removed in 2013.
---
 .../command/LoadClassicalBModelCommand.java   | 162 ------------------
 1 file changed, 162 deletions(-)
 delete mode 100644 de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java

diff --git a/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java b/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java
deleted file mode 100644
index 47ea693d..00000000
--- a/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, Heinrich
- * Heine Universitaet Duesseldorf This software is licenced under EPL 1.0
- * (http://www.eclipse.org/org/documents/epl-v10.html)
- * */
-
-package de.prob.core.command;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eventb.core.IEventBRoot;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-import de.be4.classicalb.core.parser.BParser;
-import de.be4.classicalb.core.parser.analysis.prolog.RecursiveMachineLoader;
-import de.be4.classicalb.core.parser.exceptions.BCompoundException;
-import de.be4.classicalb.core.parser.node.Start;
-import de.prob.core.Animator;
-import de.prob.core.domainobjects.Operation;
-import de.prob.core.domainobjects.ProBPreference;
-import de.prob.core.domainobjects.State;
-import de.prob.exceptions.ProBException;
-import de.prob.logging.Logger;
-import de.prob.parser.ISimplifiedROMap;
-import de.prob.prolog.output.IPrologTermOutput;
-import de.prob.prolog.output.StructuredPrologOutput;
-import de.prob.prolog.term.CompoundPrologTerm;
-import de.prob.prolog.term.ListPrologTerm;
-import de.prob.prolog.term.PrologTerm;
-
-/**
- * Command to load a new Event B Model for animation.
- */
-public final class LoadClassicalBModelCommand {
-
-	private static boolean preferencesAlreadyCleanedUp = false;
-
-	private LoadClassicalBModelCommand() {
-		throw new UnsupportedOperationException("Do not instantiate this class");
-	}
-
-	private LoadClassicalBModelCommand(final IEventBRoot model) {
-	}
-
-	private static void removeObsoletePreferences(final Animator animator) throws ProBException {
-		if (!preferencesAlreadyCleanedUp) {
-			// get all preference names from ProB
-			Collection<ProBPreference> prefs = GetPreferencesCommand.getPreferences(animator);
-			Set<String> probPrefNames = new HashSet<String>();
-			for (ProBPreference probpref : prefs) {
-				probPrefNames.add(probpref.name);
-			}
-			// now check all stored (in Eclipse's store) preferences
-			// if they still exist
-			Preferences preferences = SetPreferencesCommand.getPreferences();
-			try {
-				boolean foundObsoletePreference = false;
-				for (String prefname : preferences.keys()) {
-					if (!probPrefNames.contains(prefname)) {
-						// preference does not exists anymore
-						preferences.remove(prefname);
-						foundObsoletePreference = true;
-						String message = "removed obsolete preference from preferences store: " + prefname;
-						Logger.info(message);
-					}
-				}
-				if (foundObsoletePreference) {
-					preferences.flush();
-				}
-			} catch (BackingStoreException e) {
-				Logger.notifyUser("Error while accessing ProB Preferences", e);
-			}
-			preferencesAlreadyCleanedUp = true;
-		}
-	}
-
-	public static void load(final Animator animator, final File model, String name) throws ProBException {
-		animator.resetDirty();
-		animator.resetRodinProjectHasErrorsOrWarnings(); // classical B machines have no Rodin project
-		removeObsoletePreferences(animator);
-
-		final ClearMachineCommand clear = new ClearMachineCommand();
-		final SetPreferencesCommand setPrefs = SetPreferencesCommand.createSetPreferencesCommand(animator);
-		final IComposableCommand load = getLoadCommand(model, name);
-		final StartAnimationCommand start = new StartAnimationCommand();
-		final ExploreStateCommand explore = new ExploreStateCommand("root");
-
-		final ComposedCommand composed = new ComposedCommand(clear, setPrefs, load, start, explore);
-
-		animator.execute(composed);
-
-		final State commandResult = explore.getState();
-		animator.announceCurrentStateChanged(commandResult, Operation.NULL_OPERATION);
-	}
-
-	private static IComposableCommand getLoadCommand(final File model, final String name) throws ProBException {
-		return new IComposableCommand() {
-
-			@Override
-			public void writeCommand(final IPrologTermOutput pto) throws CommandException {
-				pto.openTerm("load_b_project");
-				pto.printAtom(name);
-				pto.printTerm(getLoadTerm(model));
-				pto.printVariable("Errors");
-				pto.closeTerm();
-				pto.printAtom("start_animation");
-			}
-
-			@Override
-			public void processResult(final ISimplifiedROMap<String, PrologTerm> bindings) {
-				Animator.getAnimator().announceReset();
-				ListPrologTerm e = (ListPrologTerm) bindings.get("Errors");
-				if (!e.isEmpty()) {
-					StringBuffer errormsg = new StringBuffer("Error from Prolog: ");
-					for (PrologTerm prologTerm : e) {
-						errormsg.append(prologTerm);
-						errormsg.append('\n');
-					}
-					Logger.notifyUser(errormsg.toString());
-				}
-			}
-		};
-
-	}
-
-	private static PrologTerm getLoadTerm(final File model) throws CommandException {
-		BParser bParser = new BParser();
-		try {
-			Start ast = bParser.parseFile(model, false);
-			final RecursiveMachineLoader rml = new RecursiveMachineLoader(model.getParent(), null);
-			rml.loadAllMachines(model, ast, bParser.getDefinitions());
-			StructuredPrologOutput output = new StructuredPrologOutput();
-			StructuredPrologOutput out = new StructuredPrologOutput();
-			rml.printAsProlog(output);
-
-			Collection<PrologTerm> sentences = output.getSentences();
-			out.openList();
-			Iterator<PrologTerm> iterator = sentences.iterator();
-			iterator.next();
-			iterator.next();
-			while (iterator.hasNext()) {
-				CompoundPrologTerm prologTerm = (CompoundPrologTerm) iterator.next();
-				out.printTerm(prologTerm.getArgument(1));
-			}
-			out.closeList();
-			out.fullstop();
-			return out.getSentences().iterator().next();
-		} catch (IOException e) {
-			Logger.notifyUser("IO Error", e);
-			throw new CommandException(e.getLocalizedMessage(), e);
-		} catch (BCompoundException e) {
-			Logger.notifyUser("Parser Error " + e.getLocalizedMessage(), e);
-			throw new CommandException(e.getLocalizedMessage(), e);
-		}
-	}
-}
-- 
GitLab