Android Open Source - gnucash-android Ofx Helper






From Project

Back to project page gnucash-android.

License

The source code is released under:

Apache License

If you think the Android project gnucash-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (c) 2014 Ngewi Fet <ngewif@gmail.com>
 */*from   w  w  w . j a va 2s .c o  m*/
 * 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.export.ofx;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * Helper class with collection of useful method and constants for the OFX export
 *
 * @author Ngewi Fet <ngewif@gmail.com>
 */
public class OfxHelper {
    /**
     * A date formatter used when creating file names for the exported data
     */
    public final static SimpleDateFormat OFX_DATE_FORMATTER = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);

    /**
     * The Transaction ID is usually the client ID sent in a request.
     * Since the data exported is not as a result of a request, we use 0
     */
    public static final String UNSOLICITED_TRANSACTION_ID = "0";

    /**
     * Header for OFX documents
     */
    public static final String OFX_HEADER = "OFXHEADER=\"200\" VERSION=\"211\" SECURITY=\"NONE\" OLDFILEUID=\"NONE\" NEWFILEUID=\"NONE\"";

    /**
     * SGML header for OFX. Used for compatibility with desktop GnuCash
     */
    public static final String OFX_SGML_HEADER = "ENCODING:UTF-8\nOFXHEADER:100\nDATA:OFXSGML\nVERSION:211\nSECURITY:NONE\nCHARSET:UTF-8\nCOMPRESSION:NONE\nOLDFILEUID:NONE\nNEWFILEUID:NONE";

    /*
    * XML tag name constants for the OFX file
     */
    public static final String TAG_TRANSACTION_UID      = "TRNUID";
    public static final String TAG_BANK_MESSAGES_V1     = "BANKMSGSRSV1";
    public static final String TAG_CURRENCY_DEF         = "CURDEF";
    public static final String TAG_BANK_ID              = "BANKID";
    public static final String TAG_ACCOUNT_ID           = "ACCTID";
    public static final String TAG_ACCOUNT_TYPE         = "ACCTTYPE";
    public static final String TAG_BANK_ACCOUNT_FROM    = "BANKACCTFROM";
    public static final String TAG_BALANCE_AMOUNT       = "BALAMT";
    public static final String TAG_DATE_AS_OF           = "DTASOF";
    public static final String TAG_LEDGER_BALANCE       = "LEDGERBAL";
    public static final String TAG_DATE_START           = "DTSTART";
    public static final String TAG_DATE_END             = "DTEND";
    public static final String TAG_TRANSACTION_TYPE     = "TRNTYPE";
    public static final String TAG_DATE_POSTED          = "DTPOSTED";
    public static final String TAG_DATE_USER            = "DTUSER";
    public static final String TAG_TRANSACTION_AMOUNT   = "TRNAMT";
    public static final String TAG_TRANSACTION_FITID    = "FITID";
    public static final String TAG_NAME                 = "NAME";
    public static final String TAG_MEMO                 = "MEMO";
    public static final String TAG_BANK_ACCOUNT_TO      = "BANKACCTTO";
    public static final String TAG_BANK_TRANSACTION_LIST    = "BANKTRANLIST";
    public static final String TAG_STATEMENT_TRANSACTIONS   = "STMTRS";
    public static final String TAG_STATEMENT_TRANSACTION    = "STMTTRN";
    public static final String TAG_STATEMENT_TRANSACTION_RESPONSE = "STMTTRNRS";


    /**
     * ID which will be used as the bank ID for OFX from this app
     */
    public static String APP_ID = "org.gnucash.android";

    /**
     * Returns the current time formatted using the pattern in {@link #OFX_DATE_FORMATTER}
     * @return Current time as a formatted string
     * @see #getOfxFormattedTime(long)
     */
    public static String getFormattedCurrentTime(){
        return getOfxFormattedTime(System.currentTimeMillis());
    }

    /**
     * Returns a formatted string representation of time in <code>milliseconds</code>
     * @param milliseconds Long value representing the time to be formatted
     * @return Formatted string representation of time in <code>milliseconds</code>
     */
    public static String getOfxFormattedTime(long milliseconds){
        Date date = new Date(milliseconds);
        String dateString = OFX_DATE_FORMATTER.format(date);
        TimeZone tz = Calendar.getInstance().getTimeZone();
        int offset = tz.getRawOffset();
        int hours   = (int) (( offset / (1000*60*60)) % 24);
        String sign = offset > 0 ?  "+" : "";
        return dateString + "[" + sign + hours + ":" + tz.getDisplayName(false, TimeZone.SHORT, Locale.getDefault()) + "]";
    }
}




Java Source Code List

