From 06d3914c5d389a2aedae7a731fa136853f98cdf6 Mon Sep 17 00:00:00 2001 From: Yuji Konishi Date: Thu, 21 Jul 2011 01:46:25 +0900 Subject: [PATCH] =?utf8?q?=E8=B7=AF=E7=B7=9A=E5=9B=B3=E3=81=AE=E4=B8=80?= =?utf8?q?=E8=A6=A7=E3=81=8C=E3=83=AA=E3=82=B9=E3=83=88=E3=81=AB=E5=87=BA?= =?utf8?q?=E3=81=9F=E3=80=82SQL=E3=81=AF=E6=AD=A3=E3=81=97=E3=81=84?= =?utf8?q?=E3=81=BF=E3=81=9F=E3=81=84(=E7=A2=BA=E8=AA=8D=E3=81=AF=E4=B8=8D?= =?utf8?q?=E5=8D=81=E5=88=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/com/td/MonitorTimeActivity.java | 4 +- .../src/com/td/PrefectureListActivity.java | 8 +- .../src/com/td/SearchWordActivity.java | 2 +- .../src/com/td/TrainDelayedActivity.java | 6 +- .../TrainDelayed/src/com/td/TrainListActivity.java | 8 +- .../TrainDelayed/src/com/td/db/DatabaseHelper.java | 6 + workspace/TrainDelayed/src/com/td/db/History.java | 6 +- .../TrainDelayed/src/com/td/db/HistoryDao.java | 2 +- workspace/TrainDelayed/src/com/td/db/Keyword.java | 6 +- .../TrainDelayed/src/com/td/db/KeywordDao.java | 4 +- workspace/TrainDelayed/src/com/td/db/Monitor.java | 6 +- .../TrainDelayed/src/com/td/db/MonitorDao.java | 2 +- .../TrainDelayed/src/com/td/db/Prefecture.java | 6 +- .../TrainDelayed/src/com/td/db/PrefectureDao.java | 5 +- workspace/TrainDelayed/src/com/td/db/Relation.java | 26 +++- .../TrainDelayed/src/com/td/db/RelationDao.java | 116 +++++++++++++++ workspace/TrainDelayed/src/com/td/db/Train.java | 8 +- workspace/TrainDelayed/src/com/td/db/TrainDao.java | 57 +++++--- .../com/td/service/TrainDelayedServiceImpl.java | 2 +- .../src/com/td/webapi/RouteUpdater.java | 162 ++++++++++++--------- 20 files changed, 316 insertions(+), 126 deletions(-) create mode 100644 workspace/TrainDelayed/src/com/td/db/RelationDao.java diff --git a/workspace/TrainDelayed/src/com/td/MonitorTimeActivity.java b/workspace/TrainDelayed/src/com/td/MonitorTimeActivity.java index f610282..125fec6 100644 --- a/workspace/TrainDelayed/src/com/td/MonitorTimeActivity.java +++ b/workspace/TrainDelayed/src/com/td/MonitorTimeActivity.java @@ -242,7 +242,7 @@ public class MonitorTimeActivity extends Activity { private void clickConfButton() { Monitor monitor; - int id; + long id; if (mode == addButton) { monitor = getMonitor(-1); @@ -352,7 +352,7 @@ public class MonitorTimeActivity extends Activity { } } - private Monitor getMonitor(int id){ + private Monitor getMonitor(long id){ String t0 = null; if (id < 0){ Calendar cal = Calendar.getInstance(); diff --git a/workspace/TrainDelayed/src/com/td/PrefectureListActivity.java b/workspace/TrainDelayed/src/com/td/PrefectureListActivity.java index d3cc267..d569568 100644 --- a/workspace/TrainDelayed/src/com/td/PrefectureListActivity.java +++ b/workspace/TrainDelayed/src/com/td/PrefectureListActivity.java @@ -2,6 +2,7 @@ package com.td; import java.util.List; +import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; @@ -32,7 +33,12 @@ public class PrefectureListActivity extends BaseActivity { listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View view, int position, long id) { - + Prefecture pre = list.get(position); + long pid = pre.getId(); + Intent intent = new Intent(PrefectureListActivity.this, + (Class) TrainListActivity.class); + intent.putExtra("PID", pid); + startActivityForResult(intent, -1); } }); diff --git a/workspace/TrainDelayed/src/com/td/SearchWordActivity.java b/workspace/TrainDelayed/src/com/td/SearchWordActivity.java index 040c997..8c7f231 100644 --- a/workspace/TrainDelayed/src/com/td/SearchWordActivity.java +++ b/workspace/TrainDelayed/src/com/td/SearchWordActivity.java @@ -178,7 +178,7 @@ public class SearchWordActivity extends Activity { private void clickConfButton() { String text; Keyword keyword; - int id; + long id; if (mode == addButton){ text = editText.getText().toString(); diff --git a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java index 324339f..3fc3723 100644 --- a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java +++ b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java @@ -82,6 +82,8 @@ public class TrainDelayedActivity extends BaseActivity { public void onClick(View v) { RouteUpdater up = new RouteUpdater(); up.update(); + +// TrainDao.getInstance().search(1); // HistoryDao.getInstance().delete(TrainDelayedActivity.this); @@ -96,10 +98,8 @@ public class TrainDelayedActivity extends BaseActivity { button2 = (Button) this.findViewById(R.id.button02); button2.setOnClickListener(new OnClickListener() { public void onClick(View view) { - // TrainListActivity - // PrefectureListActivity Intent intent = new Intent(TrainDelayedActivity.this, - (Class) TrainListActivity.class); + (Class) PrefectureListActivity.class); startActivityForResult(intent, -1); } }); diff --git a/workspace/TrainDelayed/src/com/td/TrainListActivity.java b/workspace/TrainDelayed/src/com/td/TrainListActivity.java index cfd062e..a8b9118 100644 --- a/workspace/TrainDelayed/src/com/td/TrainListActivity.java +++ b/workspace/TrainDelayed/src/com/td/TrainListActivity.java @@ -25,11 +25,13 @@ public class TrainListActivity extends BaseActivity { super.onCreate(savedInstanceState); setContentView(R.layout.train_list); - ListView listView = (ListView) findViewById(R.id.menu51); Button button1 = (Button) findViewById(R.id.button51); - final List list = TrainDao.getInstance().search(); + Bundle extras = getIntent().getExtras(); + long pid = extras.getLong("PID"); + + final List list = TrainDao.getInstance().search(pid); TrainListViewArrayAdapter adapter = new TrainListViewArrayAdapter(this, android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter); @@ -46,7 +48,7 @@ public class TrainListActivity extends BaseActivity { CheckBox checkbox = (CheckBox)view.findViewById(R.id.checkBox); checkbox.setChecked(selected); - int n = item.getId(); + long n = item.getId(); TrainDao.getInstance().set(n, selected); pref.put(TrainDelayedServiceImpl.PREF_SVS_DBFLG, 0); diff --git a/workspace/TrainDelayed/src/com/td/db/DatabaseHelper.java b/workspace/TrainDelayed/src/com/td/db/DatabaseHelper.java index 3551faf..3b8d04a 100644 --- a/workspace/TrainDelayed/src/com/td/db/DatabaseHelper.java +++ b/workspace/TrainDelayed/src/com/td/db/DatabaseHelper.java @@ -24,6 +24,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { PrefectureDao.getInstance().start(db); TrainDao.getInstance().start(db); + RelationDao.getInstance().start(db); KeywordDao.getInstance().start(db); MonitorDao.getInstance().start(db); } @@ -41,6 +42,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) { PrefectureDao prefectureDao = PrefectureDao.getInstance(); TrainDao trainDao = TrainDao.getInstance(); + RelationDao relationDao = RelationDao.getInstance(); KeywordDao keywordDao = KeywordDao.getInstance(); MonitorDao monitorDao = MonitorDao.getInstance(); @@ -51,6 +53,9 @@ public class DatabaseHelper extends SQLiteOpenHelper { trainDao.onCreate(db); trainDao.start(db); + relationDao.onCreate(db); + relationDao.start(db); + keywordDao.onCreate(db); keywordDao.start(db); @@ -61,6 +66,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { prefectureDao.init(db); trainDao.init(db); + relationDao.init(db); keywordDao.init(db); monitorDao.init(db); diff --git a/workspace/TrainDelayed/src/com/td/db/History.java b/workspace/TrainDelayed/src/com/td/db/History.java index 61685a9..5764a17 100644 --- a/workspace/TrainDelayed/src/com/td/db/History.java +++ b/workspace/TrainDelayed/src/com/td/db/History.java @@ -1,7 +1,7 @@ package com.td.db; public class History { - private int id; + private long id; private int routeId; private int ymd; private int hm; @@ -10,7 +10,7 @@ public class History { private int num; private int status; - public History(int id, int routeId, int ymd, int hm, int week, int period, + public History(long id, int routeId, int ymd, int hm, int week, int period, int num, int status) { this.id = id; this.routeId = routeId; @@ -22,7 +22,7 @@ public class History { this.status = status; } - public int getId() { + public long getId() { return id; } diff --git a/workspace/TrainDelayed/src/com/td/db/HistoryDao.java b/workspace/TrainDelayed/src/com/td/db/HistoryDao.java index 3929ad8..bc8b882 100644 --- a/workspace/TrainDelayed/src/com/td/db/HistoryDao.java +++ b/workspace/TrainDelayed/src/com/td/db/HistoryDao.java @@ -36,7 +36,7 @@ public class HistoryDao { if (cursor.moveToFirst()) { do { int n = 0; - int id = cursor.getInt(n++); + long id = cursor.getInt(n++); int routeId = cursor.getInt(n++); int ymd = cursor.getInt(n++); int hm = cursor.getInt(n++); diff --git a/workspace/TrainDelayed/src/com/td/db/Keyword.java b/workspace/TrainDelayed/src/com/td/db/Keyword.java index b670e7a..469fdb9 100644 --- a/workspace/TrainDelayed/src/com/td/db/Keyword.java +++ b/workspace/TrainDelayed/src/com/td/db/Keyword.java @@ -1,10 +1,10 @@ package com.td.db; public class Keyword { - private int id; + private long id; private String text; - public Keyword(int id, String text){ + public Keyword(long id, String text){ this.id = id; this.text = text; } @@ -13,7 +13,7 @@ public class Keyword { this(-1, text); } - public int getId() { + public long getId() { return id; } diff --git a/workspace/TrainDelayed/src/com/td/db/KeywordDao.java b/workspace/TrainDelayed/src/com/td/db/KeywordDao.java index f24555d..4143ead 100644 --- a/workspace/TrainDelayed/src/com/td/db/KeywordDao.java +++ b/workspace/TrainDelayed/src/com/td/db/KeywordDao.java @@ -123,7 +123,7 @@ public class KeywordDao { } } - public void set(int id, String text) { + public void set(long id, String text) { DatabaseHelper helper = DatabaseHelper.getInstance(); SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); @@ -142,7 +142,7 @@ public class KeywordDao { } } - public void delete(int id) { + public void delete(long id) { DatabaseHelper helper = DatabaseHelper.getInstance(); SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); diff --git a/workspace/TrainDelayed/src/com/td/db/Monitor.java b/workspace/TrainDelayed/src/com/td/db/Monitor.java index bec2bf2..0c194f1 100644 --- a/workspace/TrainDelayed/src/com/td/db/Monitor.java +++ b/workspace/TrainDelayed/src/com/td/db/Monitor.java @@ -6,12 +6,12 @@ import java.util.Date; import com.td.utility.DateUtil; public class Monitor { - private int id; + private long id; private boolean[] week; private int from; private int to; - public Monitor(int id, int from, int to){ + public Monitor(long id, int from, int to){ this.id = id; this.from = from; this.to = to; @@ -43,7 +43,7 @@ public class Monitor { week[index] = status; } - public int getId() { + public long getId() { return id; } diff --git a/workspace/TrainDelayed/src/com/td/db/MonitorDao.java b/workspace/TrainDelayed/src/com/td/db/MonitorDao.java index dc339f2..d476b0c 100644 --- a/workspace/TrainDelayed/src/com/td/db/MonitorDao.java +++ b/workspace/TrainDelayed/src/com/td/db/MonitorDao.java @@ -191,7 +191,7 @@ public class MonitorDao { } } - public void delete(int id) { + public void delete(long id) { DatabaseHelper helper = DatabaseHelper.getInstance(); SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); diff --git a/workspace/TrainDelayed/src/com/td/db/Prefecture.java b/workspace/TrainDelayed/src/com/td/db/Prefecture.java index 5adc6f2..2092fda 100644 --- a/workspace/TrainDelayed/src/com/td/db/Prefecture.java +++ b/workspace/TrainDelayed/src/com/td/db/Prefecture.java @@ -1,10 +1,10 @@ package com.td.db; public class Prefecture { - private int id = -1; + private long id = -1; private String name; - public Prefecture(int id, String name){ + public Prefecture(long id, String name){ this.id = id; this.name = name; } @@ -13,7 +13,7 @@ public class Prefecture { } - public int getId() { + public long getId() { return id; } diff --git a/workspace/TrainDelayed/src/com/td/db/PrefectureDao.java b/workspace/TrainDelayed/src/com/td/db/PrefectureDao.java index b13776d..526ca27 100644 --- a/workspace/TrainDelayed/src/com/td/db/PrefectureDao.java +++ b/workspace/TrainDelayed/src/com/td/db/PrefectureDao.java @@ -89,11 +89,12 @@ public class PrefectureDao { return list; } - public void addNT(Prefecture prefecture) { + public long addNT(Prefecture prefecture) { int i = 1; SQLiteStatement stmt = insertStmt; stmt.bindString(i++, prefecture.getName()); - stmt.executeInsert(); + long id = stmt.executeInsert(); + return id; } public void deleteNT() { diff --git a/workspace/TrainDelayed/src/com/td/db/Relation.java b/workspace/TrainDelayed/src/com/td/db/Relation.java index 6febbc6..ca57ceb 100644 --- a/workspace/TrainDelayed/src/com/td/db/Relation.java +++ b/workspace/TrainDelayed/src/com/td/db/Relation.java @@ -1,23 +1,35 @@ package com.td.db; public class Relation { - private int id = -1; - private int pid = -1; - private int tid = -1; + private long id = -1; + private long pid = -1; + private long tid = -1; - public Relation(int id, int pid, int tid){ + public Relation(long id, long pid, long tid){ this.id = id; this.pid = pid; this.tid = tid; } - public int getId() { + public Relation() { + // TODO Auto-generated constructor stub + } + + public long getId() { return id; } - public int getPid() { + public long getPid() { return pid; } - public int getTid() { + public long getTid() { return tid; } + + public void setPid(long pid) { + this.pid = pid; + } + + public void setTid(long tid) { + this.tid = tid; + } } diff --git a/workspace/TrainDelayed/src/com/td/db/RelationDao.java b/workspace/TrainDelayed/src/com/td/db/RelationDao.java new file mode 100644 index 0000000..b5ccd9e --- /dev/null +++ b/workspace/TrainDelayed/src/com/td/db/RelationDao.java @@ -0,0 +1,116 @@ +package com.td.db; + +import java.util.ArrayList; +import java.util.List; + +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteStatement; + +import com.td.utility.Debug; + +public class RelationDao { + private static RelationDao instance = null; + private SQLiteStatement insertStmt = null; + private SQLiteStatement deleteStmt = null; + + public static RelationDao getInstance(){ + if (instance == null){ + instance = new RelationDao(); + } + return instance; + } + + private RelationDao(){ + + } + + public void onCreate(SQLiteDatabase db) { + db.execSQL( + "CREATE TABLE RELATION (" + + android.provider.BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + "PID INTEGER," + + "TID INTEGER" + + ");"); + } + + public void init(SQLiteDatabase db) + { + + } + + public void start(SQLiteDatabase db) { + insertStmt = db.compileStatement( + "INSERT INTO RELATION (" + + "PID, TID" + + ") VALUES (" + + "?, ?" + + ");"); + deleteStmt = db.compileStatement( + "DELETE FROM RELATION"); + } + + public List search(){ + return search(null, null, android.provider.BaseColumns._ID); + } + + public List search(long pid){ + String selection = "PID = ?"; + String[] selectionArgs = new String[1]; + + selectionArgs[0] = String.valueOf(pid); + + return search(selection, selectionArgs, android.provider.BaseColumns._ID); + } + + private List search(String selection, String[] selectionArgs, String orderBy){ + List list = new ArrayList(); + try { + DatabaseHelper helper = DatabaseHelper.getInstance(); + SQLiteDatabase db = helper.getReadableDatabase(); + + Cursor cursor = db.query( + "RELATION", + new String[] { + android.provider.BaseColumns._ID, + "PID", + "TID"}, + selection, selectionArgs, null, null, orderBy); + cursor.moveToFirst(); + int size = cursor.getCount(); + for (int i = 0; i < size; i++) { + Relation relation = new Relation( + cursor.getInt(0), + cursor.getInt(1), + cursor.getInt(2)); + list.add(relation); + cursor.moveToNext(); + } + cursor.close(); +// } catch (SQLException e){ +// // TODO +// Debug.d(this, null, e); + } catch (Exception e){ + // TODO + Debug.d(this, null, e); + } + finally { + // TODO + } + return list; + } + + public long addNT(Relation relation) { + int i = 1; + SQLiteStatement stmt = insertStmt; + stmt.bindLong(i++, relation.getPid()); + stmt.bindLong(i++, relation.getTid()); + long id = stmt.executeInsert(); + return id; + } + + public void deleteNT() { + SQLiteStatement stmt = deleteStmt; + stmt.execute(); + } +} diff --git a/workspace/TrainDelayed/src/com/td/db/Train.java b/workspace/TrainDelayed/src/com/td/db/Train.java index 52859d7..7559bd2 100644 --- a/workspace/TrainDelayed/src/com/td/db/Train.java +++ b/workspace/TrainDelayed/src/com/td/db/Train.java @@ -1,19 +1,19 @@ package com.td.db; public class Train { - private int id; + private long id; private String name; private String searchText; private boolean selected; - public Train(int id, String name, String searchText, int selected){ + public Train(long id, String name, String searchText, int selected){ this.id = id; this.name = name; this.searchText = searchText; this.selected = (selected != 0)? true : false; } - public Train(int id, String name){ + public Train(long id, String name){ this.id = id; this.name = name; this.searchText = null; @@ -24,7 +24,7 @@ public class Train { this(-1, null, null, 0); } - public int getId() { + public long getId() { return id; } diff --git a/workspace/TrainDelayed/src/com/td/db/TrainDao.java b/workspace/TrainDelayed/src/com/td/db/TrainDao.java index 110db3e..796a866 100644 --- a/workspace/TrainDelayed/src/com/td/db/TrainDao.java +++ b/workspace/TrainDelayed/src/com/td/db/TrainDao.java @@ -37,21 +37,8 @@ public class TrainDao { + ");"); } - public void init(SQLiteDatabase db) - { - Train train; - - train = new Train(1, "‹ž•l“Œ–kü"); - train.setSearchText("‹ž•l“Œ–k"); - add(db, train); - - train = new Train(2, "“ŒŠC“¹ü"); - train.setSearchText("“ŒŠC“¹"); - add(db, train); - - train = new Train(3, "‹ž•l‹}sü"); - train.setSearchText("‹ž‹}"); - add(db, train); + public void init(SQLiteDatabase db){ + } public void start(SQLiteDatabase db) { @@ -130,6 +117,39 @@ public class TrainDao { return list; } + public List search(long pid){ + String sql = + "select train._id, train.name, train.search_text, train.selected " + + "from train " + + "inner join relation on relation.pid = ? and relation.tid = train._id"; + String[] selectionArgs = new String[1]; + selectionArgs[0] = String.valueOf(pid); + + List list = new ArrayList(); + + try { + DatabaseHelper helper = DatabaseHelper.getInstance(); + SQLiteDatabase db = helper.getReadableDatabase(); + Cursor cursor = db.rawQuery(sql, selectionArgs); + cursor.moveToFirst(); + int size = cursor.getCount(); + for (int i = 0; i < size; i++) { + Train train = new Train( + cursor.getInt(0), + cursor.getString(1), + cursor.getString(2), + cursor.getInt(3)); + list.add(train); + cursor.moveToNext(); + } + cursor.close(); + } + catch (Exception e){ + // TODO + Debug.d(this, null, e); + } + return list; + } public void add(Train train) { DatabaseHelper helper = DatabaseHelper.getInstance(); SQLiteDatabase db = helper.getWritableDatabase(); @@ -155,17 +175,18 @@ public class TrainDao { } } - public void addNT(Train train) { + public long addNT(Train train) { int i = 1; SQLiteStatement stmt = insertStmt; //stmt.clearBindings();// TODO stmt.bindString(i++, train.getName()); stmt.bindString(i++, train.getSearchText()); stmt.bindLong(i++, Util.toInt(train.isSelected())); - stmt.executeInsert(); + long id = stmt.executeInsert(); + return id; } - public void set(int id, boolean selected) { + public void set(long id, boolean selected) { DatabaseHelper helper = DatabaseHelper.getInstance(); SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); diff --git a/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java b/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java index 60a8e57..21df44c 100644 --- a/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java +++ b/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java @@ -43,7 +43,7 @@ public class TrainDelayedServiceImpl extends Service { private TrainTwitterAdapter listener = new TrainTwitterAdapter(this); private String action = null; - private static int id = 0; + private static long id = 0; @Override public IBinder onBind(Intent intent) { diff --git a/workspace/TrainDelayed/src/com/td/webapi/RouteUpdater.java b/workspace/TrainDelayed/src/com/td/webapi/RouteUpdater.java index 5d3cc6e..60a0f22 100644 --- a/workspace/TrainDelayed/src/com/td/webapi/RouteUpdater.java +++ b/workspace/TrainDelayed/src/com/td/webapi/RouteUpdater.java @@ -20,8 +20,11 @@ import android.database.sqlite.SQLiteDatabase; import com.td.db.DatabaseHelper; import com.td.db.Prefecture; import com.td.db.PrefectureDao; +import com.td.db.Relation; +import com.td.db.RelationDao; import com.td.db.Train; import com.td.db.TrainDao; +import com.td.utility.Debug; public class RouteUpdater { private static final String URL1 = "http://express.heartrails.com/api/xml?method=getPrefectures"; @@ -29,82 +32,106 @@ public class RouteUpdater { private static final String NAME1 = "prefecture"; private static final String NAME2 = "line"; - public void update(){ - PrefectureDao preDao = PrefectureDao.getInstance(); - TrainDao trainDao = TrainDao.getInstance(); - - List list1 = getList(URL1, NAME1); - List list2 = null; - if (list1 == null){ - return; - } - - DatabaseHelper helper = DatabaseHelper.getInstance(); - SQLiteDatabase db = helper.getWritableDatabase(); - db.beginTransaction(); - - preDao.deleteNT(); - trainDao.deleteNT(); - Prefecture pre = new Prefecture(); - Train train = new Train(); - List ret; - - int N = 0; // TODO - for (String key : list1){ - pre.setName(key); - preDao.addNT(pre); - - String param = encode(key); - if (param == null){ - continue; - } - String url = URL2 + param; - list2 = getList(url, NAME2); - if (list2 == null){ - continue; + public void update() { + SQLiteDatabase db = null; + + try { + PrefectureDao preDao = PrefectureDao.getInstance(); + TrainDao trainDao = TrainDao.getInstance(); + RelationDao relDao = RelationDao.getInstance(); + List list1 = getList(URL1, NAME1); + List list2 = null; + if (list1 == null) { + return; } - for (String name : list2){ - ret = trainDao.search(name); - if (ret.size() > 0){ + + DatabaseHelper helper = DatabaseHelper.getInstance(); + db = helper.getWritableDatabase(); + db.beginTransaction(); + + preDao.deleteNT(); + trainDao.deleteNT(); + relDao.deleteNT(); + + Prefecture pre = new Prefecture(); + Train train = new Train(); + Relation rel = new Relation(); + + List ret; + + int N = 0; // TODO + for (String key : list1) { + pre.setName(key); + long pid = preDao.addNT(pre); + if (pid < 0) { + // TODO + continue; + } + + String param = encode(key); + if (param == null) { continue; } - train.setName(name); - trainDao.addNT(train); + String url = URL2 + param; + list2 = getList(url, NAME2); + if (list2 == null) { + continue; + } + for (String name : list2) { + ret = trainDao.search(name); + if (ret.size() > 0) { + continue; + } + train.setName(name); + + long tid = trainDao.addNT(train); + if (tid < 0) { + // TODO + break; + } + + rel.setPid(pid); + rel.setTid(tid); + long id = relDao.addNT(rel); + if (id < 0) { + // TODO + break; + } + } + // TODO +// if (N++ > 5) { +// break; +// } } - if (N++ > 5){ - break; + db.setTransactionSuccessful(); + } + catch (Exception e){ + Debug.d(this, null, e); + } + finally { + if (db != null) { + db.endTransaction(); } } - - // TODO -// ret = trainDao.search("JR”ŸŠÙŽxü"); -// ret = trainDao.search(); -// -// db.setTransactionSuccessful(); -// db.endTransaction(); -// -// ret = trainDao.search("JR”ŸŠÙŽxü"); -// ret = trainDao.search(); -// int c = ret.size(); } - - private String encode(String s){ + + private String encode(String s) { try { return URLEncoder.encode(s, "UTF-8"); } catch (UnsupportedEncodingException e) { return null; } } - - private List getList(String url, String name){ + + private List getList(String url, String name) { HttpClient client = new HttpClient(); OutputStream os = new ByteArrayOutputStream(); int status; List list = null; - + try { status = client.get(url, os); - if (status == HttpStatus.SC_OK){ + if (status == HttpStatus.SC_OK) { list = parse(os, name); } } catch (ClientProtocolException e) { @@ -114,32 +141,33 @@ public class RouteUpdater { } return list; } - + private List parse(OutputStream os, String name) { List list = new ArrayList(); - + try { - final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); + final XmlPullParserFactory factory = XmlPullParserFactory + .newInstance(); final XmlPullParser parser = factory.newPullParser(); // XMLƒp[ƒT‚ɉðÍ‚µ‚½‚¢“à—e‚ðÝ’è‚·‚é parser.setInput(new StringReader(os.toString())); - + // XML•¶Í‚̏I‚í‚è‚܂Ń‹[ƒv‚µ‚ĉðÍ‚·‚é for (int eventType = parser.getEventType(); eventType != XmlPullParser.END_DOCUMENT; eventType = parser .next()) { String tagName; String tagText; - + switch (eventType) { // TAG‚ÌŽn‚Ü‚è case XmlPullParser.START_TAG: // TAG‚Ì–¼‘O‚ðŽæ“¾‚·‚é tagName = parser.getName(); - + if (tagName.equals(name)) { // ŽŸ‚Ì—v‘f‚֐i‚Þ parser.next(); - + // —v‘f‚ªTEXT‚¾‚Á‚½‚ç“à—e‚ðŽæ‚èo‚· if (parser.getEventType() == XmlPullParser.TEXT) { tagText = parser.getText(); @@ -150,11 +178,9 @@ public class RouteUpdater { } } return list; - } - catch (XmlPullParserException e1){ + } catch (XmlPullParserException e1) { return null; - } - catch (IOException e2){ + } catch (IOException e2) { return null; } } -- 2.11.0