/* * Copyright (c) 2014 - 2015 Ngewi Fet <ngewif@gmail.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 org.gnucash.android.db; import android.provider.BaseColumns; /** * Holds the database schema * * @author Ngewi Fet <ngewif@gmail.com> */ public class DatabaseSchema { /** * Name of database storing information about the books in the application */ public static final String BOOK_DATABASE_NAME = "gnucash_books.db"; /** * Version number of database containing information about the books in the application */ public static final int BOOK_DATABASE_VERSION = 1; /** * Version number of database containing accounts and transactions info. * With any change to the database schema, this number must increase */ public static final int DATABASE_VERSION = 15; /** * Name of the database * <p>This was used when the application had only one database per instance. * Now there can be multiple databases for each book imported * </p> * @deprecated Each database uses the GUID of the root account as name */ @Deprecated public static final String LEGACY_DATABASE_NAME = "gnucash_db"; //no instances are to be instantiated private DatabaseSchema(){} public interface CommonColumns extends BaseColumns { public static final String COLUMN_UID = "uid"; public static final String COLUMN_CREATED_AT = "created_at"; public static final String COLUMN_MODIFIED_AT = "modified_at"; } public static abstract class BookEntry implements CommonColumns { public static final String TABLE_NAME = "books"; public static final String COLUMN_DISPLAY_NAME = "name"; public static final String COLUMN_SOURCE_URI = "uri"; public static final String COLUMN_ROOT_GUID = "root_account_guid"; public static final String COLUMN_TEMPLATE_GUID = "root_template_guid"; public static final String COLUMN_ACTIVE = "is_active"; public static final String COLUMN_LAST_SYNC = "last_export_time"; } /** * Columns for the account tables */ public static abstract class AccountEntry implements CommonColumns { public static final String TABLE_NAME = "accounts"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_CURRENCY = "currency_code"; public static final String COLUMN_COMMODITY_UID = "commodity_uid"; public static final String COLUMN_DESCRIPTION = "description"; public static final String COLUMN_PARENT_ACCOUNT_UID = "parent_account_uid"; public static final String COLUMN_PLACEHOLDER = "is_placeholder"; public static final String COLUMN_COLOR_CODE = "color_code"; public static final String COLUMN_FAVORITE = "favorite"; public static final String COLUMN_FULL_NAME = "full_name"; public static final String COLUMN_TYPE = "type"; public static final String COLUMN_HIDDEN = "is_hidden"; public static final String COLUMN_DEFAULT_TRANSFER_ACCOUNT_UID = "default_transfer_account_uid"; public static final String INDEX_UID = "account_uid_index"; } /** * Column schema for the transaction table in the database */ public static abstract class TransactionEntry implements CommonColumns { public static final String TABLE_NAME = "transactions"; //The actual names of columns for description and notes are unlike the variable names because of legacy //We will not change them now for backwards compatibility reasons. But the variable names make sense public static final String COLUMN_DESCRIPTION = "name"; public static final String COLUMN_NOTES = "description"; public static final String COLUMN_CURRENCY = "currency_code"; public static final String COLUMN_COMMODITY_UID = "commodity_uid"; public static final String COLUMN_TIMESTAMP = "timestamp"; /** * Flag for marking transactions which have been exported * @deprecated Transactions are exported based on last modified timestamp */ @Deprecated public static final String COLUMN_EXPORTED = "is_exported"; public static final String COLUMN_TEMPLATE = "is_template"; public static final String COLUMN_SCHEDX_ACTION_UID = "scheduled_action_uid"; public static final String INDEX_UID = "transaction_uid_index"; } /** * Column schema for the splits table in the database */ public static abstract class SplitEntry implements CommonColumns { public static final String TABLE_NAME = "splits"; public static final String COLUMN_TYPE = "type"; /** * The value columns are in the currency of the transaction containing the split */ public static final String COLUMN_VALUE_NUM = "value_num"; public static final String COLUMN_VALUE_DENOM = "value_denom"; /** * The quantity columns are in the currency of the account to which the split belongs */ public static final String COLUMN_QUANTITY_NUM = "quantity_num"; public static final String COLUMN_QUANTITY_DENOM = "quantity_denom"; public static final String COLUMN_MEMO = "memo"; public static final String COLUMN_ACCOUNT_UID = "account_uid"; public static final String COLUMN_TRANSACTION_UID = "transaction_uid"; public static final String COLUMN_RECONCILE_STATE = "reconcile_state"; public static final String COLUMN_RECONCILE_DATE = "reconcile_date"; public static final String INDEX_UID = "split_uid_index"; } public static abstract class ScheduledActionEntry implements CommonColumns { public static final String TABLE_NAME = "scheduled_actions"; public static final String COLUMN_TYPE = "type"; public static final String COLUMN_ACTION_UID = "action_uid"; public static final String COLUMN_START_TIME = "start_time"; public static final String COLUMN_END_TIME = "end_time"; public static final String COLUMN_LAST_RUN = "last_run"; /** * Tag for scheduledAction-specific information e.g. backup parameters for backup */ public static final String COLUMN_TAG = "tag"; public static final String COLUMN_ENABLED = "is_enabled"; public static final String COLUMN_TOTAL_FREQUENCY = "total_frequency"; /** * Number of times this scheduledAction has been run. Analogous to instance_count in GnuCash desktop SQL */ public static final String COLUMN_EXECUTION_COUNT = "execution_count"; public static final String COLUMN_RECURRENCE_UID = "recurrence_uid"; public static final String COLUMN_AUTO_CREATE = "auto_create"; public static final String COLUMN_AUTO_NOTIFY = "auto_notify"; public static final String COLUMN_ADVANCE_CREATION = "adv_creation"; public static final String COLUMN_ADVANCE_NOTIFY = "adv_notify"; public static final String COLUMN_TEMPLATE_ACCT_UID = "template_act_uid"; public static final String INDEX_UID = "scheduled_action_uid_index"; } public static abstract class CommodityEntry implements CommonColumns { public static final String TABLE_NAME = "commodities"; /** * The namespace field denotes the namespace for this commodity, * either a currency or symbol from a quote source */ public static final String COLUMN_NAMESPACE = "namespace"; /** * The fullname is the official full name of the currency */ public static final String COLUMN_FULLNAME = "fullname"; /** * The mnemonic is the official abbreviated designation for the currency */ public static final String COLUMN_MNEMONIC = "mnemonic"; public static final String COLUMN_LOCAL_SYMBOL = "local_symbol"; /** * The fraction is the number of sub-units that the basic commodity can be divided into */ public static final String COLUMN_SMALLEST_FRACTION = "fraction"; /** * A CUSIP is a nine-character alphanumeric code that identifies a North American financial security * for the purposes of facilitating clearing and settlement of trades */ public static final String COLUMN_CUSIP = "cusip"; /** * TRUE if prices are to be downloaded for this commodity from a quote source */ public static final String COLUMN_QUOTE_FLAG = "quote_flag"; public static final String INDEX_UID = "commodities_uid_index"; } public static abstract class PriceEntry implements CommonColumns { public static final String TABLE_NAME = "prices"; public static final String COLUMN_COMMODITY_UID = "commodity_guid"; public static final String COLUMN_CURRENCY_UID = "currency_guid"; public static final String COLUMN_DATE = "date"; public static final String COLUMN_SOURCE = "source"; public static final String COLUMN_TYPE = "type"; public static final String COLUMN_VALUE_NUM = "value_num"; public static final String COLUMN_VALUE_DENOM = "value_denom"; public static final String INDEX_UID = "prices_uid_index"; } public static abstract class BudgetEntry implements CommonColumns { public static final String TABLE_NAME = "budgets"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_DESCRIPTION = "description"; public static final String COLUMN_NUM_PERIODS = "num_periods"; public static final String COLUMN_RECURRENCE_UID = "recurrence_uid"; public static final String INDEX_UID = "budgets_uid_index"; } public static abstract class BudgetAmountEntry implements CommonColumns { public static final String TABLE_NAME = "budget_amounts"; public static final String COLUMN_BUDGET_UID = "budget_uid"; public static final String COLUMN_ACCOUNT_UID = "account_uid"; public static final String COLUMN_PERIOD_NUM = "period_num"; public static final String COLUMN_AMOUNT_NUM = "amount_num"; public static final String COLUMN_AMOUNT_DENOM = "amount_denom"; public static final String INDEX_UID = "budget_amounts_uid_index"; } public static abstract class RecurrenceEntry implements CommonColumns { public static final String TABLE_NAME = "recurrences"; public static final String COLUMN_MULTIPLIER = "recurrence_mult"; public static final String COLUMN_PERIOD_TYPE = "recurrence_period_type"; public static final String COLUMN_PERIOD_START = "recurrence_period_start"; public static final String COLUMN_PERIOD_END = "recurrence_period_end"; public static final String COLUMN_BYDAY = "recurrence_byday"; public static final String INDEX_UID = "recurrence_uid_index"; } }