it.unibo.alchemist.model.actions.RemoveNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alchemist-implementationbase Show documentation
Show all versions of alchemist-implementationbase Show documentation
Abstract, incarnation independent implementations of the Alchemist's interfaces. Provides support for those who want to write incarnations.
/*
* Copyright (C) 2010-2023, Danilo Pianini and contributors
* listed, for each module, in the respective subproject's build.gradle.kts file.
*
* This file is part of Alchemist, and is distributed under the terms of the
* GNU General Public License, with a linking exception,
* as described in the file LICENSE in the Alchemist distribution's top directory.
*/
package it.unibo.alchemist.model.actions;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import it.unibo.alchemist.model.Context;
import it.unibo.alchemist.model.Dependency;
import it.unibo.alchemist.model.Environment;
import it.unibo.alchemist.model.Node;
import it.unibo.alchemist.model.Reaction;
/**
* Removes the current node from the environment.
*
* @param concentration type
*/
public final class RemoveNode extends AbstractAction {
/**
*
*/
private static final long serialVersionUID = -7358217984854060148L;
private final Environment environment;
/**
* @param environment the current environment
* @param node the node for this action
*/
@SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "This is intentional")
public RemoveNode(final Environment environment, final Node node) {
super(node);
this.environment = environment;
declareDependencyTo(Dependency.MOVEMENT);
}
@Override
public Context getContext() {
return Context.LOCAL;
}
@Override
public void execute() {
environment.removeNode(getNode());
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return "Remove node " + getNode().getId();
}
/**
* @return the current environment
*/
protected Environment getEnvironment() {
return environment;
}
/**
* {@inheritDoc}
*/
@Override
public RemoveNode cloneAction(final Node node, final Reaction reaction) {
return new RemoveNode<>(getEnvironment(), node);
}
}