Enregistrement en local

louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   -  
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite enregistrer en base de donnée intégralité d'un objet "Séries".
Pour faire simple, je reçois une List<SerieUpdate> (grâce à un API)
Chaque "ligne" de ma liste contien un id, et en requestionnant l'api j'obtiens un objet Series.

try {
               List<SerieUpdate> updates = tvdb.getWeeklyUpdates().getSeriesUpdates(); 
                index = updates.size(); //longueur de la liste update
                for (int i = 0; i<updates.size(); i++){
                    SeriesUpdate elt = updates.get(i);
                    int id = elt.getSeriesId();
                    String idS = String.valueOf(id);
                    s = tvdb.getSeries(idS, "fr");
}


Le hic ? J'aimerais stoquer chaque "s" dans une base de donnée en local sur le téléphone. Cette bdd se viderais a la fermeture de l'application et la "recherche" se ferais dans un autre processus, la list étant assez longue le but étant que ca sois rapide.
Pour l'instant je suis sur un AsyncTask car je ne sais pas comment pour chaque s, l'inscrire dans ma bdd.
Un coup de main ?

Merci !

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
A voir également:

5 réponses

BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Hello,

Plusieurs choix s'offrent à toi:
- sqlite "classique": recherche DataBaseHelper
- Annotated SQL: bdd fonctionnant grâce à des annotations
- Realm: nouveau moteur de bdd
0
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   69
 
Bonjour,
Je passe par realm (j'en connais aucun des trois, mais realm est apparemment très apprécier dans le secteur pro, alors je prend de l'avance)
J'ai crée une classe realm MyClass. Mais ma question persise, comment enregistrer mes 2000 Series dans 2000 MyClass ?
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
0
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   69
 
Je regarde ca !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   69
 
 try {
                updates = tvdb.getWeeklyUpdates().getSeriesUpdates(); //cree une liste de seriesUpdates
                index = updates.size(); //longueur de la liste update
                rdm = String.valueOf(index); //cast en string pour le log.d
                Log.d("taille update", String.valueOf(rdm));
                myOtherRealm.beginTransaction();
                MyListSerie myLSerie = myOtherRealm.createObject(MyListSerie.class);
                int aa = index; //au cas ou j'ai besoin d'index
                while ( aa > 0 ){
                    myLSerie.id = aa;
                    mySerie = myOtherRealm.createObject(MySerie.class);
                    SeriesUpdate elt = updates.get(aa);
                    int id = elt.getSeriesId();
                    s = tvdb.getSeries(String.valueOf(id), "fr");
                    mySerie.seriesId = s.getSeriesId();
                    mySerie.language = s.getLanguage();
                    mySerie.seriesName = s.getSeriesName();
                    mySerie.banner = s.getBanner();
                    mySerie.overview = s.getOverview();
                    mySerie.firstAired = s.getFirstAired();
                    mySerie.actors = s.getActors().toString();
                    mySerie.airsDayOfWeek = s.getAirsDayOfWeek();
                    mySerie.airsTime = s.getAirsTime();
                    mySerie.contentRating = s.getContentRating();
                    mySerie.genres = s.getGenres().toString();
                    mySerie.network = s.getNetwork();
                    mySerie.runtime = s.getRuntime();
                    mySerie.status = s.getStatus();
                    mySerie.fanart = s.getFanart();
                    mySerie.lastUpdated = s.getLastUpdated();
                    mySerie.poster = s.getPoster();
                    aa--;
                    myLSerie.stuff.add(mySerie);
                }



J'aimerais savoir ce que tu en pense ! Je ne sais pas si c'est optimum, ou même si ca fonctionne mais dans le résonnement, je suis dans le bon ?

Merci
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Oui, grossomodo, c'est l'idée.
Il manque un save de l'objet Realm à la fin
0
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   69
 
Entre temps j'ai eu le temps de tester et ca ne fonctionne pas, pas du tout.
Mes objet était en public et il faut etre en private, du coup ca change tout (rien d'insurmontable) sauf pour ajouter a la list une serie..
myLSerie.setStuff(mySerie); ne fonctionne pas

public class MyListSerie extends RealmObject {

    @PrimaryKey
    private int id;
    private RealmList<MySerie> stuff;
    //getters setters

public class MySerie extends RealmObject {

    @PrimaryKey
    private String id;
    private String seriesId;
    private String language;
    private String seriesName;
    private String banner;
    private String overview;
    private String firstAired;
    private String actors;
    private String airsDayOfWeek;
    private String airsTime;
    private String contentRating;
    private String genres;
    private String network;
    private String rating;
    private String runtime;
    private String status;
    private String fanart;
    private String lastUpdated;
    private String poster;

//getters setters

0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918 > louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention  
 
0
louisgautier Messages postés 1635 Date d'inscription   Statut Membre Dernière intervention   69
 
xD désolé tu répond pile quand je trouve comment faire !
Ca marche, presque.
Apparemment mySerie ne peut pas etre crée plusieur fois (j'en reviens au problème du début)
0