Android Open Source - azb-finance Util






From Project

Back to project page azb-finance.

License

The source code is released under:

Apache License

If you think the Android project azb-finance 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 2014 Andrey Zubkov. All rights reserved.
 */* ww  w.  j  a  va2  s.  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.azubkov.azbfinance;

import android.content.Context;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;

/**
 * Created by oxymoron on 02.10.2014.
 */
public final class Util {

    private static final double RUBKRW = 26.8567;
    private static final double USDKRW = 1071.7500;
    private static final double USDRUB = 39.8960;

    private static NumberFormat amountFormat;

    private static final double[][] convTable = new double[][]{
            // RUB
            new double[]{1, 1 / USDRUB, RUBKRW},
            // USD
            new double[]{USDRUB, 1, USDKRW},
            // KRW
            new double[]{1 / RUBKRW, 1 / USDKRW, 1}
    };
    public static final char THOUSANDS_SEPARATOR = ' ';

    public static String toCurr(Context context, double amount, Curr curr) {
        int format;
        switch (curr) {
            case RUB:
                format = R.string.rub_format;
                break;
            case USD:
                format = R.string.usd_format;
                break;
            case KRW:
                format = R.string.krw_format;
                break;
            default:
                throw new UnsupportedOperationException("Wrong currency: " + curr);
        }
//        String value = String.format("%,.0f", amount);
        String value = getAmountFormat().format(amount);
        return context.getString(format, value);
    }

    private static NumberFormat getAmountFormat() {
        if (amountFormat == null) {
            DecimalFormat format = (DecimalFormat) NumberFormat.getInstance();
            DecimalFormatSymbols symbols = format.getDecimalFormatSymbols();
            symbols.setGroupingSeparator(THOUSANDS_SEPARATOR);
            format.setDecimalFormatSymbols(symbols);
            format.setMaximumFractionDigits(0);
            amountFormat = format;
        }
        return amountFormat;
    }

    public static double convert(double amount, Curr fromCurr, Curr toCurr) {
        int fromIndex = currToIndex(fromCurr);
        int toIndex = currToIndex(toCurr);
        double rate = convTable[fromIndex][toIndex];
        return amount * rate;
    }

    public static double convert(double amount, String fromCurr, String toCurr) {
        return convert(amount, Curr.valueOf(fromCurr), Curr.valueOf(toCurr));
    }

    private static int currToIndex(Curr curr) {
        int index;
        switch (curr) {
            case RUB:
                index = 0;
                break;
            case USD:
                index = 1;
                break;
            case KRW:
                index = 2;
                break;
            default:
                throw new UnsupportedOperationException("Wrong currency: " + curr);
        }
        return index;
    }
}




Java Source Code List

com.azubkov.azbfinance.AccountAdapter.java
com.azubkov.azbfinance.ApplicationTest.java
com.azubkov.azbfinance.Curr.java
com.azubkov.azbfinance.MainActivity.java
com.azubkov.azbfinance.MainFragment.java
com.azubkov.azbfinance.TestContentProvider.java
com.azubkov.azbfinance.TestDatabase.java
com.azubkov.azbfinance.TestRateProviders.java
com.azubkov.azbfinance.Util.java
com.azubkov.azbfinance.data.FinContract.java
com.azubkov.azbfinance.data.FinDatabase.java
com.azubkov.azbfinance.data.FinProvider.java
com.azubkov.azbfinance.model.Rate.java
com.azubkov.azbfinance.sync.AzbAuthenticatorService.java
com.azubkov.azbfinance.sync.AzbAuthenticator.java
com.azubkov.azbfinance.sync.AzbSyncAdapter.java
com.azubkov.azbfinance.sync.AzbSyncService.java
com.azubkov.azbfinance.sync.rateprovider.RateProvider.java
com.azubkov.azbfinance.sync.rateprovider.YahooApiProvider.java
com.azubkov.azbfinance.util.SelectionBuilder.java