/*
* Copyright (C) 2010 Magnusart <http://www.magnusart.com>
*
* 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.liato.bankdroid.provider;
/**
* <p>
* This interface provides constants that can conveniently be used with the
* BankTransactionProvider. Copy this file and use it in your
* ContentProviderClient code.
* </p>
* <p>
* Uri format for querying for all transaction of a given bank/account
* combination:<br/>
* <code><b>content://{{@link #AUTHORITY}}/{{@link #TRANSACTIONS_CAT}}/{{@link
* #API_KEY}}={yourkey}</code>
* <br>
* <code><b>Would result in: content://com.liato.bankdroid.provider.BankTransactionsProvider/transactions/API_KEY=AAABBBCCC111222</code>
* </b>
* </p>
*
* <p>
* <b>Example of reading transactions from a View that implements this
* interface:</b>
*
* <pre>
* final Uri uri = Uri.parse("content://" + AUTHORITY + "/" + TRANSACTIONS_CAT
* + "/" + API_KEY + apiKey);
* final Cursor cur = managedQuery(uri, TRANSACTIONS_PROJECTION, ACCOUNT_SELECTION_FILTER, new
* String[] { currentAccountId }, null);
* startManagingCursor(cur);
* </pre>
*
* Where <code>currentAccountId</code> is the account ID you wish to filter on.
* </p>
*
* @author Magnus Andersson
* @version 1.0-RC2
* @see BankTransactionsProvider
* @since 8 jan 2011
*/
public interface IBankTransactionsProvider {
/**
* <p>
* The authority part of the URI.
* </p>
*/
String AUTHORITY = "com.liato.bankdroid.provider.BankTransactionsProvider";
/**
* <p>
* The API Key part of the URI.
* </p>
*/
String API_KEY = "API_KEY=";
// ====================================MIME-TYPES======================================
/**
* <p>
* MIME-type for Transactions. Not use today (no inserts) added for clarity.
* </p>
*/
String TRANSACTIONS_MIME = "vnd.android.cursor.dir/vnd.bankdroid.transactions";
/**
* <p>
* MIME-type for Bank/Account. Not use today (no inserts) added for clarity.
* </p>
*/
String BANK_ACCOUNTS_MIME = "vnd.android.cursor.dir/vnd.bankdroid.bankaccounts";
// ===================================CATEGORIES=======================================
/**
* <p>
* A category part of the URI.
* </p>
*/
String BANK_ACCOUNTS_CAT = "bankaccounts";
/**
* <p>
* A category part of the URI.
* </p>
*/
String TRANSACTIONS_CAT = "transactions";
// ===================================BANK/ACCOUNT_FIELDS==============================
/**
* <p>
* ID for Bank.
* </p>
* <b>PLEASE NOTE</b><br>
* This is an BankDroid internal id, do not depend on this id for keeping
* track between sessions.</p>
*/
String BANK_ID = "_id";
/**
* <p>
* Use this order by to make sure that all account belonging to one Bank
* comes clustered.
* </p>
*/
String ORDER_BY_BANK_ACCOUNT = BANK_ID + " DESC";
/**
* <p>
* User defined custom name for the Bank
* </p>
*/
String BANK_NAME = "custname";
/**
* <p>
* Type of Bank.
* </p>
*
* @see IBankTypes
*/
String BANK_TYPE = "banktype";
/**
* <p>
* Last time the bank and the bank accounts were synchronized.
* </p>
*/
String BANK_LAST_UPDATED = "updated";
/**
* <p>
* Account id, this is a composite key that
* </p>
* <b>PLEASE NOTE</b><br>
* This is an BankDroid internal id, do not depend on this id for keeping
* track between sessions.</p>
*
* @See {@link #TRANS_ACCNT}, {@link #ACCOUNT_SELECTION_FILTER}
*/
String ACC_ID = "id";
/**
* <p>
* Name of the account.
* </p>
*/
String ACC_NAME = "name";
/**
* <p>
* The account Type.
* </p>
*
* @See {@link IAccountTypes}
*/
String ACC_TYPE = "acctype";
/**
* <p>
* The account balance.
* </p>
* <p>
* <i>Note! This will most likely differ from the total amount that can be
* calculated from transactions.</i>
* </p>
*/
String ACC_BALANCE = "balance";
/**
* <p>
* The projection (ie. db view) that works with the
* {@link #BANK_ACCOUNTS_CAT} category.
* </p>
*/
String[] BANK_ACCOUNT_PROJECTION = {BANK_ID, BANK_NAME, BANK_TYPE,
BANK_LAST_UPDATED, ACC_ID, ACC_BALANCE, ACC_NAME, ACC_TYPE};
/**
* Defines if an account is hidden.
*/
String ACC_HIDDEN = "hidden";
/**
* <p>
* Use this filter to ignore hidden accounts (Hidden accounts only used for
* debug purposes). Always use this filter or incorporate it into your own
* filters.
* </p>
*/
String NO_HIDDEN_ACCOUNTS_FILTER = ACC_HIDDEN + " = 0";
// ===================================TRANSACTION_FIELDS===============================
/**
* <p>
* Transaction ID.
* </p>
* <p>
* <b>PLEASE NOTE</b><br>
* This is an BankDroid internal id, not the actual bank transaction id.
* </p>
*/
String TRANS_ID = "_id";
/**
* <p>
* Date of Transaction.
* </p>
*/
String TRANS_DATE = "transdate";
/**
* <p>
* Description text of Transaction.
* </p>
*/
String TRANS_DESC = "btransaction";
/**
* <p>
* Amount of Transaction.
* </p>
* <p>
* String representation of a {@link BigDecimal}. Positive for <i>Income</i>
* and negative for <i>Expenses</i>.
* </p>
*/
String TRANS_AMT = "amount";
/**
* <p>
* Currency of the Transaction. (Currently Only SEK)
* </p>
*/
String TRANS_CUR = "currency";
/**
* <p>
* The account a transaction belongs to.
* </p>
*/
String TRANS_ACCNT = "account";
/**
* <p>
* The projection (ie. db view) that works with the
* {@link #TRANSACTIONS_CAT} category.
* </p>
*/
String[] TRANSACTIONS_PROJECTION = {TRANS_ID, TRANS_DATE, TRANS_DESC,
TRANS_AMT, TRANS_CUR, TRANS_ACCNT};
/**
* <p>
* Use this filter to only return transactions belonging to a certain
* account.
* </p>
*
* <p>
* The format for the composite bank/account ID is {BANK_ID}_{ACCOUNT_ID}.<br>
* <b>Example IDs:</b> 1_1 or 1_0
* </p>
*
* @See {@link #ACC_ID}
*/
String ACCOUNT_SELECTION_FILTER = TRANS_ACCNT + " = ?";
}