package opc.ua.addressspace.nodeclasses;

import opc.ua.addressspace.datatype.Argument;

public class MethodNode extends BaseNode {

	/**
	 * attributes
	 */
	private boolean executable;
	private boolean userExecutable;
	
	/**
	 * references
	 */
	/** 
	 * OPC UA Part 3, p.45
	 */
	private BaseNode[] hasProperty;
	private BaseNode hasModellingRule;
	private BaseNode hasModelParent;
	private BaseNode[] generatesEvent;
	private BaseNode[] alwaysGeneratesEvent;
	// other references
	
	/**
	 * properties
	 */
	private String nodeVersion;
	private Argument[] inputArguments;
	private Argument[] outputArguments;
	
	
	public boolean isExecutable() {
		return executable;
	}
	public void setExecutable(boolean executable) {
		this.executable = executable;
	}
	public boolean isUserExecutable() {
		return userExecutable;
	}
	public void setUserExecutable(boolean userExecutable) {
		this.userExecutable = userExecutable;
	}
	public BaseNode[] getHasProperty() {
		return hasProperty;
	}
	public void setHasProperty(BaseNode[] hasProperty) {
		this.hasProperty = hasProperty;
	}
	public BaseNode getHasModellingRule() {
		return hasModellingRule;
	}
	public void setHasModellingRule(BaseNode hasModellingRule) {
		this.hasModellingRule = hasModellingRule;
	}
	public BaseNode getHasModelParent() {
		return hasModelParent;
	}
	public void setHasModelParent(BaseNode hasModelParent) {
		this.hasModelParent = hasModelParent;
	}
	public BaseNode[] getGeneratesEvent() {
		return generatesEvent;
	}
	public void setGeneratesEvent(BaseNode[] generatesEvent) {
		this.generatesEvent = generatesEvent;
	}
	public BaseNode[] getAlwaysGeneratesEvent() {
		return alwaysGeneratesEvent;
	}
	public void setAlwaysGeneratesEvent(BaseNode[] alwaysGeneratesEvent) {
		this.alwaysGeneratesEvent = alwaysGeneratesEvent;
	}
	public String getNodeVersion() {
		return nodeVersion;
	}
	public void setNodeVersion(String nodeVersion) {
		this.nodeVersion = nodeVersion;
	}
	public Argument[] getInputArguments() {
		return inputArguments;
	}
	public void setInputArguments(Argument[] inputArguments) {
		this.inputArguments = inputArguments;
	}
	public Argument[] getOutputArguments() {
		return outputArguments;
	}
	public void setOutputArguments(Argument[] outputArguments) {
		this.outputArguments = outputArguments;
	}
}
