package org.eclipse.persistence.tools.workbench.mappingsmodel.query;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.tools.workbench.utility.ClassTools;
import org.eclipse.persistence.tools.workbench.utility.string.StringTools;
/**
* @version 1.1
* @since 1.1
* @author Les Davis
*/
public final class MWProcedureNamedInArgument extends MWAbstractProcedureArgument
{
/**
* Default constructor - for TopLink use only
*/
@SuppressWarnings("unused")
private MWProcedureNamedInArgument() {
super();
}
MWProcedureNamedInArgument(MWProcedure procedure, String name) {
super(procedure, name);
}
@Override
public boolean isNamed() {
return true;
}
@Override
public boolean isNamedIn() {
return true;
}
@Override
public boolean isNamedOut() {
return false;
}
@Override
public boolean isNamedInOut() {
return false;
}
@Override
public boolean isUnnamedIn() {
return false;
}
@Override
public boolean isUnnamedOut() {
return false;
}
@Override
public boolean isUnnamedInOut() {
return false;
}
public static XMLDescriptor buildDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClass(MWProcedureNamedInArgument.class);
descriptor.getInheritancePolicy().setParentClass(MWAbstractProcedureArgument.class);
return descriptor;
}
protected void addRuntimeEclipseLinkArgument(org.eclipse.persistence.queries.StoredProcedureCall call) {
if (getPassType().equals(MWAbstractProcedureArgument.VALUE_TYPE)) {
call.addNamedArgumentValue(getArgumentName(), getArgumentValue());
} else {
if (!StringTools.stringIsEmpty(getFieldJavaClassName())) {
call.addNamedArgument(getArgumentName(), getFieldName(), ClassTools.classForName(getFieldJavaClassName()));
} else if (StringTools.stringIsEmpty(getFieldSubTypeName()) && StringTools.stringIsEmpty(getFieldName())) {
call.addNamedArgument(getArgumentName(), getArgumentName(), getFieldSqlTypeCode());
} else if (StringTools.stringIsEmpty(getFieldSubTypeName())) {
call.addNamedArgument(getArgumentName(), getFieldName(), getFieldSqlTypeCode());
} else {
call.addNamedArgument(getArgumentName(), getFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName());
}
}
}
}