Commit 3218642e authored by Nico Mack's avatar Nico Mack

Added additional Helper methods

parent d226fa2b
...@@ -141,6 +141,29 @@ public class VariableManager implements VariableBased { ...@@ -141,6 +141,29 @@ public class VariableManager implements VariableBased {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
public static List<Variable<?>> gatherDeclaredVariables(Corona candidate) {
List<Variable<?>> declared = new ArrayList<>();
if (candidate instanceof VariableBased) {
VariableBased variableBased = (VariableBased) candidate;
declared.addAll(variableBased.getDeclaredVariables());
}
List<VariableBased> handlers = candidate.getHandlers(VariableBased.class);
for (VariableBased handler : handlers) {
declared.addAll(handler.getDeclaredVariables());
}
List<VariableBased> variableScripts = candidate.getScripts(VariableBased.class);
for (VariableBased script : variableScripts) {
declared.addAll(script.getDeclaredVariables());
}
return declared;
}
// ---------------------------------------------------------------------------
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public List<Variable<?>> getDeclaredVariables() { public List<Variable<?>> getDeclaredVariables() {
......
/**
* Copyright Luxembourg Institute of Science and Technology, 2020. All rights reserved. If you wish
* to use this code for any purpose, please contact the author(s).
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package lu.list.itis.dkd.tui.utility;
import lu.list.itis.dkd.tui.cps.system.VariableBased;
import lu.list.itis.dkd.tui.cps.variable.Variable;
import lu.list.itis.dkd.tui.widget.BaseWidget;
import lu.list.itis.dkd.tui.widget.ModalWidget;
import lu.list.itis.dkd.tui.widget.corona.Corona;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author mack
* @since [major].[minor]
* @version [major].[minor].[micro]
*/
public class VariableUtils {
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Constructor(s)
// ***************************************************************************
// ---------------------------------------------------------------------------
private VariableUtils() {
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Class Body
// ***************************************************************************
// ---------------------------------------------------------------------------
public static List<VariableBased> getVariableBased(BaseWidget widget) {
List<VariableBased> variableBased = new ArrayList<>();
variableBased.addAll(widget.getCoronas(VariableBased.class));
if (widget instanceof ModalWidget) {
variableBased.addAll(((ModalWidget) widget).getBundledCoronas(VariableBased.class));
}
List<Corona> allCoronas = widget.getCoronas();
for (Corona corona : allCoronas) {
variableBased.addAll(corona.getHandlers(VariableBased.class));
variableBased.addAll(corona.getScripts(VariableBased.class));
}
return variableBased;
}
// ---------------------------------------------------------------------------
public static List<Variable<?>> getDeclaredVariables(Corona candidate) {
List<Variable<?>> declared = new ArrayList<>();
if (candidate instanceof VariableBased) {
VariableBased variableBased = (VariableBased) candidate;
declared.addAll(variableBased.getDeclaredVariables());
}
List<VariableBased> handlers = candidate.getHandlers(VariableBased.class);
for (VariableBased handler : handlers) {
declared.addAll(handler.getDeclaredVariables());
}
List<VariableBased> variableScripts = candidate.getScripts(VariableBased.class);
for (VariableBased script : variableScripts) {
declared.addAll(script.getDeclaredVariables());
}
return declared;
}
// ---------------------------------------------------------------------------
public static List<Variable<?>> connectWithSystemVariables(Corona candidate, Map<String, Variable<?>> systemVariables) {
List<Variable<?>> connected = new ArrayList<>();
if (systemVariables == null) {
return connected;
}
if (candidate instanceof VariableBased) {
VariableBased variableBased = (VariableBased) candidate;
connected.addAll(variableBased.connectWithSystemVariables(systemVariables));
}
List<VariableBased> handlers = candidate.getHandlers(VariableBased.class);
for (VariableBased handler : handlers) {
connected.addAll(handler.connectWithSystemVariables(systemVariables));
}
List<VariableBased> variableScripts = candidate.getScripts(VariableBased.class);
for (VariableBased script : variableScripts) {
connected.addAll(script.connectWithSystemVariables(systemVariables));
}
return connected;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment