Android Open Source - ho.la.urv Report Activity






From Project

Back to project page ho.la.urv.

License

The source code is released under:

MIT License

If you think the Android project ho.la.urv 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

package eu.robertboloc.holaurv.activities;
/* w  w w .  j a v  a  2  s.c  o  m*/
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Period;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.DateTimeFormatterBuilder;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.MenuItem;
import com.google.analytics.tracking.android.EasyTracker;

import eu.robertboloc.holaurv.HoLaURV;
import eu.robertboloc.holaurv.R;
import eu.robertboloc.holaurv.helpers.Evalos;
import eu.robertboloc.holaurv.helpers.TypefaceSpan;
import eu.robertboloc.holaurv.models.Day;

public class ReportActivity extends SherlockFragmentActivity {

    TextView mReportTableLegend;

    TextView mReportTableMondayTheoretical;
    TextView mReportTableMondayReal;
    TextView mReportTableMondayBalance;

    TextView mReportTableTuesdayTheoretical;
    TextView mReportTableTuesdayReal;
    TextView mReportTableTuesdayBalance;

    TextView mReportTableWednesdayTheoretical;
    TextView mReportTableWednesdayReal;
    TextView mReportTableWednesdayBalance;

    TextView mReportTableThursdayTheoretical;
    TextView mReportTableThursdayReal;
    TextView mReportTableThursdayBalance;

    TextView mReportTableFridayTheoretical;
    TextView mReportTableFridayReal;
    TextView mReportTableFridayBalance;

    TextView mReportTableSaturdayTheoretical;
    TextView mReportTableSaturdayReal;
    TextView mReportTableSaturdayBalance;

    TextView mReportTableSundayTheoretical;
    TextView mReportTableSundayReal;
    TextView mReportTableSundayBalance;

