org.floppp.observerpattern_activityfragments.model.StockPrice.java Source code

Java tutorial

Introduction

Here is the source code for org.floppp.observerpattern_activityfragments.model.StockPrice.java

Source

/*
 *  The MIT License (MIT)
 * Copyright (c) 2015 Fernando Lpez
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this
 * software and associated documentation files (the "Software"), to deal in the Software
 * without restriction, including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
 * to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or
 * substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package org.floppp.observerpattern_activityfragments.model;

import android.os.Handler;
import android.support.v4.util.Pair;

import org.floppp.observerpattern_activityfragments.presenter.Receiver;

public class StockPrice {
    public enum OPTIONS {
        INDRA, GOWEX, TELEPIZZA, BANCAJA
    };

    public Receiver receiver;

    public StockPrice(Receiver receiver) {
        this.receiver = receiver;
        this.emit();
    }

    private void emit() {
        final Handler handler = new Handler();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    final Pair<OPTIONS, Double> price = getPrice();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            receiver.priceChanged(price);
                        }
                    });
                }
            }
        }).start();
    }

    private Pair<OPTIONS, Double> getPrice() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        return new Pair<>(getRandomOption(), Math.random() * 2000);
    }

    private OPTIONS getRandomOption() {
        int option = (int) Math.floor(Math.random() * 4);

        return OPTIONS.values()[option];
    }
}