package net.sourceforge.c4jplugin.internal.wizards;
import net.sourceforge.c4jplugin.internal.util.C4JStubUtil;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;
public class NewContractMethodElement {
private IMember member = null;
private Integer precond = NewContractLabelProvider.PRE_COND_NONE;
private Integer postcond = NewContractLabelProvider.POST_COND_NONE;
public NewContractMethodElement(IMember member) {
this.member = member;
if (member instanceof IMethod) {
IMethod method = (IMethod)member;
// pre-conditions
if (method.getNumberOfParameters() > 0) {
precond = NewContractLabelProvider.PRE_COND_EMPTYSTUB;
String[] paramTypes = method.getParameterTypes();
for (String paramType : paramTypes) {
String paramTypeName = Signature.getSimpleName(Signature.toString(paramType));
if ("String".equals(paramTypeName)) { // non-null and non-empty //$NON-NLS-1$
precond = NewContractLabelProvider.PRE_COND_NONEMPTY;
break;
}
else if (!C4JStubUtil.isBuiltInType(paramType)) {
precond = NewContractLabelProvider.PRE_COND_NONNULL;
}
}
}
// post-conditions
try {
String returnType = Signature.toString(method.getReturnType());
String returnTypeName = Signature.getSimpleName(returnType);
if (returnTypeName.equals("String")) //$NON-NLS-1$
postcond = NewContractLabelProvider.POST_COND_NONEMPTY;
else if (!C4JStubUtil.isBuiltInType(method.getReturnType()))
postcond = NewContractLabelProvider.POST_COND_NONNULL;
else if (!"void".equals(returnTypeName)) //$NON-NLS-1$
postcond = NewContractLabelProvider.POST_COND_EMPTYSTUB;
} catch (JavaModelException e) {}
}
}
public IMember getMember() {
return member;
}
public Integer getPreCondition() {
return precond;
}
public Integer getPostCondition() {
return postcond;
}
public void setPreCondition(Integer condition) {
precond = condition;
}
public void setPostCondition(Integer condition) {
postcond = condition;
}
}