Autore Topic: Importare dati da un txt a un database!  (Letto 585 volte)

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Importare dati da un txt a un database!
« il: 06 Settembre 2013, 14:24:10 CEST »
0
Ragazzi sono davvero  :-( perchè non riesco a creare un codice che importi da un txt dei dati e li porti...dentro un database...
Vi mostro la situazione ... ho un txt di questo tipo una traccia gps...

WGS 84
U  1
C  255,0,0,2,-1.0
L  -02:00:00
V  0.0 0.0 0 0 0 0 0.0 -1.0 0
E 0|1|00-NUL-00 00:00:00|00:00:00|0|2984
i I00
z  12.716222,42.410293,12.736302,42.449607
T  A 42.41060087ºN 12.72081354ºE 25-SEP-08 07:13:34 N 841.8 0.0 0.0 0.0 0 -1000.0 9999999562023526400000000.0 -1 -1.0 -1.0
T  A 42.41060045ºN 12.72082259ºE 25-SEP-08 07:13:39 s 842.7 0.0 0.0 0.0 0 -1000.0 9999999562023526400000000.0 -1 -1.0 -1.0
T  A 42.41060296ºN 12.72083248ºE 25-SEP-08 07:13:44 s 842.3 0.0 0.0 0.0 0 -1000.0 9999999562023526400000000.0 -1 -1.0 -1.0
T  A 42.41061947ºN 12.72085159ºE 25-SEP-08 07:13:49 s 842.3 0.0 0.0 0.0 0 -1000.0 9999999562023526400000000.0 -1 -1.0 -1.0

Questa è una traccia che è all'interno di file .trk  registrata durante una passeggiata...

Il codice che importa un database..per poi essere interpretato e visualizzato su mappa  è il seguente...

public static int importTracks(String path, Context context) throws ClassNotFoundException, IOException
   {
      TracksDB tracksDB = new TracksDB(context);
      TrackPointsDB trackPointsDB = new TrackPointsDB(context);
      tracksDB.open();
      trackPointsDB.open();

      File file = new File(path);
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));

      int count = 0;

      try
      {
         Track track;
         while ((track = (Track) in.readObject()) != null)
         {
            long id = tracksDB.insert(track.getName());

            ArrayList<TrackPoint> points = track.getTrackPoints();
            for (TrackPoint point : points)
            {
               trackPointsDB.insert(id, point.getLongitude(), point.getLatitude(), point.getAltitude(), point.getAccuracy(),
                     Long.toString(point.getTime()));
            }

            count++;
         }
      }
      catch (EOFException eof)
      {

      }

      // !// finally?
      in.close();
      tracksDB.close();
      trackPointsDB.close();

      return count;
   }


Da dove inizio per importare e convertire il file *.trk in questo database ?? Help!!!!!!!
Siete i migliori so che la potete fareee :)




Offline matttt

Re:Importare dati da un txt a un database!
« Risposta #1 il: 06 Settembre 2013, 22:24:19 CEST »
0
Per fare le cose fatte bene dovresti reperire i dettagli del file format .trk ... altrimenti fai un app che magari ti funzia con questo esempio che ci hai proposto ma non con quello dell'utente X

Guardando questo potresti:
- aprire il file in questione e ricavarti un BufferedReader col quale puoi passare il file riga per riga;
- leggere la prima riga e ignorarla (immagino sia la versione del .trk ... qui vale il discorso di prima, per fare le cose fatte bene dovresti studiarti il file format e casomai agire di conseguenza)
- passare le varie righe successive e per ogni riga:
  + acquisire il primo carattere, che immagino definisca il tipo di dato che ti fornisce quella riga, diciamo un "comando"
  + in base al comando puoi splittare il resto della riga col separatore opportuno (visto che variano... spazio, virgola, pipe, etc.) - con String.split() puoi suddividere la stringa (utilizza espressioni regolari)
  + se una riga è vuota (ammesso che il file format lo permetta) salta al ciclo successivo, allo stesso modo se c'è qualche carattere per i commenti
Le mie apps su Google Play Store:

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Re:Importare dati da un txt a un database!
« Risposta #2 il: 06 Settembre 2013, 23:43:26 CEST »
0
Grazie x la risposta matt..

Io ... non riesco a capire questo codice ..mi puoi spiegare cosa fà riga x riga ? Che tipo di database crea ?
Io devo  ricreare lo stesso database ma con i dati .. di quel file... cioè dovrei modificare questo codice x importare il .trk ma mantenere la stessa struttura...del database che veniva creato dal quel codice.. capisci che voglio dire? Lo so non è semplice neanche da spiagare..figuriamoci a farlo ! :-\
« Ultima modifica: 06 Settembre 2013, 23:45:23 CEST da Dani77 »

Offline matttt

Re:Importare dati da un txt a un database!
« Risposta #3 il: 07 Settembre 2013, 07:56:50 CEST »
0
Allora... "che tipo di DB crea": difficile a dirsi guardando questo codice, dovresti guardare come hanno realizzato le classi TracksDB e TrackPointsDB
Probabilmente c'è un database SQLite (o anche 2 distinti) in locale su Android.
Ma uno potrebbe anche memorizzare i dati su file con un proprio formato per varie ragioni o memorizzare dati su un database esterno.

Riguardo al codice...
- inizializza i 2 DB
- apre il file in lettura, con un flusso che carica oggetti
- all'interno del try cicla i vari oggetti che vengono letti e li memorizza in un oggetto Track
- per ogni oggetto caricato:
  + inserisce nel DB delle tracce il nome della nuova traccia e si salva l'id della riga
  + estrae la lista dei punti
  + per ogni punto:
     * inserisce nel DB dei punti i dettagli di un punto e l'id della traccia a cui è associato
  + incrementa un contatore
- chiude le risorse aperte
Le mie apps su Google Play Store:

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Importare dati da un txt a un database!
« Risposta #4 il: 07 Settembre 2013, 09:05:38 CEST »
0
magari sapere con che app hai generato quel file potrebbe essere utile...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Re:Importare dati da un txt a un database!
« Risposta #5 il: 07 Settembre 2013, 12:43:26 CEST »
0
Per primo grazie della vostra competenza e gentilezza...

Matt sei un geniooo ! Allora ho provato a capire le altre due classi..ma sono molte complesse ...
fanno riferimento a loro volta ad un'altra classe chiamata dbadapter , senza alcun dubbio... sono dei database sqlite,questa dicitura viene riportata piu volte nel codice dbadapter... xo sono codici molto complessi ..non so da dove iniziare a capirli...

Nicola il file *.trk che vorrei fare riuscire a fare importare al software è un file creato con un gps Garmin.

Perchè questo codice  non riesce ad importare il file .trk ? Lo devo convertire in un database ? E' possibile farlo?

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Re:Importare dati da un txt a un database!
« Risposta #6 il: 17 Settembre 2013, 16:37:08 CEST »
0
^ UP ^