Search in sources :

Example 31 with Preferences

use of org.orcid.jaxb.model.record_v2.Preferences in project k-9 by k9mail.

the class SettingsImporter method importAccount.

private static AccountDescriptionPair importAccount(Context context, StorageEditor editor, int contentVersion, ImportedAccount account, boolean overwrite) throws InvalidSettingValueException {
    AccountDescription original = new AccountDescription(account.name, account.uuid);
    Preferences prefs = Preferences.getPreferences(context);
    List<Account> accounts = prefs.getAccounts();
    String uuid = account.uuid;
    Account existingAccount = prefs.getAccount(uuid);
    boolean mergeImportedAccount = (overwrite && existingAccount != null);
    if (!overwrite && existingAccount != null) {
        // An account with this UUID already exists, but we're not allowed to overwrite it.
        // So generate a new UUID.
        uuid = UUID.randomUUID().toString();
    }
    // Make sure the account name is unique
    String accountName = account.name;
    if (isAccountNameUsed(accountName, accounts)) {
        // number >= 1 that results in an unused account name.
        for (int i = 1; i <= accounts.size(); i++) {
            accountName = account.name + " (" + i + ")";
            if (!isAccountNameUsed(accountName, accounts)) {
                break;
            }
        }
    }
    // Write account name
    String accountKeyPrefix = uuid + ".";
    putString(editor, accountKeyPrefix + Account.ACCOUNT_DESCRIPTION_KEY, accountName);
    if (account.incoming == null) {
        // We don't import accounts without incoming server settings
        throw new InvalidSettingValueException();
    }
    // Write incoming server settings (storeUri)
    ServerSettings incoming = new ImportedServerSettings(account.incoming);
    String storeUri = RemoteStore.createStoreUri(incoming);
    putString(editor, accountKeyPrefix + Account.STORE_URI_KEY, Base64.encode(storeUri));
    // Mark account as disabled if the AuthType isn't EXTERNAL and the
    // settings file didn't contain a password
    boolean createAccountDisabled = AuthType.EXTERNAL != incoming.authenticationType && (incoming.password == null || incoming.password.isEmpty());
    if (account.outgoing == null && !ServerSettings.Type.WebDAV.name().equals(account.incoming.type)) {
        // All account types except WebDAV need to provide outgoing server settings
        throw new InvalidSettingValueException();
    }
    if (account.outgoing != null) {
        // Write outgoing server settings (transportUri)
        ServerSettings outgoing = new ImportedServerSettings(account.outgoing);
        String transportUri = Transport.createTransportUri(outgoing);
        putString(editor, accountKeyPrefix + Account.TRANSPORT_URI_KEY, Base64.encode(transportUri));
        /*
             * Mark account as disabled if the settings file contained a username but no password. However, no password
             * is required for the outgoing server for WebDAV accounts, because incoming and outgoing servers are 
             * identical for this account type. Nor is a password required if the AuthType is EXTERNAL.
             */
        boolean outgoingPasswordNeeded = AuthType.EXTERNAL != outgoing.authenticationType && !(ServerSettings.Type.WebDAV == outgoing.type) && outgoing.username != null && !outgoing.username.isEmpty() && (outgoing.password == null || outgoing.password.isEmpty());
        createAccountDisabled = outgoingPasswordNeeded || createAccountDisabled;
    }
    // Write key to mark account as disabled if necessary
    if (createAccountDisabled) {
        editor.putBoolean(accountKeyPrefix + "enabled", false);
    }
    // Validate account settings
    Map<String, Object> validatedSettings = AccountSettings.validate(contentVersion, account.settings.settings, !mergeImportedAccount);
    // Upgrade account settings to current content version
    if (contentVersion != Settings.VERSION) {
        AccountSettings.upgrade(contentVersion, validatedSettings);
    }
    // Convert account settings to the string representation used in preference storage
    Map<String, String> stringSettings = AccountSettings.convert(validatedSettings);
    // Merge account settings if necessary
    Map<String, String> writeSettings;
    if (mergeImportedAccount) {
        writeSettings = new HashMap<>(AccountSettings.getAccountSettings(prefs.getStorage(), uuid));
        writeSettings.putAll(stringSettings);
    } else {
        writeSettings = stringSettings;
    }
    // Write account settings
    for (Map.Entry<String, String> setting : writeSettings.entrySet()) {
        String key = accountKeyPrefix + setting.getKey();
        String value = setting.getValue();
        putString(editor, key, value);
    }
    // If it's a new account generate and write a new "accountNumber"
    if (!mergeImportedAccount) {
        int newAccountNumber = Account.generateAccountNumber(prefs);
        putString(editor, accountKeyPrefix + "accountNumber", Integer.toString(newAccountNumber));
    }
    // Write identities
    if (account.identities != null) {
        importIdentities(editor, contentVersion, uuid, account, overwrite, existingAccount, prefs);
    } else if (!mergeImportedAccount) {
        // Require accounts to at least have one identity
        throw new InvalidSettingValueException();
    }
    // Write folder settings
    if (account.folders != null) {
        for (ImportedFolder folder : account.folders) {
            importFolder(editor, contentVersion, uuid, folder, mergeImportedAccount, prefs);
        }
    }
    //TODO: sync folder settings with localstore?
    AccountDescription imported = new AccountDescription(accountName, uuid);
    return new AccountDescriptionPair(original, imported, mergeImportedAccount);
}
Also used : Account(com.fsck.k9.Account) InvalidSettingValueException(com.fsck.k9.preferences.Settings.InvalidSettingValueException) ServerSettings(com.fsck.k9.mail.ServerSettings) SharedPreferences(android.content.SharedPreferences) Preferences(com.fsck.k9.Preferences) HashMap(java.util.HashMap) Map(java.util.Map)

