Enregistrement en local

Fermé
louisgautier Messages postés 1635 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 - Modifié par BunoCS le 26/07/2016 à 17:49
louisgautier Messages postés 1635 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 - 27 juil. 2016 à 14:37
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 15505 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 5 février 2025 3 913
27 juil. 2016 à 10:56
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 lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
27 juil. 2016 à 11:55
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 15505 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 5 février 2025 3 913
27 juil. 2016 à 11:57
0
louisgautier Messages postés 1635 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
27 juil. 2016 à 12:14
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 lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
27 juil. 2016 à 12:41
 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 15505 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 5 février 2025 3 913
27 juil. 2016 à 14:00
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 lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
27 juil. 2016 à 14:10
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 15505 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 5 février 2025 3 913 > louisgautier Messages postés 1635 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017
27 juil. 2016 à 14:30
0
louisgautier Messages postés 1635 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
Modifié par louisgautier le 27/07/2016 à 14:58
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