com.gvccracing.android.tttimer.Dialogs.EditRacerView.java Source code

Java tutorial

Introduction

Here is the source code for com.gvccracing.android.tttimer.Dialogs.EditRacerView.java

Source

package com.gvccracing.android.tttimer.Dialogs;

import com.gvccracing.android.tttimer.DataAccess.Racer;
import com.gvccracing.android.tttimer.DataAccess.Views.CheckInViewInclusive;
import com.gvccracing.android.tttimer.R;
import com.gvccracing.android.tttimer.DataAccess.RacerClubInfo;

import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

public class EditRacerView extends AddRacerView
        implements View.OnClickListener, LoaderManager.LoaderCallbacks<Cursor> {

    private static final int RACER_INFO_LOADER = 0x88;
    private Long racerClubInfo_ID;
    private Long racer_ID;
    private String initCategory;

    public EditRacerView(long racerClubInfo_ID) {
        super(false);

        this.racerClubInfo_ID = racerClubInfo_ID;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = super.onCreateView(inflater, container, savedInstanceState);

        btnAddRacer.setText(getResources().getString(R.string.SaveChanges));

        return v;
    }

    @Override
    protected int GetTitleResourceID() {
        return R.string.EditRacerInfo;
    }

    @Override
    public void onResume() {
        super.onResume();

        this.getLoaderManager().initLoader(RACER_INFO_LOADER, null, this);
    }

    public void onClick(View v) {
        try {
            if (v == btnAddRacer) {
                Log.v(LOG_TAG, "btnEditRacerClickHandler");

                // First name
                String firstName = txtFirstName.getText().toString();
                // Last name
                String lastName = txtLastName.getText().toString();
                // Category
                String category = spinCategory.getSelectedItem().toString();
                // USACNumber
                String usacNumber = txtUSACNumber.getText().toString();

                if (firstName.trim().equals("")) {
                    Toast.makeText(getActivity(), "Please enter a first name", 3000).show();
                    return;
                }

                if (lastName.trim().equals("")) {
                    Toast.makeText(getActivity(), "Please enter a last name", 3000).show();
                    return;
                }

                if (usacNumber.trim().equals("")) {
                    Toast.makeText(getActivity(), "Please enter a USAC license number", 3000).show();
                    return;
                }

                if (UpdateRacer(firstName, lastName, usacNumber, category)) {
                    // Hide the dialog
                    dismiss();

                    // Set the textboxes in the dialog to an empty string
                    txtFirstName.setText("");
                    txtLastName.setText("");
                    txtUSACNumber.setText("");
                }
            } else {
                super.onClick(v);
            }
        } catch (Exception ex) {
            Log.e(LOG_TAG, "btnEditRacerClickHandler failed", ex);
        }
    }

    private boolean UpdateRacer(String firstName, String lastName, String usacNumber, final String category) {

        Racer.Instance().Update(getActivity(), racer_ID, firstName, lastName, Integer.parseInt(usacNumber), null,
                null, null, null, null);

        // The category has changed.  Figure out if the racer upgraded, or if the initial value was incorrect
        if (category != initCategory) {
            // Ask the question
            RacerUpgraded racerUpgraded = new RacerUpgraded(racerClubInfo_ID, racer_ID, category, initCategory);
            FragmentManager fm = getActivity().getSupportFragmentManager();
            racerUpgraded.show(fm, RacerUpgraded.LOG_TAG);
        }
        return true;
    }

    public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
        Log.i(LOG_TAG, "onCreateLoader start: id=" + Integer.toString(id));
        CursorLoader loader = null;
        String[] projection;
        String selection;
        String[] selectionArgs = null;
        String sortOrder = null;
        switch (id) {
        case RACER_INFO_LOADER:
            projection = new String[] { RacerClubInfo.Racer_ID, Racer.LastName, Racer.FirstName, Racer.USACNumber,
                    RacerClubInfo.Category };
            selection = RacerClubInfo.Instance().getTableName() + "." + RacerClubInfo._ID + "=? AND "
                    + RacerClubInfo.Upgraded + "=?";
            ;
            selectionArgs = new String[] { Long.toString(racerClubInfo_ID), Long.toString(0l) };
            loader = new CursorLoader(getActivity(), CheckInViewInclusive.Instance().CONTENT_URI, projection,
                    selection, selectionArgs, sortOrder);
            break;
        }
        Log.i(LOG_TAG, "onCreateLoader complete: id=" + Integer.toString(id));
        return loader;
    }

    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        try {
            Log.i(LOG_TAG, "onLoadFinished start: id=" + Integer.toString(loader.getId()));
            switch (loader.getId()) {
            case RACER_INFO_LOADER:
                cursor.moveToFirst();
                racer_ID = cursor.getLong(cursor.getColumnIndex(RacerClubInfo.Racer_ID));

                txtFirstName.setText(cursor.getString(cursor.getColumnIndex(Racer.FirstName)));
                txtLastName.setText(cursor.getString(cursor.getColumnIndex(Racer.LastName)));
                txtUSACNumber.setText(cursor.getString(cursor.getColumnIndex(Racer.USACNumber)));
                SetCategorySelectionByValue(cursor.getString(cursor.getColumnIndex(RacerClubInfo.Category)));
                break;
            }
            Log.i(LOG_TAG, "onLoadFinished complete: id=" + Integer.toString(loader.getId()));
        } catch (Exception ex) {
            Log.e(LOG_TAG, "onLoadFinished error", ex);
        }
    }

    private void SetCategorySelectionByValue(String racerCategory) {
        initCategory = racerCategory;
        for (int i = 0; i < spinCategory.getCount(); i++) {
            String desc = spinCategory.getItemAtPosition(i).toString();
            if (desc.equalsIgnoreCase(racerCategory)) {
                spinCategory.setSelection(i);
                break;
            }
        }
    }

    public void onLoaderReset(Loader<Cursor> loader) {
        try {
            Log.i(LOG_TAG, "onLoaderReset start: id=" + Integer.toString(loader.getId()));
            switch (loader.getId()) {
            case RACER_INFO_LOADER:
                // Do nothing
                break;
            }
            Log.i(LOG_TAG, "onLoaderReset complete: id=" + Integer.toString(loader.getId()));
        } catch (Exception ex) {
            Log.e(LOG_TAG, "onLoaderReset error", ex);
        }
    }
}