/*
* Copyright (c) 2006, 2015, Oracle. All rights reserved.
*
* This software is the proprietary information of Oracle Corporation.
* Use is subject to license terms.
*/
package org.eclipse.persistence.tools.workbench.mappingsmodel.query;
import org.eclipse.persistence.internal.helper.DatabaseField;
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 MWProcedureUnamedInOutputArgument extends MWAbstractProcedureInOutputArgument
{
/**
* Default constructor - for TopLink use only
*/
@SuppressWarnings("unused")
private MWProcedureUnamedInOutputArgument() {
super();
}
MWProcedureUnamedInOutputArgument(MWProcedure procedure) {
super(procedure, null);
}
@Override
public boolean isNamed() {
return false;
}
@Override
public boolean isNamedIn() {
return false;
}
@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 true;
}
public static XMLDescriptor buildDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClass(MWProcedureUnamedInOutputArgument.class);
descriptor.getInheritancePolicy().setParentClass(MWAbstractProcedureInOutputArgument.class);
return descriptor;
}
protected void addRuntimeEclipseLinkArgument(StoredProcedureCall call) {
if (getPassType().equals(MWAbstractProcedureArgument.VALUE_TYPE)) {
if (!StringTools.stringIsEmpty(getFieldJavaClassName())) {
call.addUnamedInOutputArgumentValue(getArgumentValue(), getOutFieldName(), ClassTools.classForName(getFieldJavaClassName()));
} else {
call.addUnamedInOutputArgumentValue(getArgumentValue(), getOutFieldName(), null);
}
} else {
if (StringTools.stringIsEmpty(getFieldSubTypeName()) && StringTools.stringIsEmpty(getOutFieldName())) {
if (!StringTools.stringIsEmpty(getFieldJavaClassName())) {
call.addUnamedInOutputArgument(getFieldName(), ClassTools.classForName(getFieldJavaClassName()));
} else {
call.addUnamedInOutputArgument(getFieldName());
}
} else if (StringTools.stringIsEmpty(getFieldSubTypeName())) {
call.addUnamedInOutputArgument(getFieldName(), getOutFieldName(), getFieldSqlTypeCode());
} else {
if (!StringTools.stringIsEmpty(getFieldJavaClassName()) && !StringTools.stringIsEmpty(getNestedTypeFieldName())) {
call.addUnamedInOutputArgument(getFieldName(), getOutFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName(), ClassTools.classForName(getFieldJavaClassName()), new DatabaseField(getNestedTypeFieldName()));
} else if (!StringTools.stringIsEmpty(getFieldJavaClassName())) {
call.addUnamedInOutputArgument(getFieldName(), getOutFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName(), ClassTools.classForName(getFieldJavaClassName()));
} else {
call.addUnamedInOutputArgument(getFieldName(), getOutFieldName(), getFieldSqlTypeCode(), getFieldSubTypeName());
}
}
}
}
}