/***
 * Wyciąg z książki "Hello, Android!",
 * opublikowanej przez wydawnictwo Helion S.A.
 * Niniejszy kod jest chroniony prawami autorskimi. Nie może zostać wykorzystany do utworzenia 
 * materiałów treningowych, kursów, książek, artykułów, itp. Prosimy o kontakt w razie
 * pojawienia się wątpliwości.
 * Nie gwarantujemy, że niniejszy kod będzie się nadawał do jakiegokolwiek celu. 
 * Więcej informacji można znaleźć na stronie http://www.pragmaticprogrammer.com/titles/eband.
***/
package org.przyklad.zdarzenia;

import static android.provider.BaseColumns._ID;
import static org.przyklad.zdarzenia.Stale.NAZWA_TABELI;
import static org.przyklad.zdarzenia.Stale.CZAS;
import static org.przyklad.zdarzenia.Stale.TYTUL;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.app.ListActivity;
import android.widget.SimpleCursorAdapter;

public class Zdarzenia extends ListActivity {
	
    private DaneZdarzen zdarzenia;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        zdarzenia = new DaneZdarzen(this);
        try {
            dodajZdarzenie("Witaj, Androidzie!" );
            Cursor kursor = wezZdarzenia();
            pokazZdarzenia(kursor);
        } finally {
            zdarzenia.close();
        }
    }
                 
    private void dodajZdarzenie(String string) {
        // Wstawia nowy rekord do źródła danych Zdarzenia.
        // Podobnie wygląda proces usuwania i aktualizowania rekordów.
        SQLiteDatabase bd = zdarzenia.getWritableDatabase();
        ContentValues wartosci = new ContentValues();
        wartosci.put(CZAS, System.currentTimeMillis());
        wartosci.put(TYTUL, string);
        bd.insertOrThrow(NAZWA_TABELI, null, wartosci);
    }

    private static String[] FROM = { _ID, CZAS, TYTUL, };
    private static String ORDER_BY = CZAS + " DESC" ;
    private static int[] DO = { R.id.idwiersza, R.id.czas, R.id.tytul, };
    private Cursor wezZdarzenia() {
        // Przeprowadza zarządzane zapytanie. W razie potrzeby Aktywność zajmie się
        // zamykaniem kursora i jego ponownym zapytaniem.
        SQLiteDatabase bd = zdarzenia.getReadableDatabase();
        Cursor kursor = bd.query(NAZWA_TABELI, FROM, null, null, null,
            null, ORDER_BY);
        startManagingCursor(kursor);
        return kursor;
    }
                                  
    private void pokazZdarzenia(Cursor kursor) {
        // Konfiguruje wiązanie danych
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.element, kursor, FROM, DO);
        setListAdapter(adapter);
    }

}
