package org.eclipse.persistence.tools.workbench.mappingsmodel.query; import org.eclipse.persistence.oxm.XMLDescriptor; import org.eclipse.persistence.queries.StoredProcedureCall; 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 MWProcedureNamedInOutputArgument extends MWAbstractProcedureInOutputArgument { /** * Default constructor - for TopLink use only */ @SuppressWarnings("unused") private MWProcedureNamedInOutputArgument() { super(); } MWProcedureNamedInOutputArgument(MWProcedure procedure, String name) { super(procedure, name); } @Override public boolean isNamed() { return true; } @Override public boolean isNamedIn() { return false; } @Override public boolean isNamedOut() { return false; } @Override public boolean isNamedInOut() { return true; } @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(MWProcedureNamedInOutputArgument.class); descriptor.getInheritancePolicy().setParentClass(MWAbstractProcedureInOutputArgument.class); return descriptor; } protected void addRuntimeEclipseLinkArgument(StoredProcedureCall call) { if (getPassType().equals(MWAbstractProcedureArgument.VALUE_TYPE)) { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedInOutputArgumentValue(getArgumentName(), getArgumentValue(), getOutFieldName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedInOutputArgumentValue(getArgumentName(), getArgumentValue(), getOutFieldName(), null); } } else { if (StringTools.stringIsEmpty(getFieldSubTypeName()) && StringTools.stringIsEmpty(getOutFieldName()) && !StringTools.stringIsEmpty(getFieldName())) { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedInOutputArgument(getArgumentName(), getArgumentName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedInOutputArgument(getArgumentName(), getArgumentName()); } } else if (StringTools.stringIsEmpty(getFieldSubTypeName()) && StringTools.stringIsEmpty(getOutFieldName())) { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedInOutputArgument(getArgumentName(), getFieldName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedInOutputArgument(getArgumentName(), getFieldName()); } } else if (StringTools.stringIsEmpty(getFieldSubTypeName())) { call.addNamedInOutputArgument(getArgumentName(), getFieldName(), getOutFieldName(), getFieldSqlTypeCode()); } else { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedInOutputArgument(getArgumentName(), getFieldName(), getOutFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedInOutputArgument(getArgumentName(), getFieldName(), getOutFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName()); } } } } }