Example 32 with Preferences

use of org.orcid.jaxb.model.record_v2.Preferences in project k-9 by k9mail.

the class MailService method saveLastCheckEnd.

public static void saveLastCheckEnd(Context context) {
    long lastCheckEnd = System.currentTimeMillis();
    Timber.i("Saving lastCheckEnd = %tc", lastCheckEnd);
    Preferences prefs = Preferences.getPreferences(context);
    Storage storage = prefs.getStorage();
    StorageEditor editor = storage.edit();
    editor.putLong(LAST_CHECK_END, lastCheckEnd);
    editor.commit();
}
Also used : Storage(com.fsck.k9.preferences.Storage) Preferences(com.fsck.k9.Preferences) StorageEditor(com.fsck.k9.preferences.StorageEditor)

Example 33 with Preferences

use of org.orcid.jaxb.model.record_v2.Preferences in project k-9 by k9mail.

the class DatabaseUpgradeService method upgradeDatabases.

/**
     * Upgrade the accounts' databases.
     */
private void upgradeDatabases() {
    Preferences preferences = Preferences.getPreferences(this);
    List<Account> accounts = preferences.getAccounts();
    mProgressEnd = accounts.size();
    mProgress = 0;
    for (Account account : accounts) {
        mAccountUuid = account.getUuid();
        sendProgressBroadcast(mAccountUuid, mProgress, mProgressEnd);
        try {
            // Account.getLocalStore() is blocking and will upgrade the database if necessary
            account.getLocalStore();
        } catch (UnavailableStorageException e) {
            Timber.e("Database unavailable");
        } catch (Exception e) {
            Timber.e(e, "Error while upgrading database");
        }
        mProgress++;
    }
    K9.setDatabasesUpToDate(true);
    sendUpgradeCompleteBroadcast();
}
Also used : Account(com.fsck.k9.Account) UnavailableStorageException(com.fsck.k9.mailstore.UnavailableStorageException) Preferences(com.fsck.k9.Preferences) UnavailableStorageException(com.fsck.k9.mailstore.UnavailableStorageException)

Example 34 with Preferences

use of org.orcid.jaxb.model.record_v2.Preferences in project uPortal by Jasig.

the class PreferencesService method parsePreferences.

