blob: 6e43e0797ca2ac70deb36233674ebf79bcd4589b [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.util;
import java.util.Arrays;
import org.mariadb.jdbc.client.util.Parameter;
import org.mariadb.jdbc.client.util.Parameters;
public class ParameterList implements Parameters, Cloneable {
Parameter[] elementData;
int length;
public ParameterList(int defaultSize) {
elementData = new Parameter[defaultSize];
length = 0;
}
public ParameterList() {
elementData = new Parameter[10];
length = 0;
}
public Parameter get(int index) {
if (index >= length)
throw new ArrayIndexOutOfBoundsException("wrong index " + index + " length:" + length);
return elementData[index];
}
public boolean containsKey(int index) {
if (index >= 0 && length > index) {
return elementData[index] != null;
}
return false;
}
public void set(int index, Parameter element) {
if (elementData.length <= index) grow(index + 1);
elementData[index] = element;
if (index >= length) length = index + 1;
}
public int size() {
return length;
}
private void grow(int minLength) {
int currLength = elementData.length;
int newLength = Math.max(currLength + (currLength >> 1), minLength);
elementData = Arrays.copyOf(elementData, newLength);
}
@Override
public ParameterList clone() {
ParameterList param = new ParameterList(length);
if (length > 0) System.arraycopy(elementData, 0, param.elementData, 0, length);
param.length = length;
return param;
}
}