blob: e111a1f1fc8cf6a9516c07ec41671d82f847d286 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2_1.context.java;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.ObjectTools;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
import org.eclipse.jpt.jpa.core.jpa2_1.ParameterMode2_1;
import org.eclipse.jpt.jpa.core.jpa2_1.context.StoredProcedureParameter2_1;
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.StoredProcedureParameter2_1Annotation;
/**
* Java stored procedure parameter
*/
public class GenericJavaStoredProcedureParameter2_1
extends AbstractJavaJpaContextNode
implements JavaStoredProcedureParameter2_1
{
protected final StoredProcedureParameter2_1Annotation parameterAnnotation;
protected String name;
protected ParameterMode2_1 specifiedMode;
protected ParameterMode2_1 defaultMode;
protected String typeName;
protected String fullyQualifiedTypeName;
public GenericJavaStoredProcedureParameter2_1(JavaNamedStoredProcedureQuery2_1 parent, StoredProcedureParameter2_1Annotation parameterAnnotation) {
super(parent);
this.parameterAnnotation = parameterAnnotation;
this.name = parameterAnnotation.getName();
this.specifiedMode = this.buildSpecifiedMode();
this.typeName = parameterAnnotation.getTypeName();
}
// ********** synchronize/update **********
@Override
public void synchronizeWithResourceModel() {
super.synchronizeWithResourceModel();
this.setName_(this.parameterAnnotation.getName());
this.setSpecifiedMode_(this.buildSpecifiedMode());
this.setTypeName_(this.parameterAnnotation.getTypeName());
}
@Override
public void update() {
super.update();
this.setDefaultMode(this.buildDefaultMode());
this.setFullyQualifiedTypeName(this.buildFullyQualifiedTypeName());
}
// ********* name **************
public String getName() {
return this.name;
}
public void setName(String name) {
this.parameterAnnotation.setName(name);
this.setName_(name);
}
protected void setName_(String name) {
String old = this.name;
this.name = name;
this.firePropertyChanged(NAME_PROPERTY, old, name);
}
// ********** mode **********
public ParameterMode2_1 getMode() {
return (this.specifiedMode != null) ? this.specifiedMode : this.defaultMode;
}
public ParameterMode2_1 getSpecifiedMode() {
return this.specifiedMode;
}
public void setSpecifiedMode(ParameterMode2_1 mode) {
this.parameterAnnotation.setMode(ParameterMode2_1.toJavaResourceModel(mode));
this.setSpecifiedMode_(mode);
}
protected void setSpecifiedMode_(ParameterMode2_1 mode) {
ParameterMode2_1 old = this.specifiedMode;
this.specifiedMode = mode;
this.firePropertyChanged(SPECIFIED_MODE_PROPERTY, old, mode);
}
protected ParameterMode2_1 buildSpecifiedMode() {
return ParameterMode2_1.fromJavaResourceModel(this.parameterAnnotation.getMode());
}
public ParameterMode2_1 getDefaultMode() {
return this.defaultMode;
}
protected void setDefaultMode(ParameterMode2_1 mode) {
ParameterMode2_1 old = this.defaultMode;
this.defaultMode = mode;
this.firePropertyChanged(DEFAULT_MODE_PROPERTY, old, mode);
}
protected ParameterMode2_1 buildDefaultMode() {
return ParameterMode2_1.IN;
}
// ********** type **********
public String getTypeName() {
return this.typeName;
}
public void setTypeName(String typeName) {
this.parameterAnnotation.setTypeName(typeName);
this.setTypeName_(typeName);
}
protected void setTypeName_(String typeName) {
String old = this.typeName;
this.typeName = typeName;
this.firePropertyChanged(TYPE_NAME_PROPERTY, old, typeName);
}
public String getFullyQualifiedTypeName() {
return this.fullyQualifiedTypeName;
}
protected void setFullyQualifiedTypeName(String typeName) {
String old = this.fullyQualifiedTypeName;
this.fullyQualifiedTypeName = typeName;
this.firePropertyChanged(FULLY_QUALIFIED_TYPE_NAME_PROPERTY, old, typeName);
}
protected String buildFullyQualifiedTypeName() {
return this.parameterAnnotation.getFullyQualifiedTypeName();
}
public char getTypeEnclosingTypeSeparator() {
return '.';
}
// ********** validation **********
public TextRange getValidationTextRange() {
TextRange textRange = this.parameterAnnotation.getTextRange();
return (textRange != null) ? textRange : this.getQuery().getValidationTextRange();
}
public boolean isEquivalentTo(StoredProcedureParameter2_1 parameter) {
return ObjectTools.equals(this.name, parameter.getName()) &&
ObjectTools.equals(this.specifiedMode, parameter.getMode()) &&
ObjectTools.equals(this.typeName, parameter.getTypeName()) ;
}
// ********** misc **********
@Override
public JavaNamedStoredProcedureQuery2_1 getParent() {
return (JavaNamedStoredProcedureQuery2_1) super.getParent();
}
protected JavaNamedStoredProcedureQuery2_1 getQuery() {
return this.getParent();
}
public StoredProcedureParameter2_1Annotation getStoredProcedureParameter2_1Annotation() {
return this.parameterAnnotation;
}
}