/******************************************************************************* * (c) Copyright 2016 Hewlett-Packard Development Company, L.P. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License v2.0 which accompany this distribution. * * The Apache License is available at * http://www.apache.org/licenses/LICENSE-2.0 * *******************************************************************************/ package io.cloudslang.lang.compiler.modeller.model; import io.cloudslang.lang.entities.bindings.Input; import io.cloudslang.lang.entities.bindings.Output; import io.cloudslang.lang.entities.bindings.Result; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; import io.cloudslang.lang.entities.constants.Regex; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; /* * Created by orius123 on 05/11/14. */ public abstract class Executable { protected final Map<String, Serializable> preExecActionData; protected final Map<String, Serializable> postExecActionData; protected final String namespace; protected final String name; protected final List<Input> inputs; protected final List<Output> outputs; protected final List<Result> results; protected final Set<String> executableDependencies; protected final Set<String> systemPropertyDependencies; private transient String id; protected Executable(Map<String, Serializable> preExecActionData, Map<String, Serializable> postExecActionData, String namespace, String name, List<Input> inputs, List<Output> outputs, List<Result> results, Set<String> executableDependencies, Set<String> systemPropertyDependencies) { this.preExecActionData = preExecActionData; this.postExecActionData = postExecActionData; this.namespace = namespace; this.name = name; this.inputs = inputs; this.outputs = outputs; this.results = results; this.executableDependencies = executableDependencies; this.systemPropertyDependencies = systemPropertyDependencies; this.id = namespace + Regex.NAMESPACE_PROPERTY_DELIMITER + name; } public Map<String, Serializable> getPreExecActionData() { return preExecActionData; } public Map<String, Serializable> getPostExecActionData() { return postExecActionData; } public String getNamespace() { return namespace; } public String getId() { return id; } public String getName() { return name; } public List<Input> getInputs() { return inputs; } public List<Output> getOutputs() { return outputs; } public List<Result> getResults() { return results; } public Set<String> getExecutableDependencies() { return executableDependencies; } public Set<String> getSystemPropertyDependencies() { return systemPropertyDependencies; } public abstract String getType(); @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Executable that = (Executable) o; return new EqualsBuilder() .append(preExecActionData, that.preExecActionData) .append(postExecActionData, that.postExecActionData) .append(namespace, that.namespace) .append(name, that.name) .append(inputs, that.inputs) .append(outputs, that.outputs) .append(results, that.results) .append(executableDependencies, that.executableDependencies) .append(systemPropertyDependencies, that.systemPropertyDependencies) .isEquals(); } @Override public int hashCode() { return new HashCodeBuilder(17, 37) .append(preExecActionData) .append(postExecActionData) .append(namespace) .append(name) .append(inputs) .append(outputs) .append(results) .append(executableDependencies) .append(systemPropertyDependencies) .toHashCode(); } }