Search in sources :

Example 1 with CloudEntry

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;
    }
}
Also used : CursorLoader(android.support.v4.content.CursorLoader) CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException) CloudEntry(com.amaze.filemanager.database.models.CloudEntry) Uri(android.net.Uri)

Example 2 with CloudEntry

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();
}
Also used : AuthenticationException(com.cloudrail.si.exceptions.AuthenticationException) AsyncTask(android.os.AsyncTask) GoogleDrive(com.cloudrail.si.services.GoogleDrive) CloudEntry(com.amaze.filemanager.database.models.CloudEntry) Box(com.cloudrail.si.services.Box) ParseException(com.cloudrail.si.exceptions.ParseException) CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException) AuthenticationException(com.cloudrail.si.exceptions.AuthenticationException) CloudStorage(com.cloudrail.si.interfaces.CloudStorage) CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException) OneDrive(com.cloudrail.si.services.OneDrive) ParseException(com.cloudrail.si.exceptions.ParseException) Dropbox(com.cloudrail.si.services.Dropbox)

Example 3 with CloudEntry

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;
}
Also used : CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException) SQLiteDatabase(android.database.sqlite.SQLiteDatabase) ArrayList(java.util.ArrayList) CloudEntry(com.amaze.filemanager.database.models.CloudEntry) Cursor(android.database.Cursor) CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException)

Example 4 with CloudEntry

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;
}
Also used : CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException) SQLiteDatabase(android.database.sqlite.SQLiteDatabase) CloudEntry(com.amaze.filemanager.database.models.CloudEntry) Cursor(android.database.Cursor) CloudPluginException(com.amaze.filemanager.exceptions.CloudPluginException)

Aggregations

CloudEntry (com.amaze.filemanager.database.models.CloudEntry)4 CloudPluginException (com.amaze.filemanager.exceptions.CloudPluginException)4 Cursor (android.database.Cursor)2 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)2 Uri (android.net.Uri)1 AsyncTask (android.os.AsyncTask)1 CursorLoader (android.support.v4.content.CursorLoader)1 AuthenticationException (com.cloudrail.si.exceptions.AuthenticationException)1 ParseException (com.cloudrail.si.exceptions.ParseException)1 CloudStorage (com.cloudrail.si.interfaces.CloudStorage)1 Box (com.cloudrail.si.services.Box)1 Dropbox (com.cloudrail.si.services.Dropbox)1 GoogleDrive (com.cloudrail.si.services.GoogleDrive)1 OneDrive (com.cloudrail.si.services.OneDrive)1 ArrayList (java.util.ArrayList)1