package controller.comparer.xmi;
import java.util.ArrayList;
import org.apache.commons.lang.StringUtils;
public class XmiOperationElement extends XmiBaseElement {
private ArrayList<XmiParameterElement> parameters;
public XmiOperationElement(String id, String name, String type,
String visibility) {
super(id, name, type, visibility);
this.parameters = new ArrayList<XmiParameterElement>();
}
public ArrayList<XmiParameterElement> getParameters() {
return parameters;
}
public void addParameter(XmiParameterElement parameter) {
this.parameters.add(parameter);
}
@Override
public String toString() {
String formalParams;
String returnValue = "void";
ArrayList<XmiParameterElement> listParam = new ArrayList<XmiParameterElement>();
for (XmiParameterElement param: parameters) {
if (param.getDirection() == XmiParameterElement.DIRECTION_RETURN) {
returnValue = param.getName();
} else {
listParam.add(param);
}
}
formalParams = StringUtils.join(listParam, ", ");
return "Operation: " + super.getVisibility() + " " + returnValue + "(" + formalParams + ")";
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result
+ ((parameters == null) ? 0 : parameters.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof XmiOperationElement)) {
return false;
}
XmiOperationElement other = (XmiOperationElement) obj;
if (parameters == null) {
if (other.parameters != null) {
return false;
}
} else if (!parameters.equals(other.parameters)) {
return false;
}
return true;
}
}