OSDN Git Service

Mac移行後
[train-delayed/source.git] / workspace / TrainDelayed / src / com / td / HistoryContentProvider.java
1 package com.td;\r
2 \r
3 import com.td.db.SQLiteOpenHelperImpl;\r
4 \r
5 import android.content.ContentProvider;\r
6 import android.content.ContentUris;\r
7 import android.content.ContentValues;\r
8 import android.content.UriMatcher;\r
9 import android.database.Cursor;\r
10 import android.database.sqlite.SQLiteDatabase;\r
11 import android.net.Uri;\r
12 \r
13 public class HistoryContentProvider extends ContentProvider {\r
14         private static final String UNKNOWN_URI = "Unknown URI ";\r
15 \r
16         public class Fields {\r
17                 public static final String ID = android.provider.BaseColumns._ID;\r
18                 public static final String ROUTE_ID = "ROUTE_ID";\r
19                 public static final String YMD = "YMD";\r
20                 public static final String HM = "HM";\r
21                 public static final String WEEK = "WEEK";\r
22                 public static final String PERIOD = "PERIOD";\r
23                 public static final String NUM = "NUM";\r
24                 public static final String STATUS = "STATUS";\r
25         }\r
26 \r
27         public static class Projection {\r
28                 public static final String[] projection = { Fields.ID, Fields.ROUTE_ID,\r
29                                 Fields.YMD, Fields.HM, Fields.WEEK, Fields.PERIOD, Fields.NUM,\r
30                                 Fields.STATUS };\r
31         }\r
32 \r
33         public static final String AUTHORITY = "com.td.history";\r
34         public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY\r
35                         + "/" + "numbers");\r
36 \r
37         private static final int CODE_NUMBERS = 1;\r
38         private static final int CODE_NUMBER = 2;\r
39         private static final String HISTORY_TABLE = "history";\r
40 \r
41         /** \83f\83B\83\8c\83N\83g\83\8a\82ÌMIME\83^\83C\83v */\r
42         private static final String CONTENT_TYPE = "vnd.android.cursor.dir/com.td.history";\r
43 \r
44         /** \92P\88ê\82ÌMIME\83^\83C\83v */\r
45         private static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/com.td.history";\r
46 \r
47         private UriMatcher uriMatcher;\r
48         private SQLiteOpenHelperImpl sqlSupport;\r
49 \r
50         @Override\r
51         public boolean onCreate() {\r
52                 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);\r
53                 uriMatcher.addURI(AUTHORITY, "numbers", CODE_NUMBERS);\r
54                 uriMatcher.addURI(AUTHORITY, "numbers/#", CODE_NUMBER);\r
55                 sqlSupport = new SQLiteOpenHelperImpl(getContext());\r
56                 return true;\r
57         }\r
58 \r
59         @Override\r
60         public String getType(Uri uri) {\r
61                 switch (uriMatcher.match(uri)) {\r
62                 case CODE_NUMBERS:\r
63                         return CONTENT_TYPE;\r
64                 case CODE_NUMBER:\r
65                         return CONTENT_ITEM_TYPE;\r
66                 default:\r
67                         throw new IllegalArgumentException(UNKNOWN_URI + uri);\r
68                 }\r
69         }\r
70 \r
71         @Override\r
72         public int delete(Uri uri, String selection, String[] selectionArgs) {\r
73                 final SQLiteDatabase db = sqlSupport.getWritableDatabase();\r
74                 final int deleteCount;\r
75                 switch (uriMatcher.match(uri)) {\r
76                 case CODE_NUMBERS:\r
77                         deleteCount = db.delete(HISTORY_TABLE, selection, selectionArgs);\r
78                         break;\r
79                 case CODE_NUMBER:\r
80                         final long id = Long.parseLong(uri.getPathSegments().get(1));\r
81                         final String idPlusSelection = android.provider.BaseColumns._ID\r
82                                         + "=" + Long.toString(id)\r
83                                         + (selection == null ? "" : "AND (" + selection + ")");\r
84                         deleteCount = db.delete(HISTORY_TABLE, idPlusSelection,\r
85                                         selectionArgs);\r
86                         break;\r
87                 default:\r
88                         throw new IllegalArgumentException(UNKNOWN_URI + uri);\r
89                 }\r
90 \r
91                 return deleteCount;\r
92         }\r
93 \r
94         @Override\r
95         public Uri insert(Uri uri, ContentValues values) {\r
96                 final SQLiteDatabase db = sqlSupport.getWritableDatabase();\r
97                 if (uriMatcher.match(uri) != CODE_NUMBERS) {\r
98                         throw new IllegalArgumentException(UNKNOWN_URI + uri);\r
99                 }\r
100 \r
101                 final long id = db.insertOrThrow(HISTORY_TABLE, null, values);\r
102 \r
103                 // \95Ï\8dX\82ð\92Ê\92m\82·\82é\r
104                 final Uri newUri = ContentUris.withAppendedId(CONTENT_URI, id);\r
105                 getContext().getContentResolver().notifyChange(newUri, null);\r
106 \r
107                 return newUri;\r
108         }\r
109 \r
110         @Override\r
111         public Cursor query(Uri uri, String[] projection, String selection,\r
112                         String[] selectionArgs, String sortOrder) {\r
113                 if (uriMatcher.match(uri) == CODE_NUMBER) {\r
114                         final long id = Long.parseLong(uri.getPathSegments().get(1));\r
115                         selection = android.provider.BaseColumns._ID + "="\r
116                                         + Long.toString(id)\r
117                                         + (selection == null ? "" : "AND (" + selection + ")");\r
118                 }\r
119                 final SQLiteDatabase db = sqlSupport.getWritableDatabase();\r
120                 Cursor cursor = db.query(HISTORY_TABLE, projection, selection,\r
121                                 selectionArgs, null, null, sortOrder);\r
122 \r
123                 cursor.setNotificationUri(getContext().getContentResolver(), uri);\r
124 \r
125                 return cursor;\r
126         }\r
127 \r
128         @Override\r
129         public int update(Uri uri, ContentValues values, String selection,\r
130                         String[] selectionArgs) {\r
131                 final SQLiteDatabase db = sqlSupport.getWritableDatabase();\r
132                 final int updateCount;\r
133                 switch (uriMatcher.match(uri)) {\r
134                 case CODE_NUMBERS:\r
135                         updateCount = db.update(HISTORY_TABLE, values, selection,\r
136                                         selectionArgs);\r
137                         break;\r
138                 case CODE_NUMBER:\r
139                         final long id = Long.parseLong(uri.getPathSegments().get(1));\r
140                         final String idPlusSelection = android.provider.BaseColumns._ID\r
141                                         + "=" + Long.toString(id)\r
142                                         + (selection == null ? "" : "AND (" + selection + ")");\r
143                         updateCount = db.update(HISTORY_TABLE, values, idPlusSelection,\r
144                                         selectionArgs);\r
145                         break;\r
146                 default:\r
147                         throw new IllegalArgumentException(UNKNOWN_URI + uri);\r
148                 }\r
149 \r
150                 // \95Ï\8dX\82ð\92Ê\92m\82·\82é\r
151                 getContext().getContentResolver().notifyChange(uri, null);\r
152 \r
153                 return updateCount;\r
154         }\r
155 }\r