diff --git a/sync/src/main/java/com/jefftharris/passwdsafe/sync/box/BoxProvider.java b/sync/src/main/java/com/jefftharris/passwdsafe/sync/box/BoxProvider.java index d1e22f56..861cf53d 100644 --- a/sync/src/main/java/com/jefftharris/passwdsafe/sync/box/BoxProvider.java +++ b/sync/src/main/java/com/jefftharris/passwdsafe/sync/box/BoxProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (©) 2017 Jeff Harris + * Copyright (©) 2017-2025 Jeff Harris * All rights reserved. Use of the code is allowed under the * Artistic License 2.0 terms, as specified in the LICENSE file * distributed with this code, or available from @@ -13,7 +13,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.text.TextUtils; import android.util.Log; @@ -40,8 +39,6 @@ import com.jefftharris.passwdsafe.sync.lib.SyncDb; import com.jefftharris.passwdsafe.sync.lib.SyncLogRecord; -import java.util.List; - /** * Implements a provider for the Box.com service */ @@ -160,17 +157,6 @@ public Account getAccount(String acctName) return new Account(acctName, SyncDb.BOX_ACCOUNT_TYPE); } - @Override - public void checkProviderAdd(SQLiteDatabase db) throws Exception - { - List providers = SyncDb.getProviders(db); - for (DbProvider provider: providers) { - if (provider.itsType == ProviderType.BOX) { - throw new Exception("Only one Box account allowed"); - } - } - } - @Override public void cleanupOnDelete() { diff --git a/sync/src/main/java/com/jefftharris/passwdsafe/sync/dropbox/DropboxCoreProvider.java b/sync/src/main/java/com/jefftharris/passwdsafe/sync/dropbox/DropboxCoreProvider.java index 14b862bb..bc5bafe9 100644 --- a/sync/src/main/java/com/jefftharris/passwdsafe/sync/dropbox/DropboxCoreProvider.java +++ b/sync/src/main/java/com/jefftharris/passwdsafe/sync/dropbox/DropboxCoreProvider.java @@ -11,7 +11,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.AsyncTask; import android.util.Log; @@ -184,18 +183,6 @@ public Account getAccount(String acctName) } - @Override - public void checkProviderAdd(SQLiteDatabase db) throws Exception - { - List providers = SyncDb.getProviders(db); - for (DbProvider provider: providers) { - if (provider.itsType == ProviderType.DROPBOX) { - throw new Exception("Only one Dropbox account allowed"); - } - } - } - - @Override public void cleanupOnDelete() { diff --git a/sync/src/main/java/com/jefftharris/passwdsafe/sync/lib/AbstractSyncTimerProvider.java b/sync/src/main/java/com/jefftharris/passwdsafe/sync/lib/AbstractSyncTimerProvider.java index 339d098d..d81f3543 100644 --- a/sync/src/main/java/com/jefftharris/passwdsafe/sync/lib/AbstractSyncTimerProvider.java +++ b/sync/src/main/java/com/jefftharris/passwdsafe/sync/lib/AbstractSyncTimerProvider.java @@ -9,13 +9,17 @@ import android.accounts.Account; import android.content.Context; +import android.database.sqlite.SQLiteDatabase; import android.util.Log; import androidx.annotation.CallSuper; +import androidx.annotation.MainThread; import androidx.annotation.Nullable; import com.jefftharris.passwdsafe.lib.PasswdSafeUtil; import com.jefftharris.passwdsafe.lib.ProviderType; +import java.util.List; + /** * Abstract provider that uses a system timer to perform syncing */ @@ -71,6 +75,25 @@ public synchronized void setPendingAdd(boolean pending) itsIsPendingAdd = pending; } + /** + * Check whether a provider can be added. By default, only a single + * account can be added for a provider type. + */ + @Override + @MainThread + public void checkProviderAdd(SQLiteDatabase db) + throws Exception + { + List providers = SyncDb.getProviders(db); + for (DbProvider provider: providers) { + if (provider.itsType == itsProviderType) { + throw new Exception( + String.format("Only one %s account allowed", + itsProviderType.getName(itsContext))); + } + } + } + @Override public void updateSyncFreq(Account acct, final int freq) { diff --git a/sync/src/main/java/com/jefftharris/passwdsafe/sync/onedrive/OnedriveProvider.java b/sync/src/main/java/com/jefftharris/passwdsafe/sync/onedrive/OnedriveProvider.java index 2957f7a8..d8d235b4 100644 --- a/sync/src/main/java/com/jefftharris/passwdsafe/sync/onedrive/OnedriveProvider.java +++ b/sync/src/main/java/com/jefftharris/passwdsafe/sync/onedrive/OnedriveProvider.java @@ -11,7 +11,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.text.TextUtils; import android.util.Log; @@ -54,7 +53,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; -import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; @@ -230,27 +228,9 @@ public boolean isAccountAuthorized() @MainThread public Account getAccount(String acctName) { - // TODO: Add base-class impl to use account type return new Account(acctName, SyncDb.ONEDRIVE_ACCOUNT_TYPE); } - /** - * Check whether a provider can be added - */ - @Override - @MainThread - public void checkProviderAdd(SQLiteDatabase db) - throws Exception - { - // TODO: Add base-class impl to check against type - List providers = SyncDb.getProviders(db); - for (DbProvider provider: providers) { - if (provider.itsType == ProviderType.ONEDRIVE) { - throw new Exception("Only one OneDrive account allowed"); - } - } - } - /** * Cleanup a provider when deleted */