Skip to content

Commit

Permalink
upraveny model - porovnava sa verzia v databaze, v internom subore a …
Browse files Browse the repository at this point in the history
…na internete, odstranene nepotrebne triedy modelu, dorobene parsovanie z internetu,prisposobena tomu mainactivity, pridana tabulka info o verzii rozvrhu v databaze(kym nevymyslim lepsi sposob),prisposobeny threadinternet
  • Loading branch information
filek committed Feb 1, 2013
1 parent 515f49c commit 4472753
Show file tree
Hide file tree
Showing 12 changed files with 726 additions and 308 deletions.
2 changes: 1 addition & 1 deletion res/raw/skuska.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<rozvrh verzia="20121208141550" skolrok="2012/13" semester="zimný">
<rozvrh verzia="20121208141551" skolrok="2012/13" semester="zimný">
<typymiestnosti>
<typmiestnosti id="s" popis="Seminárna miestnosť"/>
<typmiestnosti id="l" popis="Praktická učebňa"/>
Expand Down
111 changes: 99 additions & 12 deletions res/raw/skuska.xml~
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,118 @@
<typ id="s" popis="Seminár"/>
<typ id="l" popis="Labák"/>
<typ id="n" popis="Nezadaný typ"/>
</typy>
</typy>
<ucitelia>
<ucitel id="UCI1">
<priezvisko> </priezvisko>
<meno> </meno>
<iniciala> </iniciala>
<katedra>FMFI</katedra>
<oddelenie>FMFI</oddelenie>
<login></login>
</ucitel>
<ucitel id="XXXUCIKAFZM1">
<priezvisko>.KAFZMUcitel1</priezvisko>
<meno> </meno>
<iniciala> </iniciala>
<katedra>KAFZM</katedra>
<oddelenie>KAFZM</oddelenie>
<login></login>
</ucitel>
<ucitel id="XXXUCIKAFZM10">
<priezvisko>.KAFZMUcitel10</priezvisko>
<meno> </meno>
<iniciala> </iniciala>
<katedra>KAFZM</katedra>
<oddelenie>KAFZM</oddelenie>
<login></login>
</ucitel>
</ucitelia>
<miestnosti>
<miestnost>
<nazov> </nazov>
<kapacita>0</kapacita>
<typ>0</typ>
<aiskod></aiskod>
</miestnost>
<miestnost>
<nazov>A</nazov>
<kapacita>330</kapacita>
<typ>u</typ>
<aiskod>FMFI PP A</aiskod>
</miestnost>
<miestnost>
<nazov>B</nazov>
<kapacita>220</kapacita>
<typ>u</typ>
<aiskod>FMFI PP B</aiskod>
</miestnost>
</miestnosti>
<predmety>
<predmet id="PRED1">
<nazov>Mechanika</nazov>
<kod>FMFI.KAFZM/1-FYZ-110/00</kod>
<kratkykod>1-FYZ-110</kratkykod>
<kredity>7</kredity>
<rozsah>6K</rozsah>
</predmet>
<predmet id="PRED3">
<nazov>Molekulová fyzika</nazov>
<kod>FMFI.KAFZM/1-FYZ-155/00</kod>
<kratkykod>1-FYZ-155</kratkykod>
<kredity>3</kredity>
<rozsah>2K</rozsah>
</predmet>
<predmet id="PRED5">
<nazov>Úvod do astronómie</nazov>
<kod>FMFI.KAFZM/1-FYZ-410/00</kod>
<kratkykod>1-FYZ-410</kratkykod>
<kredity>3</kredity>
<rozsah>2P</rozsah>
</predmet>
</predmety>
<hodiny>
<hodina id="1">
<den>pon</den>
<zaciatok>840</zaciatok>
<koniec>885</koniec>
<miestnost>A</miestnost>
<trvanie>1</trvanie>
<predmet>FMFI.KAFZM/1-FYZ-110/00</predmet>
<predmet>XXXPRED010</predmet>
<ucitelia>UCI1</ucitelia>
<kruzky></kruzky>
<typ>n</typ>
<oldid>1</oldid>
<zviazanehodiny></zviazanehodiny>
<zviazaneoldid></zviazaneoldid>
</hodina>
<hodina id="2">
<den>pon</den>
<zaciatok>840</zaciatok>
<koniec>885</koniec>
<miestnost>B</miestnost>
<trvanie>1</trvanie>
<predmet>XXXPRED010</predmet>
<ucitelia>UCI1</ucitelia>
<kruzky></kruzky>
<typ>n</typ>
<oldid>2</oldid>
<zviazanehodiny></zviazanehodiny>
<zviazaneoldid></zviazaneoldid>
</hodina>
<hodina id="3">
<den>pon</den>
<zaciatok>840</zaciatok>
<koniec>885</koniec>
<miestnost>F1</miestnost>
<trvanie>1</trvanie>
<predmet>XXXPRED010</predmet>
<ucitelia>UCI1</ucitelia>
<kruzky></kruzky>
<typ>n</typ>
<oldid>3</oldid>
<zviazanehodiny></zviazanehodiny>
<zviazaneoldid></zviazaneoldid>
</hodina>
</hodiny>

<predmety>
<predmet id="PRED1">
<nazov>Mechanika</nazov>
<kod>FMFI.KAFZM/1-FYZ-110/00</kod>
<kratkykod>1-FYZ-110</kratkykod>
<kredity>7</kredity>
<rozsah>6K</rozsah>
</predmet>
</predmety>
</rozvrh>
156 changes: 130 additions & 26 deletions src/com/svt/candle/DataStorageDatabase.java
Original file line number Diff line number Diff line change
@@ -1,51 +1,154 @@
package com.svt.candle;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.util.ArrayList;