    ActionBar actionBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report);

        actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        // Set custom font and colors to the Action Bar
        SpannableString s = new SpannableString(
                getText(R.string.menu_item_report));
        s.setSpan(new ForegroundColorSpan(Color.WHITE), 0, s.length(),
                Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        s.setSpan(new TypefaceSpan(this, "Exo-ExtraBold"), 0, s.length(),
                Spannable.SPAN_INCLUSIVE_INCLUSIVE);

        actionBar.setTitle(s);

        // Obtain the views
        mReportTableLegend = (TextView) findViewById(R.id.reportTableLegend);

        mReportTableMondayTheoretical = (TextView) findViewById(R.id.reportTableMondayTheoretical);
        mReportTableMondayReal = (TextView) findViewById(R.id.reportTableMondayReal);
        mReportTableMondayBalance = (TextView) findViewById(R.id.reportTableMondayBalance);

        mReportTableTuesdayTheoretical = (TextView) findViewById(R.id.reportTableTuesdayTheoretical);
        mReportTableTuesdayReal = (TextView) findViewById(R.id.reportTableTuesdayReal);
        mReportTableTuesdayBalance = (TextView) findViewById(R.id.reportTableTuesdayBalance);

        mReportTableWednesdayTheoretical = (TextView) findViewById(R.id.reportTableWednesdayTheoretical);
        mReportTableWednesdayReal = (TextView) findViewById(R.id.reportTableWednesdayReal);
        mReportTableWednesdayBalance = (TextView) findViewById(R.id.reportTableWednesdayBalance);

        mReportTableThursdayTheoretical = (TextView) findViewById(R.id.reportTableThursdayTheoretical);
        mReportTableThursdayReal = (TextView) findViewById(R.id.reportTableThursdayReal);
        mReportTableThursdayBalance = (TextView) findViewById(R.id.reportTableThursdayBalance);

        mReportTableFridayTheoretical = (TextView) findViewById(R.id.reportTableFridayTheoretical);
        mReportTableFridayReal = (TextView) findViewById(R.id.reportTableFridayReal);
        mReportTableFridayBalance = (TextView) findViewById(R.id.reportTableFridayBalance);

        mReportTableSaturdayTheoretical = (TextView) findViewById(R.id.reportTableSaturdayTheoretical);
        mReportTableSaturdayReal = (TextView) findViewById(R.id.reportTableSaturdayReal);
        mReportTableSaturdayBalance = (TextView) findViewById(R.id.reportTableSaturdayBalance);

        mReportTableSundayTheoretical = (TextView) findViewById(R.id.reportTableSundayTheoretical);
        mReportTableSundayReal = (TextView) findViewById(R.id.reportTableSundayReal);
        mReportTableSundayBalance = (TextView) findViewById(R.id.reportTableSundayBalance);

        // Set the report legend
        // If today is SUNDAY then offset all by 7 as Evalos changes the week on
        // sundays
        DateTime now = DateTime.now();
        DateTime intervalStart = (Day.today() == Day.SUNDAY) ? now.plusDays(1)
                : now.minusDays(Day.today());
        DateTime intervalEnd = intervalStart.plusDays(6);

        DateTimeFormatter reportIntervalDisplayer = new DateTimeFormatterBuilder()
                .appendDayOfMonth(2).appendLiteral("/").appendMonthOfYear(2)
                .appendLiteral("/").appendYear(4, 4).toFormatter();

        mReportTableLegend.setText(reportIntervalDisplayer.print(intervalStart)
                + " - " + reportIntervalDisplayer.print(intervalEnd));

        // Obtain the application state
        HoLaURV appState = ((HoLaURV) getApplicationContext());
        Evalos eva = appState.getEva();

        // In case the app was killed by the OS
        if (!(eva instanceof Evalos)) {
            Intent intent = new Intent(this, LoginActivity_.class);
            startActivity(intent);
            this.finish();
        } else {
            refresh(eva);
        }
    }

    private void refresh(Evalos eva) {
        PeriodFormatter HHMMFormater = new PeriodFormatterBuilder()
                .printZeroAlways().minimumPrintedDigits(2).appendHours()
                .appendSeparator(":").appendMinutes().toFormatter();

        long accumulatedBalance = 0;

        // Fill Monday
        mReportTableMondayTheoretical.setText(eva.getDay(Day.MONDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.MONDAY) {
            Period mondayReal = eva.getDay(Day.MONDAY).getAccumulate();
            if (mondayReal != null) {
                mReportTableMondayReal.setText(HHMMFormater.print(mondayReal));

                accumulatedBalance += eva.computeBalance(eva.getDay(Day.MONDAY)
                        .getShiftDisplay(), HHMMFormater.print(mondayReal));
                mReportTableMondayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }

        // Fill Tuesday
        mReportTableTuesdayTheoretical.setText(eva.getDay(Day.TUESDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.TUESDAY) {
            Period tuesdayReal = eva.getDay(Day.TUESDAY).getAccumulate();
            if (tuesdayReal != null) {
                mReportTableTuesdayReal
                        .setText(HHMMFormater.print(tuesdayReal));

                accumulatedBalance += eva.computeBalance(eva
                        .getDay(Day.TUESDAY).getShiftDisplay(), HHMMFormater
                        .print(tuesdayReal));
                mReportTableTuesdayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }

        // Fill Wednesday
        mReportTableWednesdayTheoretical.setText(eva.getDay(Day.WEDNESDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.WEDNESDAY) {
            Period wednesdayReal = eva.getDay(Day.WEDNESDAY).getAccumulate();
            if (wednesdayReal != null) {
                mReportTableWednesdayReal.setText(HHMMFormater
                        .print(wednesdayReal));

                accumulatedBalance += eva.computeBalance(
                        eva.getDay(Day.WEDNESDAY).getShiftDisplay(),
                        HHMMFormater.print(wednesdayReal));
                mReportTableWednesdayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }

        }

        // Fill Thursday
        mReportTableThursdayTheoretical.setText(eva.getDay(Day.THURSDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.THURSDAY) {
            Period thursdayReal = eva.getDay(Day.THURSDAY).getAccumulate();
            if (thursdayReal != null) {
                mReportTableThursdayReal.setText(HHMMFormater
                        .print(thursdayReal));

                accumulatedBalance += eva.computeBalance(
                        eva.getDay(Day.THURSDAY).getShiftDisplay(),
                        HHMMFormater.print(thursdayReal));
                mReportTableThursdayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }

        // Fill Friday
        mReportTableFridayTheoretical.setText(eva.getDay(Day.FRIDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.FRIDAY) {
            Period fridayReal = eva.getDay(Day.FRIDAY).getAccumulate();
            if (fridayReal != null) {
                mReportTableFridayReal.setText(HHMMFormater.print(fridayReal));

                accumulatedBalance += eva.computeBalance(eva.getDay(Day.FRIDAY)
                        .getShiftDisplay(), HHMMFormater.print(fridayReal));
                mReportTableFridayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }

        // Fill Saturday
        mReportTableSaturdayTheoretical.setText(eva.getDay(Day.SATURDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.SATURDAY) {
            Period saturdayReal = eva.getDay(Day.SATURDAY).getAccumulate();
            if (saturdayReal != null) {
                mReportTableSaturdayReal.setText(HHMMFormater
                        .print(saturdayReal));

                accumulatedBalance += eva.computeBalance(
                        eva.getDay(Day.SATURDAY).getShiftDisplay(),
                        HHMMFormater.print(saturdayReal));
                mReportTableSaturdayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }

        // Fill Sunday
        mReportTableSundayTheoretical.setText(eva.getDay(Day.SUNDAY)
                .getShiftDisplay());
        if (Day.today() >= Day.SUNDAY) {
            Period sundayReal = eva.getDay(Day.SUNDAY).getAccumulate();
            if (sundayReal != null) {
                mReportTableSundayReal.setText(HHMMFormater.print(sundayReal));

                accumulatedBalance += eva.computeBalance(eva.getDay(Day.SUNDAY)
                        .getShiftDisplay(), HHMMFormater.print(sundayReal));
                mReportTableSundayBalance
                        .setText(milisToDisplayTime(accumulatedBalance));
            }
        }
    }

    public String milisToDisplayTime(long milis) {
        Duration duration = new Duration(milis);
        String hours = String.valueOf(Math.abs(duration.getStandardHours()));

        // Now remove the value of the hours from the duration
        duration = duration.minus(duration.getStandardHours() * 3600000);

        String minutes = String
                .valueOf(Math.abs(duration.getStandardMinutes()));

        if (hours.length() == 1) {
            hours = "0" + hours;
        }

        if (minutes.length() == 1) {
            minutes = "0" + minutes;
        }

        return milis < 0 ? "-" + hours + ":" + minutes : hours + ":" + minutes;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onStart() {
        super.onStart();
        EasyTracker.getInstance(this).activityStart(this);
    }

    @Override
    public void onStop() {
        super.onStop();
        EasyTracker.getInstance(this).activityStop(this);
    }
}




Java Source Code List

eu.robertboloc.holaurv.HoLaURV.java
eu.robertboloc.holaurv.activities.AboutActivity.java
eu.robertboloc.holaurv.activities.DisplayActivity.java
eu.robertboloc.holaurv.activities.LoginActivity.java
eu.robertboloc.holaurv.activities.ReportActivity.java
eu.robertboloc.holaurv.adapters.DayCollectionPagerAdapter.java
eu.robertboloc.holaurv.fragments.DayObjectFragment.java
eu.robertboloc.holaurv.helpers.Evalos.java
eu.robertboloc.holaurv.helpers.TypefaceSpan.java
eu.robertboloc.holaurv.models.Day.java
eu.robertboloc.holaurv.models.Entry.java
eu.robertboloc.holaurv.models.Week.java