/* * Copyright 2014 mango.jfaster.org * * The Mango Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package org.jfaster.mango.binding; import org.jfaster.mango.util.Objects; import org.jfaster.mango.util.Strings; import org.jfaster.mango.util.jdbc.JdbcType; /** * @author ash */ public class BindingParameter { private final String parameterName; private final String propertyPath; private final JdbcType jdbcType; public BindingParameter(String parameterName, String propertyPath, JdbcType jdbcType) { this.parameterName = parameterName; this.propertyPath = propertyPath; this.jdbcType = jdbcType; } public static BindingParameter create(String parameterName, String propertyPath, JdbcType jdbcType) { return new BindingParameter(parameterName, propertyPath, jdbcType); } public BindingParameter rightShift() { String newPropertyPath = Strings.isNotEmpty(propertyPath) ? parameterName + "." + propertyPath : parameterName; return BindingParameter.create("", newPropertyPath, jdbcType); } public String getParameterName() { return parameterName; } public String getPropertyPath() { return propertyPath; } public JdbcType getJdbcType() { return jdbcType; } public String getFullName() { return Strings.getFullName(parameterName, propertyPath); } @Override public boolean equals(Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; final BindingParameter other = (BindingParameter) obj; return Objects.equal(this.getParameterName(), other.getParameterName()) && Objects.equal(this.getPropertyPath(), other.getPropertyPath()) && Objects.equal(this.getJdbcType(), other.getJdbcType()); } @Override public int hashCode() { return Objects.hashCode(getParameterName(), getPropertyPath(), getJdbcType()); } @Override public String toString() { return getFullName(); } }