Guava Enum Mapper

by GarciaPL on Monday 23 May 2016

Have you ever wondered how to map enums from one to another ? Did you use switch statement to make it work ? Now you can use method immutableEnumMap from class Maps which is part of Guava. Below you can find an example.


public class EnumSourceMapper {

    static ImmutableMap<EnumSource, EnumDestination> mapper;

    static {
        mapper = Maps.immutableEnumMap(ImmutableMap.<EnumSource, EnumDestination>builder()
                .put(EnumSource.SUCCESS,                  EnumDestination.SUCCESS)
                .put(EnumSource.INCOMPLETE,               EnumDestination.ERROR)
                .put(EnumSource.FAIL,                     EnumDestination.ERROR)
                .build());
    }

    public EnumDestination getEnumDestination(EnumSource enumSource) {
        return mapper.get(enumSource);
    }
}



Reference:

EuroMonitor - get email notification about currency

by GarciaPL on Monday 9 May 2016

Recently I was trying to convert some cash in EUR currency, but I did not have time to watch currency graph all the time. So, I have created small tool which will let me know via email when currency will get more expensive above some concrete level. You can put below script in cron to execute it with some time interval. I used Sparkpost as a email provider.

import urllib2
import json
from sparkpost import SparkPost

sp = SparkPost('YOUR_API_KEY')

def currencyConverter(currency_from,currency_to):
    yql_base_url = "https://query.yahooapis.com/v1/public/yql"
    yql_query = 'select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20("'+currency_from+currency_to+'")'
    yql_query_url = yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"
    try:
        yql_response = urllib2.urlopen(yql_query_url)
        try:
            yql_json = json.loads(yql_response.read())
            currency_output = 1 * float(yql_json['query']['results']['rate']['Rate'])
            return currency_output
        except (ValueError, KeyError, TypeError):
            return "JSON format error"

    except IOError, e:
        if hasattr(e, 'code'):
            return e.code
        elif hasattr(e, 'reason'):
            return e.reason

currency_from = "EUR" # currency codes : http://en.wikipedia.org/wiki/ISO_4217
currency_to = "PLN"
direction_rate = 4.44

rate = currencyConverter(currency_from,currency_to)
print rate

if rate > direction_rate:
 response = sp.transmissions.send(
     recipients=['YOUR_EMAIL@gmail.com'],
     html='Rate of ' + currency_from + currency_to + ' equals ' + str(round(rate, 2)) + '
', from_email='test@sparkpostbox.com', subject='EuroMonitor' ) print(response) else: print "Rate too low"

Reference :
[1] EuroMonitor Source Code