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; /** * @see StoredProcedurePropertiesPage * @version 1.1 * @since 1.1 * @author Les Davis */ public final class MWProcedureNamedOutputArgument extends MWAbstractProcedureArgument { /** * Default constructor - for TopLink use only */ @SuppressWarnings("unused") private MWProcedureNamedOutputArgument() { super(); } MWProcedureNamedOutputArgument(MWProcedure procedure, String name) { super(procedure, name); } @Override public boolean isNamed(){ return true; } @Override public boolean isNamedIn() { return false; } @Override public boolean isNamedOut() { return true; } @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(MWProcedureNamedOutputArgument.class); descriptor.getInheritancePolicy().setParentClass(MWAbstractProcedureArgument.class); return descriptor; } protected void addRuntimeEclipseLinkArgument(StoredProcedureCall call) { if (StringTools.stringIsEmpty(getFieldSubTypeName()) && StringTools.stringIsEmpty(getFieldName())) { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedOutputArgument(getArgumentName(), getArgumentName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedOutputArgument(getArgumentName(), getArgumentName(), getFieldSqlTypeCode()); } } else if (StringTools.stringIsEmpty(getFieldSubTypeName())) { call.addNamedOutputArgument(getArgumentName(), getFieldName(), getFieldSqlTypeCode()); } else { if (!StringTools.stringIsEmpty(getFieldJavaClassName())) { call.addNamedOutputArgument(getArgumentName(), getFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName(), ClassTools.classForName(getFieldJavaClassName())); } else { call.addNamedOutputArgument(getArgumentName(), getFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName()); } } } }