public Preferences parsePreferences(String preferencesToken) {
    final Jws<Claims> claims = parseEncrypteToken(preferencesToken, Preferences.class);
    final String username = claims.getBody().getSubject();
    final Map<String, List<String>> preferencesMap = new HashMap<>();
    for (Map.Entry<String, Object> y : claims.getBody().entrySet()) {
        final String key = y.getKey();
        if (JwtClaims.forName(key) != null) {
            // Skip these;  we handle these differently
            continue;
        }
        if (y.getValue() instanceof List) {
            @SuppressWarnings("unchecked") final List<String> values = (List<String>) y.getValue();
            preferencesMap.put(key, values);
        } else {
            logger.warn("Unexpected claim '{}' was not a List;  skipping", key);
        }
    }
    Preferences rslt = new Preferences(preferencesToken, preferencesMap);
    logger.debug("Produced the following Preferences for user '{}':  {}", username, rslt);
    return rslt;
}
Also used : Claims(io.jsonwebtoken.Claims) HashMap(java.util.HashMap) List(java.util.List) Preferences(org.apereo.portal.soffit.model.v1_0.Preferences) Map(java.util.Map) HashMap(java.util.HashMap)

Example 35 with Preferences

use of org.orcid.jaxb.model.record_v2.Preferences in project uPortal by Jasig.

the class ModelAttributeServiceTest method testPrepareMethodParameters.

@Test
public void testPrepareMethodParameters() {
    final ModelAttributeService modelAttributeService = new ModelAttributeService();
    final Class[] parameterClasses = new Class[] { HttpServletRequest.class, PortalRequest.class, Bearer.class };
    final Method method;
    try {
        method = getClass().getMethod("soffitModelAttributeMethod", parameterClasses);
    } catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
    }
    // Object Model
    final HttpServletRequest req = Mockito.mock(HttpServletRequest.class);
    final HttpServletResponse res = Mockito.mock(HttpServletResponse.class);
    final PortalRequest portalRequest = Mockito.mock(PortalRequest.class);
    final Bearer bearer = Mockito.mock(Bearer.class);
    final Preferences preferences = Mockito.mock(Preferences.class);
    final Definition definition = Mockito.mock(Definition.class);
    final Object[] parameters = modelAttributeService.prepareMethodParameters(method, req, res, portalRequest, bearer, preferences, definition);
    assertEquals("parameterClasses and parameters arrays must be the same length", parameterClasses.length, parameters.length);
    for (int i = 0; i < parameters.length; i++) {
        assertTrue("Mismatched parameter type", parameterClasses[i].isInstance(parameters[i]));
    }
}
Also used : Definition(org.apereo.portal.soffit.model.v1_0.Definition) HttpServletResponse(javax.servlet.http.HttpServletResponse) Method(java.lang.reflect.Method) PortalRequest(org.apereo.portal.soffit.model.v1_0.PortalRequest) HttpServletRequest(javax.servlet.http.HttpServletRequest) Preferences(org.apereo.portal.soffit.model.v1_0.Preferences) Bearer(org.apereo.portal.soffit.model.v1_0.Bearer) Test(org.junit.Test)

Aggregations

Preferences (com.fsck.k9.Preferences)17 Account (com.fsck.k9.Account)13 Test (org.junit.Test)12 IOException (java.io.IOException)5 Preferences (org.apereo.portal.soffit.model.v1_0.Preferences)5 Preferences (org.orcid.jaxb.model.record_v2.Preferences)5 StorageEditor (com.fsck.k9.preferences.StorageEditor)4 SearchAccount (com.fsck.k9.search.SearchAccount)4 InvalidSettingValueException (com.fsck.k9.preferences.Settings.InvalidSettingValueException)3 Storage (com.fsck.k9.preferences.Storage)3 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 Bearer (org.apereo.portal.soffit.model.v1_0.Bearer)3 Definition (org.apereo.portal.soffit.model.v1_0.Definition)3 PortalRequest (org.apereo.portal.soffit.model.v1_0.PortalRequest)3 Intent (android.content.Intent)2 SharedPreferences (android.content.SharedPreferences)2 Uri (android.net.Uri)2 UnavailableStorageException (com.fsck.k9.mailstore.UnavailableStorageException)2 InputStreamReader (java.io.InputStreamReader)2