use of com.amaze.filemanager.database.models.CloudEntry in project AmazeFileManager by TeamAmaze.
the class MainActivity method onCreateLoader.
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
if (cloudSyncTask != null && cloudSyncTask.getStatus() == AsyncTask.Status.RUNNING) {
cloudSyncTask.cancel(true);
}
Uri uri = Uri.withAppendedPath(Uri.parse("content://" + CloudContract.PROVIDER_AUTHORITY), "/keys.db/secret_keys");
String[] projection = new String[] { CloudContract.COLUMN_ID, CloudContract.COLUMN_CLIENT_ID, CloudContract.COLUMN_CLIENT_SECRET_KEY };
switch(id) {
case REQUEST_CODE_CLOUD_LIST_KEY:
Uri uriAppendedPath = uri;
switch(OpenMode.getOpenMode(args.getInt(ARGS_KEY_LOADER, 2))) {
case GDRIVE:
uriAppendedPath = ContentUris.withAppendedId(uri, 2);
break;
case DROPBOX:
uriAppendedPath = ContentUris.withAppendedId(uri, 3);
break;
case BOX:
uriAppendedPath = ContentUris.withAppendedId(uri, 4);
break;
case ONEDRIVE:
uriAppendedPath = ContentUris.withAppendedId(uri, 5);
break;
}
return new CursorLoader(this, uriAppendedPath, projection, null, null, null);
case REQUEST_CODE_CLOUD_LIST_KEYS:
try {
List<CloudEntry> cloudEntries = cloudHandler.getAllEntries();
// we want keys for services saved in database, and the cloudrail app key which
// is at index 1
String[] ids = new String[cloudEntries.size() + 1];
ids[0] = 1 + "";
for (int i = 1; i <= cloudEntries.size(); i++) {
// we need to get only those cloud details which user wants
switch(cloudEntries.get(i - 1).getServiceType()) {
case GDRIVE:
ids[i] = 2 + "";
break;
case DROPBOX:
ids[i] = 3 + "";
break;
case BOX:
ids[i] = 4 + "";
break;
case ONEDRIVE:
ids[i] = 5 + "";
break;
}
}
return new CursorLoader(this, uri, projection, CloudContract.COLUMN_ID, ids, null);
} catch (CloudPluginException e) {
e.printStackTrace();
Toast.makeText(this, getResources().getString(R.string.cloud_error_plugin), Toast.LENGTH_LONG).show();
}
default:
return null;
}
}
use of com.amaze.filemanager.database.models.CloudEntry in project AmazeFileManager by TeamAmaze.
the class MainActivity method onLoadFinished.
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor data) {
if (data == null) {
Toast.makeText(this, getResources().getString(R.string.cloud_error_failed_restart), Toast.LENGTH_LONG).show();
return;
}
cloudSyncTask = new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
boolean hasUpdatedDrawer = false;
if (data.getCount() > 0 && data.moveToFirst()) {
do {
switch(data.getInt(0)) {
case 1:
try {
CloudRail.setAppKey(data.getString(1));
} catch (Exception e) {
// any other exception due to network conditions or other error
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.failed_cloud_api_key));
return false;
}
break;
case 2:
// DRIVE
try {
CloudEntry cloudEntryGdrive = null;
CloudEntry savedCloudEntryGdrive;
GoogleDrive cloudStorageDrive = new GoogleDrive(getApplicationContext(), data.getString(1), "", CLOUD_AUTHENTICATOR_REDIRECT_URI, data.getString(2));
cloudStorageDrive.useAdvancedAuthentication();
if ((savedCloudEntryGdrive = cloudHandler.findEntry(OpenMode.GDRIVE)) != null) {
try {
cloudStorageDrive.loadAsString(savedCloudEntryGdrive.getPersistData());
} catch (ParseException e) {
e.printStackTrace();
// we need to update the persist string as existing one is been compromised
cloudStorageDrive.login();
cloudEntryGdrive = new CloudEntry(OpenMode.GDRIVE, cloudStorageDrive.saveAsString());
cloudHandler.updateEntry(OpenMode.GDRIVE, cloudEntryGdrive);
}
} else {
cloudStorageDrive.login();
cloudEntryGdrive = new CloudEntry(OpenMode.GDRIVE, cloudStorageDrive.saveAsString());
cloudHandler.addEntry(cloudEntryGdrive);
}
dataUtils.addAccount(cloudStorageDrive);
hasUpdatedDrawer = true;
} catch (CloudPluginException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_error_plugin));
deleteConnection(OpenMode.GDRIVE);
return false;
} catch (AuthenticationException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_fail_authenticate));
deleteConnection(OpenMode.GDRIVE);
return false;
} catch (Exception e) {
// any other exception due to network conditions or other error
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.failed_cloud_new_connection));
deleteConnection(OpenMode.GDRIVE);
return false;
}
break;
case 3:
// DROPBOX
try {
CloudEntry cloudEntryDropbox = null;
CloudEntry savedCloudEntryDropbox;
CloudStorage cloudStorageDropbox = new Dropbox(getApplicationContext(), data.getString(1), data.getString(2));
if ((savedCloudEntryDropbox = cloudHandler.findEntry(OpenMode.DROPBOX)) != null) {
// we already have the entry and saved state, get it
try {
cloudStorageDropbox.loadAsString(savedCloudEntryDropbox.getPersistData());
} catch (ParseException e) {
e.printStackTrace();
// we need to persist data again
cloudStorageDropbox.login();
cloudEntryDropbox = new CloudEntry(OpenMode.DROPBOX, cloudStorageDropbox.saveAsString());
cloudHandler.updateEntry(OpenMode.DROPBOX, cloudEntryDropbox);
}
} else {
cloudStorageDropbox.login();
cloudEntryDropbox = new CloudEntry(OpenMode.DROPBOX, cloudStorageDropbox.saveAsString());
cloudHandler.addEntry(cloudEntryDropbox);
}
dataUtils.addAccount(cloudStorageDropbox);
hasUpdatedDrawer = true;
} catch (CloudPluginException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_error_plugin));
deleteConnection(OpenMode.DROPBOX);
return false;
} catch (AuthenticationException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_fail_authenticate));
deleteConnection(OpenMode.DROPBOX);
return false;
} catch (Exception e) {
// any other exception due to network conditions or other error
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.failed_cloud_new_connection));
deleteConnection(OpenMode.DROPBOX);
return false;
}
break;
case 4:
// BOX
try {
CloudEntry cloudEntryBox = null;
CloudEntry savedCloudEntryBox;
CloudStorage cloudStorageBox = new Box(getApplicationContext(), data.getString(1), data.getString(2));
if ((savedCloudEntryBox = cloudHandler.findEntry(OpenMode.BOX)) != null) {
// we already have the entry and saved state, get it
try {
cloudStorageBox.loadAsString(savedCloudEntryBox.getPersistData());
} catch (ParseException e) {
e.printStackTrace();
// we need to persist data again
cloudStorageBox.login();
cloudEntryBox = new CloudEntry(OpenMode.BOX, cloudStorageBox.saveAsString());
cloudHandler.updateEntry(OpenMode.BOX, cloudEntryBox);
}
} else {
cloudStorageBox.login();
cloudEntryBox = new CloudEntry(OpenMode.BOX, cloudStorageBox.saveAsString());
cloudHandler.addEntry(cloudEntryBox);
}
dataUtils.addAccount(cloudStorageBox);
hasUpdatedDrawer = true;
} catch (CloudPluginException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_error_plugin));
deleteConnection(OpenMode.BOX);
return false;
} catch (AuthenticationException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_fail_authenticate));
deleteConnection(OpenMode.BOX);
return false;
} catch (Exception e) {
// any other exception due to network conditions or other error
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.failed_cloud_new_connection));
deleteConnection(OpenMode.BOX);
return false;
}
break;
case 5:
// ONEDRIVE
try {
CloudEntry cloudEntryOnedrive = null;
CloudEntry savedCloudEntryOnedrive;
CloudStorage cloudStorageOnedrive = new OneDrive(getApplicationContext(), data.getString(1), data.getString(2));
if ((savedCloudEntryOnedrive = cloudHandler.findEntry(OpenMode.ONEDRIVE)) != null) {
// we already have the entry and saved state, get it
try {
cloudStorageOnedrive.loadAsString(savedCloudEntryOnedrive.getPersistData());
} catch (ParseException e) {
e.printStackTrace();
// we need to persist data again
cloudStorageOnedrive.login();
cloudEntryOnedrive = new CloudEntry(OpenMode.ONEDRIVE, cloudStorageOnedrive.saveAsString());
cloudHandler.updateEntry(OpenMode.ONEDRIVE, cloudEntryOnedrive);
}
} else {
cloudStorageOnedrive.login();
cloudEntryOnedrive = new CloudEntry(OpenMode.ONEDRIVE, cloudStorageOnedrive.saveAsString());
cloudHandler.addEntry(cloudEntryOnedrive);
}
dataUtils.addAccount(cloudStorageOnedrive);
hasUpdatedDrawer = true;
} catch (CloudPluginException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_error_plugin));
deleteConnection(OpenMode.ONEDRIVE);
return false;
} catch (AuthenticationException e) {
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.cloud_fail_authenticate));
deleteConnection(OpenMode.ONEDRIVE);
return false;
} catch (Exception e) {
// any other exception due to network conditions or other error
e.printStackTrace();
AppConfig.toast(MainActivity.this, getResources().getString(R.string.failed_cloud_new_connection));
deleteConnection(OpenMode.ONEDRIVE);
return false;
}
break;
default:
Toast.makeText(MainActivity.this, getResources().getString(R.string.cloud_error_failed_restart), Toast.LENGTH_LONG).show();
return false;
}
} while (data.moveToNext());
}
return hasUpdatedDrawer;
}
@Override
protected void onPostExecute(Boolean refreshDrawer) {
super.onPostExecute(refreshDrawer);
if (refreshDrawer) {
drawer.refreshDrawer();
}
}
}.execute();
}
use of com.amaze.filemanager.database.models.CloudEntry in project AmazeFileManager by TeamAmaze.
the class CloudHandler method getAllEntries.
public List<CloudEntry> getAllEntries() throws CloudPluginException {
if (!CloudSheetFragment.isCloudProviderAvailable(context))
throw new CloudPluginException();
List<CloudEntry> entryList = new ArrayList<>();
// Select all query
String query = "Select * FROM " + TABLE_CLOUD_PERSIST;
SQLiteDatabase sqLiteDatabase = getReadableDatabase();
Cursor cursor = null;
try {
cursor = sqLiteDatabase.rawQuery(query, null);
// Looping through all rows and adding them to list
if (cursor.getCount() > 0 && cursor.moveToFirst()) {
do {
CloudEntry cloudEntry = new CloudEntry();
cloudEntry.setId((cursor.getInt(0)));
cloudEntry.setServiceType(OpenMode.getOpenMode(cursor.getInt(1)));
try {
cloudEntry.setPersistData(CryptUtil.decryptPassword(context, cursor.getString(2)));
} catch (Exception e) {
e.printStackTrace();
cloudEntry.setPersistData("");
entryList.add(cloudEntry);
continue;
}
entryList.add(cloudEntry);
} while (cursor.moveToNext());
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return entryList;
}
use of com.amaze.filemanager.database.models.CloudEntry in project AmazeFileManager by TeamAmaze.
the class CloudHandler method findEntry.
public CloudEntry findEntry(OpenMode serviceType) throws CloudPluginException {
if (!CloudSheetFragment.isCloudProviderAvailable(context))
throw new CloudPluginException();
String query = "Select * FROM " + TABLE_CLOUD_PERSIST + " WHERE " + COLUMN_CLOUD_SERVICE + "= \"" + serviceType.ordinal() + "\"";
SQLiteDatabase sqLiteDatabase = getReadableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(query, null);
CloudEntry cloudEntry = new CloudEntry();
if (cursor.moveToFirst()) {
cloudEntry.setId((cursor.getInt(0)));
cloudEntry.setServiceType(serviceType);
try {
cloudEntry.setPersistData(CryptUtil.decryptPassword(context, cursor.getString(2)));
} catch (Exception e) {
e.printStackTrace();
cloudEntry.setPersistData("");
return cloudEntry;
}
cursor.close();
} else {
cloudEntry = null;
}
return cloudEntry;
}
Aggregations