All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.openjpa.persistence.ParameterImpl Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF 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.apache.openjpa.persistence;

import javax.persistence.Parameter;

/**
 * A user-defined parameter of a query.
 *
 * A parameter is uniquely identified within the scope of a query by either
 * its name or integral position. The integral position refers to the integer
 * key as specified by the user. The index of this parameter during execution
 * in a datastore query may be different.
 * 
* A value can be bound to this parameter. This behavior of a parameter carrying * its own value is a change from earlier versions (where no explicit abstraction * existed for a query parameter). * * @author Pinaki Poddar * * @since 2.0.0 * * @param type of value carried by this parameter. * */ public class ParameterImpl implements Parameter { private final String _name; private final Integer _position; private final Class _expectedValueType; /** * Construct a positional parameter with the given position as key and * given expected value type. */ public ParameterImpl(Integer position, Class expectedValueType) { _name = null; _position = position; _expectedValueType = expectedValueType; } /** * Construct a named parameter with the given name as key and * given expected value type. */ public ParameterImpl(String name, Class expectedValueType) { _name = name; _position = null; _expectedValueType = expectedValueType; } @Override public final String getName() { return _name; } @Override public final Integer getPosition() { return _position; } @Override public Class getParameterType() { return _expectedValueType; } /** * Equals if the other parameter has the same name or position. */ @Override public boolean equals(Object other) { if (this == other) return true; if (!(other instanceof Parameter)) return false; Parameter that = (Parameter)other; if (_name != null) return _name.equals(that.getName()); if (_position != null) return _position.equals(that.getPosition()); return false; } @Override public int hashCode() { return _expectedValueType.hashCode() ^ ((_name != null) ? _name.hashCode() : 0) ^ ((_position != null) ? _position.hashCode() : 0); } @Override public String toString() { StringBuilder buf = new StringBuilder("Parameter"); buf.append("<" + getParameterType().getSimpleName() + ">"); if (_name != null) { buf.append("('" + _name + "')"); } else if (_position != null) { buf.append("(" + _position + ")"); } else { buf.append("(?)"); } return buf.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy