package org.eclipse.persistence.tools.workbench.mappingsmodel.query; import java.util.List; import org.eclipse.persistence.oxm.XMLDescriptor; import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; import org.eclipse.persistence.tools.workbench.mappingsmodel.ProblemConstants; import org.eclipse.persistence.tools.workbench.utility.string.StringTools; /** * @version 1.1 * @since 1.1 * @author Les Davis */ @SuppressWarnings("nls") public abstract class MWAbstractProcedureInOutputArgument extends MWAbstractProcedureArgument { private String outFieldName; public static final String OUT_FIELD_NAME_PROPERTY = "outFieldName"; /** * Default constructor for TopLink use only */ protected MWAbstractProcedureInOutputArgument() { super(); } MWAbstractProcedureInOutputArgument(MWProcedure manager, String name) { super(manager, name); } @Override protected void initialize() { super.initialize(); this.outFieldName = ""; } public static XMLDescriptor buildDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(MWAbstractProcedureInOutputArgument.class); descriptor.getInheritancePolicy().setParentClass(MWAbstractProcedureArgument.class); XMLDirectMapping outFieldNameMapping = new XMLDirectMapping(); outFieldNameMapping.setAttributeName("outFieldName"); outFieldNameMapping.setGetMethodName("getOutFieldNameForTopLink"); outFieldNameMapping.setSetMethodName("setOutFieldNameForTopLink"); outFieldNameMapping.setXPath("out-field-name/text()"); descriptor.addMapping(outFieldNameMapping); return descriptor; } @Override protected void addProblemsTo(List currentProblems) { super.addProblemsTo(currentProblems); this.buildOutFieldJavaClassRequiredToPassByValueProblem(currentProblems); } protected void buildOutFieldJavaClassRequiredToPassByValueProblem(List currentProblems) { if (VALUE_TYPE.equals(this.getPassType()) && (StringTools.stringIsEmpty(getOutFieldName()) || StringTools.stringIsEmpty(getFieldJavaClassName()))) { buildProblem(ProblemConstants.STORED_PROCEDURE_INOUTARGUMENT_REQUIREMENTS); } } // Getter/Setter for the inField Name public String getOutFieldName(){ if (this.outFieldName == null) { return ""; } else { return this.outFieldName; } } public void setOutFieldName(String name){ String oldOutFieldName = this.outFieldName; this.outFieldName = name; this.firePropertyChanged(OUT_FIELD_NAME_PROPERTY,oldOutFieldName, this.outFieldName); } /** * For toplink use only */ @SuppressWarnings("unused") private void setOutFieldNameForTopLink(String outFieldName){ this.outFieldName = outFieldName; } /** * For toplink use only */ @SuppressWarnings("unused") private String getOutFieldNameForTopLink(){ return this.outFieldName; } }