org.gnucash.android.app.GnuCashApplication.java
org.gnucash.android.db.AccountsDbAdapter.java
org.gnucash.android.db.DatabaseAdapter.java
org.gnucash.android.db.DatabaseCursorLoader.java
org.gnucash.android.db.DatabaseHelper.java
org.gnucash.android.db.DatabaseSchema.java
org.gnucash.android.db.MigrationHelper.java
org.gnucash.android.db.SplitsDbAdapter.java
org.gnucash.android.db.TransactionsDbAdapter.java
org.gnucash.android.export.ExportDialogFragment.java
org.gnucash.android.export.ExportFormat.java
org.gnucash.android.export.ExportParams.java
org.gnucash.android.export.ExporterAsyncTask.java
org.gnucash.android.export.Exporter.java
org.gnucash.android.export.ofx.OfxExporter.java
org.gnucash.android.export.ofx.OfxHelper.java
org.gnucash.android.export.qif.QifExporter.java
org.gnucash.android.export.qif.QifHelper.java
org.gnucash.android.export.xml.GncXmlExporter.java
org.gnucash.android.export.xml.GncXmlHelper.java
org.gnucash.android.importer.GncXmlHandler.java
org.gnucash.android.importer.GncXmlImporter.java
org.gnucash.android.importer.ImportAsyncTask.java
org.gnucash.android.model.AccountType.java
org.gnucash.android.model.Account.java
org.gnucash.android.model.Money.java
org.gnucash.android.model.Split.java
org.gnucash.android.model.TransactionType.java
org.gnucash.android.model.Transaction.java
org.gnucash.android.receivers.AccountCreator.java
org.gnucash.android.receivers.TransactionAppWidgetProvider.java
org.gnucash.android.receivers.TransactionRecorder.java
org.gnucash.android.ui.UxArgument.java
org.gnucash.android.ui.account.AccountFormFragment.java
org.gnucash.android.ui.account.AccountsActivity.java
org.gnucash.android.ui.account.AccountsListFragment.java
org.gnucash.android.ui.colorpicker.ColorPickerDialog.java
org.gnucash.android.ui.colorpicker.ColorPickerPalette.java
org.gnucash.android.ui.colorpicker.ColorPickerSwatch.java
org.gnucash.android.ui.colorpicker.ColorSquare.java
org.gnucash.android.ui.colorpicker.ColorStateDrawable.java
org.gnucash.android.ui.colorpicker.HsvColorComparator.java
org.gnucash.android.ui.passcode.KeyboardFragment.java
org.gnucash.android.ui.passcode.PassLockActivity.java
org.gnucash.android.ui.passcode.PasscodeLockScreenActivity.java
org.gnucash.android.ui.passcode.PasscodePreferenceActivity.java
org.gnucash.android.ui.settings.AboutPreferenceFragment.java
org.gnucash.android.ui.settings.AccountPreferencesFragment.java
org.gnucash.android.ui.settings.DeleteAllAccountsConfirmationDialog.java
org.gnucash.android.ui.settings.DeleteAllTransacationsConfirmationDialog.java
org.gnucash.android.ui.settings.GeneralPreferenceFragment.java
org.gnucash.android.ui.settings.PasscodePreferenceFragment.java
org.gnucash.android.ui.settings.SettingsActivity.java
org.gnucash.android.ui.settings.TransactionsPreferenceFragment.java
org.gnucash.android.ui.transaction.ScheduledTransactionsListFragment.java
org.gnucash.android.ui.transaction.TransactionFormFragment.java
org.gnucash.android.ui.transaction.TransactionsActivity.java
org.gnucash.android.ui.transaction.TransactionsListFragment.java
org.gnucash.android.ui.transaction.dialog.BulkMoveDialogFragment.java
org.gnucash.android.ui.transaction.dialog.DatePickerDialogFragment.java
org.gnucash.android.ui.transaction.dialog.SplitEditorDialogFragment.java
org.gnucash.android.ui.transaction.dialog.TimePickerDialogFragment.java
org.gnucash.android.ui.transaction.dialog.TransactionsDeleteConfirmationDialogFragment.java
org.gnucash.android.ui.util.AccountBalanceTask.java
org.gnucash.android.ui.util.AmountInputFormatter.java
org.gnucash.android.ui.util.CheckableLinearLayout.java
org.gnucash.android.ui.util.OnAccountClickedListener.java
org.gnucash.android.ui.util.OnTransactionClickedListener.java
org.gnucash.android.ui.util.Refreshable.java
org.gnucash.android.ui.util.TaskDelegate.java
org.gnucash.android.ui.util.TransactionTypeToggleButton.java
org.gnucash.android.ui.widget.WidgetConfigurationActivity.java
org.gnucash.android.util.QualifiedAccountNameCursorAdapter.java