Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Kripton ORM: classe del progetto

Scopriamo come implementare una classe per un'applicazione per Android basata su Java e la libreria Kripton ORM.
Scopriamo come implementare una classe per un'applicazione per Android basata su Java e la libreria Kripton ORM.
Link copiato negli appunti

All'avvio dell'applicazione viene definita la base dati (solo la prima volta), cancellati i dati già esistenti ed infine caricati alcuni dati d'esempio, giusto
per visualizzare qualcosa nell'activity principale del progetto. Vediamo la classe che rappresenta l'application del nostro progetto Android d'esempio.

public class KriptonExampleApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    // inizializziamo libreria
    KriptonLibrary.init(this);
    BindEsempioDataSource db = BindEsempioDataSource.instance();
    db.execute(daoFactory -> {
        DaoArtistaImpl daoArtista = daoFactory.getDaoArtista();
        DaoAlbumImpl daoAlbum = daoFactory.getDaoAlbum();
        DaoCanzone daoCanzone =daoFactory.getDaoCanzone();
        daoAlbum.deleteAll();
        daoArtista.deleteAll();
        Artista artista = new Artista();
        artista.nome = "Alfonso Mago";
        artista.singer = true;
        daoArtista.insert(artista);
        for (int i = 0; i < 1; i++) {
            Album album = new Album();
            album.setArtistId(artista.getId());
            album.setDataUscita(new Date((new java.util.Date()).getTime()));
            album.nome = "Correndo sul mare Vol. "+i;
            daoAlbum.insert(album);
            for (int j = 0; j < 4; j++) {
                Canzone canzone = new Canzone();
                canzone.setAlbumId(album.getId());
                Set<String> tags=new HashSet<String>();
                tags.add("Heavy Metal");
                tags.add("Chili out");
                canzone.setTags(tags);
                canzone.nome="Canzone number "+j;
                daoCanzone.insert(canzone);
            }
        }
        return TransactionResult.COMMIT;
        });
    }
}

Con l'esecuzione del codice, sul log cat vengono generate le seguenti righe di log, utili a capire a runtime cosa succede:

Figura 1. Output log cat.
Output log cat

Come si vede dal log tutte le operazioni SQL, comprese quelle di creazione del database sono tracciate. Vediamo ora una parte del codice dell'activity al fine di capire come interagire con la base dati nell'activity o nei fragment.

Figura 2. Activity d'esempio.
Activity d'esempio

Nell'activity viene caricato e visualizzato l'elenco delle canzoni dalla base dati.

public class MainActivity extends AppCompatActivity {
    /**
    * Async task per lavorare con il db su un thread che non sia il main thread
    */
    private BindEsempioAsyncTask.Simple<List<Canzone>> asyncTask=new BindEsempioAsyncTask.Simple<List<Canzone>>() {
      @Override
      public List<Canzone> onExecute(BindEsempioDataSource dataSource) throws Throwable {
       return dataSource.getDaoCanzone().selectAll();
      }
      @Override
      public void onFinish(List<Canzone> result) {
        mAdapter.updateValues(result);
      }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      ..
      // eseguiamo il caricamento del db
      asyncTask.execute();
      ..
    });
}

Come si evince dal codice, per evitare di lavorare con il database sul thread UI (o main) si è utilizzato un async task generato da Kripton. Questo async task, a
differenza di quelli "standard", può essere riutilizzato diverse volte e consente di lavorare con il datasource generato in modo agevole (si veda il metodo
onExecute). Ovviamente si poteva utilizzare event bus come sistema alternativo per fare la stessa cosa.

Ti consigliamo anche