import java.util.Scanner;
import com.svt.candle.Database.DatabaseManager;
import com.svt.candle.XMLParsing.ParserXML;

import android.content.Context;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

import Database.DatabaseManager;

public class DataStorageDatabase implements DataStorage {
/**
* Trieda starajuca sa o ziskanie a odovzdavanie dat
*/
public class DataStorageDatabase {
private Context context;
private TimeTable timeTable = null;
private ArrayList<Lesson> lessons = null;
private InputStream nacitanySubor = null;
private DatabaseManager dbManager = null;

@Override
public TimeTable getTimeTable() {
if (timeTable == null)
Log.d("datastoragedatabase", "timetable je null");
return timeTable;
}
public DataStorageDatabase(Context context) throws IOException {

public DataStorageDatabase(Context context) {
this.context = context;
this.createTimeTable();
dbManager = new DatabaseManager(context);
Cursor cursorInfoRozvrh = dbManager.dajInfoRozvrhu();
//aby sa dalo z cursora citat
cursorInfoRozvrh.moveToFirst();
Log.d("internet", checkVersionInternet());
Log.d("FILE", checkVersionFile());
/*
* kontrola - ak je databaza prazdna, pozrieme ci sme pripojeny na net,
* ak nie parsujeme interny subor, ak ano - parsujeme verziu na
* internete ak je aktualnejsia.
*/

if (cursorInfoRozvrh.getCount() == 0) {
if (amIConnectedToInternet()) {
if (checkVersionInternet().equals(checkVersionFile())) {
Log.d("dsdb", "parse form file");
parseFromFile();
} else {
Log.d("dsdb", "parse form internet");
parseFromInternet();
}
} else {
Log.d("dsdb", "parse form file2");
parseFromFile();
}
}
/*
* kontrola - ak je databaza naplnena a mame pristup k internetu,
* skontrolujeme ci je aktualnejsia verzia - porovnavame databaza vs
* internet
*/
else {
if (amIConnectedToInternet()) {
if (!checkVersionInternet().equals(
cursorInfoRozvrh.getString(0))) {
parseFromInternet();
Log.d("dsdb", "parse form internet2");
}
}
}
}

public void createTimeTable() {
/**
* Control internet connection.
*/
public Boolean amIConnectedToInternet() {
ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}

/**
* zo stringu vrati verziu
*/
private String getVersionFromString(String input) {
Scanner scan = new Scanner(input);
String frg = null;
String delims = "[=]";
String[] frgs = new String[2];
while (scan.hasNext()) {
frg = scan.next();
frgs = frg.split(delims);
if (frgs[0].equals("verzia")) {
return frgs[1].substring(1, frgs[1].length() - 1);
}
}
return null;
}

/**
* Zistujeme verziu xml v internom subore rozvrh.xml
*/
public String checkVersionFile() throws IOException {
InputStream nacitanySubor = null;
nacitanySubor = context.getResources().openRawResource(R.raw.skuska);
int len = 100;
byte[] buffer = new byte[len];
if (nacitanySubor.read(buffer, 0, len) == -1) {
Log.d("buffer", "buffer je null");
return "";
}
return getVersionFromString(new String(buffer));
}

/**
* Zistujeme verziu xml na internete
*/
public String checkVersionInternet() throws MalformedURLException {
ThreadInternet ti = new ThreadInternet(100);
ti.run();
String data = ti.getDataFromInternet();
return getVersionFromString(data);
}

/**
* Rozparuje interny subor a ulozi data do databazy
*/
private void parseFromFile() {
dbManager.vymazRiadkyDatabazy();
// nacitavanie suboru z res/raw pre parser
nacitanySubor = context.getResources().openRawResource(R.raw.rozvrh);
InputStream nacitanySubor = null;
nacitanySubor = context.getResources().openRawResource(R.raw.skuska);
new ParserXML(nacitanySubor, dbManager);
}

lessons = new ArrayList<Lesson>();
// na pracu s databazou
dbManager = new DatabaseManager(context);
// kym vzdy tvorime databazu odznova - na testovanie, neskor pru
// aktualizacii
/**
* Rozparuje xml z xml suboru na internete a ulozi data do databazy Na
* xperii x8 cas 2:30 so DataHadlerIf, cize ako pri subore
*/
private void parseFromInternet() {
dbManager.vymazRiadkyDatabazy();
// ked sa zmeni struktura databazy
// context.deleteDatabase("rozvrh3");
// do db vyparsuje rozvrh.txt
ParserXML parser = new ParserXML(nacitanySubor, dbManager);
Cursor cursor = dbManager.getLesson();
ThreadInternet ti = new ThreadInternet();
ti.run();
new ParserXML(ti.getIS(), dbManager);
}

/**
* Vyhlada data v databaze podla miestnosti a vrati objekt TimeTable
*/
public TimeTable getTTaccTORoom(String room) {

This comment has been minimized.

Copy link
@majak

majak Feb 3, 2013

Member

Tento nazov metody je priserny:) Skus vymysliet nieco co by bolo pochopitelnejsie na prvy pohlad. Kludne radsej dlhy nazov ako toto.

lessons = new ArrayList<Lesson>();

Cursor cursor = dbManager.searchLessonsByRoom(room);

Log.d("cursor", "pocet riadkov = " + cursor.getCount());
cursor.moveToFirst();
Expand All @@ -61,6 +164,7 @@ public void createTimeTable() {
cursor.close();

timeTable = new TimeTable(lessons);
return timeTable;

}
}
Loading

0 comments on commit 4472753

Please sign in to comment.