import com.owncloud.android.R;
import com.owncloud.android.db.ProviderMeta;
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
-import com.owncloud.android.lib.resources.files.FileUtils;
import com.owncloud.android.lib.resources.shares.ShareType;
import com.owncloud.android.utils.Log_OC;
ProviderTableMeta.FILE_SHARE_BY_LINK);
mFileProjectionMap.put(ProviderTableMeta.FILE_PUBLIC_LINK,
ProviderTableMeta.FILE_PUBLIC_LINK);
+ mFileProjectionMap.put(ProviderTableMeta.FILE_PERMISSIONS,
+ ProviderTableMeta.FILE_PERMISSIONS);
+ mFileProjectionMap.put(ProviderTableMeta.FILE_REMOTE_ID,
+ ProviderTableMeta.FILE_REMOTE_ID);
}
private static final int SINGLE_FILE = 1;
@Override
public int delete(Uri uri, String where, String[] whereArgs) {
- Log_OC.d(TAG, "Deleting " + uri + " at provider " + this);
+ //Log_OC.d(TAG, "Deleting " + uri + " at provider " + this);
int count = 0;
SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.beginTransaction();
-
- // Get parentId to notify the change
- long parentId = getParentId(uri);
-
- // Delete action
try {
count = delete(db, uri, where, whereArgs);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
- Log_OC.d(TAG, "Uri " + uri);
getContext().getContentResolver().notifyChange(uri, null);
-
- // Notify the change to the parent folder
- notifyChangeToParentUri(parentId);
return count;
}
- private long getParentId(Uri uri) {
- long parentId = -1;
-
- if (mUriMatcher.match(uri) == SINGLE_FILE || mUriMatcher.match(uri) == DIRECTORY) {
- String fileId = uri.toString().substring(uri.toString().lastIndexOf(FileUtils.PATH_SEPARATOR) + 1);
- Uri selectFileUri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, fileId);
- String[] fileProjection = new String[] { ProviderTableMeta.FILE_PARENT };
- Cursor fileCursor = query(selectFileUri, fileProjection, null, null, null);
-
- if (fileCursor != null && fileCursor.moveToFirst()) {
- parentId = fileCursor.getLong(fileCursor.getColumnIndex(ProviderTableMeta.FILE_PARENT));
- }
- fileCursor.close();
- }
- Log_OC.d(TAG, "getParentId = " + parentId);
- return parentId;
- }
-
- private void notifyChangeToParentUri(long parentId) {
- if (parentId != -1) {
- Uri parentUri = Uri.withAppendedPath(
- ProviderTableMeta.CONTENT_URI_DIR,
- String.valueOf(parentId));
- Log_OC.d(TAG, "ParentUri " + parentUri);
- getContext().getContentResolver().notifyChange(parentUri, null);
- }
- }
-
private int delete(SQLiteDatabase db, Uri uri, String where, String[] whereArgs) {
int count = 0;
switch (mUriMatcher.match(uri)) {
@Override
public Uri insert(Uri uri, ContentValues values) {
//Log_OC.d(TAG, "Inserting " + values.getAsString(ProviderTableMeta.FILE_PATH) + " at provider " + this);
- Log_OC.d(TAG, "Uri " + uri);
Uri newUri = null;
SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.beginTransaction();
-
- // Insert action
try {
newUri = insert(db, uri, values);
db.setTransactionSuccessful();
db.endTransaction();
}
getContext().getContentResolver().notifyChange(newUri, null);
-
- // Get parentId to notify the change
- long parentId = getParentId(newUri);
- // Notify the change to the parent folder
- notifyChangeToParentUri(parentId);
-
return newUri;
}
// DB case_sensitive
db.execSQL("PRAGMA case_sensitive_like = true");
Cursor c = sqlQuery.query(db, projection, selection, selectionArgs, null, null, order);
- Log_OC.d(TAG, "setting notification URI: " + uri);
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
- Log_OC.d(TAG, "Updating " + values.getAsString(ProviderTableMeta.FILE_PATH) + " at provider " + this);
- Log_OC.d(TAG, "Uri " + uri);
+ //Log_OC.d(TAG, "Updating " + values.getAsString(ProviderTableMeta.FILE_PATH) + " at provider " + this);
int count = 0;
SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.beginTransaction();
+ ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA + " INTEGER, "
+ ProviderTableMeta.FILE_ETAG + " TEXT, "
+ ProviderTableMeta.FILE_SHARE_BY_LINK + " INTEGER, "
- + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT );"
+ + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT, "
+ + ProviderTableMeta.FILE_PERMISSIONS + " TEXT null,"
+ + ProviderTableMeta.FILE_REMOTE_ID + " TEXT null);"
);
// Create table ocshares
}
if (!upgraded)
Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
-
+
if (oldVersion < 6 && newVersion >= 6) {
Log_OC.i("SQL", "Entering in the #5 ADD in onUpgrade");
db.beginTransaction();
db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME +
" ADD COLUMN " + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT " +
" DEFAULT NULL");
-
+
// Create table ocshares
db.execSQL("CREATE TABLE " + ProviderTableMeta.OCSHARES_TABLE_NAME + "("
+ ProviderTableMeta._ID + " INTEGER PRIMARY KEY, "
+ ProviderTableMeta.OCSHARES_USER_ID + " INTEGER, "
+ ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED + " INTEGER,"
+ ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + " TEXT );" );
+
+ upgraded = true;
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+ }
+ if (!upgraded)
+ Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
+
+ if (oldVersion < 7 && newVersion >= 7) {
+ Log_OC.i("SQL", "Entering in the #7 ADD in onUpgrade");
+ db.beginTransaction();
+ try {
+ db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME +
+ " ADD COLUMN " + ProviderTableMeta.FILE_PERMISSIONS + " TEXT " +
+ " DEFAULT NULL");
+
+ db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME +
+ " ADD COLUMN " + ProviderTableMeta.FILE_REMOTE_ID + " TEXT " +
+ " DEFAULT NULL");
upgraded = true;
db.setTransactionSuccessful();