blob: 9f3a2ec68f71f8135b93d430831b9da933309ac6 [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed 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 com.android.quicksearchbox;
import android.database.AbstractCursor;
import java.util.ArrayList;
/**
* Mock cursor providing suggestions data.
*/
public class MockSuggestionProviderCursor extends AbstractCursor {
private final String[] mColumns;
private final ArrayList<Row> mRows;
public MockSuggestionProviderCursor(String[] columns) {
mColumns = columns;
mRows = new ArrayList<Row>();
}
public Row addRow(Object... values) {
Row row = new Row(values);
mRows.add(row);
return row;
}
public Object get(int column) {
return mRows.get(getPosition()).get(column);
}
@Override
public String[] getColumnNames() {
return mColumns;
}
@Override
public int getCount() {
return mRows.size();
}
@Override
public double getDouble(int column) {
return mRows.get(getPosition()).getDouble(column);
}
@Override
public float getFloat(int column) {
return mRows.get(getPosition()).getFloat(column);
}
@Override
public int getInt(int column) {
return mRows.get(getPosition()).getInt(column);
}
@Override
public long getLong(int column) {
return mRows.get(getPosition()).getLong(column);
}
@Override
public short getShort(int column) {
return mRows.get(getPosition()).getShort(column);
}
@Override
public String getString(int column) {
return mRows.get(getPosition()).getString(column);
}
@Override
public boolean isNull(int column) {
return mRows.get(getPosition()).isNull(column);
}
private class Row {
private final Object[] mValues;
public Row(Object... values) {
if (values.length > mColumns.length) {
throw new IllegalArgumentException("Too many columns");
}
mValues = new Object[mColumns.length];
for (int i = 0; i < values.length; ++i) {
setColumn(i, values[i]);
}
}
public Row setColumn(int column, Object value) {
mValues[column] = value;
return this;
}
public Object get(int column) {
return mValues[column];
}
public double getDouble(int column) {
Object o = mValues[column];
if (o == null) return 0d;
if (o instanceof Double) return (Double) o;
return Double.valueOf(o.toString());
}
public float getFloat(int column) {
Object o = mValues[column];
if (o == null) return 0f;
if (o instanceof Float) return (Float) o;
return Float.valueOf(o.toString());
}
public int getInt(int column) {
Object o = mValues[column];
if (o == null) return 0;
return Integer.valueOf(o.toString());
}
public long getLong(int column) {
Object o = mValues[column];
if (o == null) return 0;
return Long.valueOf(o.toString());
}
public short getShort(int column) {
Object o = mValues[column];
if (o == null) return 0;
return Short.valueOf(o.toString());
}
public String getString(int column) {
Object o = mValues[column];
if (o == null) return null;
if (o instanceof String) return (String) o;
return o.toString();
}
public boolean isNull(int column) {
return (mValues[column] == null);
}
}
}