diff --git a/app/src/ereferrals/java/org/eyeseetea/malariacare/data/sync/importer/LanguageDownloader.java b/app/src/ereferrals/java/org/eyeseetea/malariacare/data/sync/importer/LanguageDownloader.java index d1a417ba83..ec286726b1 100644 --- a/app/src/ereferrals/java/org/eyeseetea/malariacare/data/sync/importer/LanguageDownloader.java +++ b/app/src/ereferrals/java/org/eyeseetea/malariacare/data/sync/importer/LanguageDownloader.java @@ -2,6 +2,7 @@ import android.support.annotation.NonNull; +import android.util.Log; import com.raizlabs.android.dbflow.sql.language.SQLite; @@ -13,8 +14,6 @@ import org.eyeseetea.malariacare.data.sync.importer.poeditor.models.Term; import org.eyeseetea.malariacare.data.sync.importer.strategies.ILanguagesClient; import org.eyeseetea.malariacare.domain.boundary.IConnectivityManager; -import org.eyeseetea.malariacare.domain.boundary.repositories.ISettingsRepository; -import org.eyeseetea.malariacare.domain.entity.Settings; import java.util.ArrayList; import java.util.Date; @@ -23,7 +22,7 @@ import java.util.Map; public class LanguageDownloader { - + private static String TAG = "LanguageDownloader"; private ILanguagesClient client; private IConnectivityManager connectivity; @@ -35,13 +34,24 @@ public LanguageDownloader(ILanguagesClient client, IConnectivityManager connecti } - public void start() throws Exception { + public void start(String languageCodeFilter) throws Exception { if (connectivity.isDeviceOnline()) { + + + Log.d(TAG, "Starting download languages and terms by filter:" + languageCodeFilter); + Date downloadedDate = new Date(); + + Log.d(TAG, "Retrieving languages from server"); + List languagesFromServer = client.getLanguages(); - List languagesToDownload = getLanguagesToDownload(languagesFromServer, downloadedDate); + Log.d(TAG, "getLanguagesToDownload"); + List languagesToDownload = getLanguagesToDownload(languageCodeFilter, + languagesFromServer, downloadedDate); + updateLocalTranslations(languagesToDownload, client); + Log.d(TAG, "Finished download languagesand terms"); } } @@ -49,12 +59,16 @@ private void updateLocalTranslations(List toUpdate, ILanguagesClient c throws Exception { for (Language language : toUpdate) { + Log.d(TAG, "Download terms of " + language.name); List terms = client.getTranslationBy(language.code); + Log.d(TAG, "Delete previous terms of " + language.name); deletePreviousTranslations(language.code); for (Term term : terms) { save(term, language.code); } + + Log.d(TAG, "Saving terms of " + language.name); save(language); } } @@ -77,7 +91,8 @@ private void deletePreviousTranslations(String languageCode) { } @NonNull - private List getLanguagesToDownload(List languagesFromServer, Date downloadDateTime) { + private List getLanguagesToDownload(String languageCodeFilter, + List languagesFromServer, Date downloadDateTime) { List languagesToDownload = new ArrayList<>(); List languagesFromDB = SQLite.select(). @@ -87,11 +102,18 @@ private List getLanguagesToDownload(List languagesFromServer languagesFromDB); for (Language languageServer : languagesFromServer) { - if(languageServer.updated == null){ - languageServer.updated = downloadDateTime; - } - if (requiresToBeDownloaded(languageServer, mapLanguagesByCodesInDB)) { - languagesToDownload.add(languageServer); + if (languageCodeFilter != null && !languageCodeFilter.isEmpty()) { + if (languageCodeFilter.equals(languageServer.code)) { + languagesToDownload.add(languageServer); + break; + } + } else { + if (languageServer.updated == null) { + languageServer.updated = downloadDateTime; + } + if (requiresToBeDownloaded(languageServer, mapLanguagesByCodesInDB)) { + languagesToDownload.add(languageServer); + } } } diff --git a/app/src/ereferrals/java/org/eyeseetea/malariacare/domain/usecase/DownloadLanguageTranslationUseCase.java b/app/src/ereferrals/java/org/eyeseetea/malariacare/domain/usecase/DownloadLanguageTranslationUseCase.java index b9c37bb5f3..ee4ed59230 100644 --- a/app/src/ereferrals/java/org/eyeseetea/malariacare/domain/usecase/DownloadLanguageTranslationUseCase.java +++ b/app/src/ereferrals/java/org/eyeseetea/malariacare/domain/usecase/DownloadLanguageTranslationUseCase.java @@ -19,15 +19,15 @@ public DownloadLanguageTranslationUseCase(CredentialsReader credentialsReader, this.credentialsReader = credentialsReader; } - public void downloadAsync(IAsyncExecutor mAsyncExecutor) throws Exception { + public void downloadAsync(IAsyncExecutor mAsyncExecutor) { mAsyncExecutor.run(this); } - public void download() throws Exception { + public void download(String languageCode) throws Exception { LanguageDownloader downloader = LanguageFactory.getLanguageDownloader(getClient(), connectivity); - downloader.start(); + downloader.start(languageCode); } @@ -40,7 +40,7 @@ private ILanguagesClient getClient() throws Exception { @Override public void run() { try { - download(); + download(""); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/ereferrals/java/org/eyeseetea/malariacare/strategies/SplashActivityStrategy.java b/app/src/ereferrals/java/org/eyeseetea/malariacare/strategies/SplashActivityStrategy.java index b5d88aab1d..2ce3907e6c 100644 --- a/app/src/ereferrals/java/org/eyeseetea/malariacare/strategies/SplashActivityStrategy.java +++ b/app/src/ereferrals/java/org/eyeseetea/malariacare/strategies/SplashActivityStrategy.java @@ -17,24 +17,20 @@ import org.eyeseetea.malariacare.data.database.datasources.AuthDataSource; import org.eyeseetea.malariacare.data.database.datasources.SurveyLocalDataSource; import org.eyeseetea.malariacare.data.database.datasources.ValueLocalDataSource; -import org.eyeseetea.malariacare.data.authentication.CredentialsReader; import org.eyeseetea.malariacare.data.database.utils.PreferencesState; +import org.eyeseetea.malariacare.domain.boundary.IConnectivityManager; import org.eyeseetea.malariacare.domain.boundary.executors.IAsyncExecutor; import org.eyeseetea.malariacare.domain.boundary.executors.IMainExecutor; import org.eyeseetea.malariacare.domain.boundary.repositories.IAuthRepository; import org.eyeseetea.malariacare.domain.boundary.repositories.ISurveyRepository; import org.eyeseetea.malariacare.domain.boundary.repositories.IValueRepository; import org.eyeseetea.malariacare.domain.entity.Survey; -import org.eyeseetea.malariacare.domain.boundary.IConnectivityManager; +import org.eyeseetea.malariacare.domain.usecase.ClearAuthUseCase; import org.eyeseetea.malariacare.domain.usecase.DownloadLanguageTranslationUseCase; import org.eyeseetea.malariacare.domain.usecase.SaveSurveyFromIntentUseCase; -import org.eyeseetea.malariacare.domain.usecase.ClearAuthUseCase; import org.eyeseetea.malariacare.network.factory.NetworkManagerFactory; import org.eyeseetea.malariacare.presentation.executors.AsyncExecutor; import org.eyeseetea.malariacare.presentation.executors.UIThreadExecutor; -import org.eyeseetea.malariacare.domain.boundary.IConnectivityManager; -import org.eyeseetea.malariacare.domain.usecase.DownloadLanguageTranslationUseCase; -import org.eyeseetea.malariacare.network.factory.NetworkManagerFactory; public class SplashActivityStrategy extends ASplashActivityStrategy { public static final String INTENT_JSON_EXTRA_KEY = "ConnectVoucher"; @@ -140,10 +136,13 @@ public void downloadLanguagesFromServer() { CredentialsReader credentialsReader = CredentialsReader.getInstance(); IConnectivityManager connectivity = NetworkManagerFactory.getConnectivityManager( activity); - DownloadLanguageTranslationUseCase downloader = + DownloadLanguageTranslationUseCase useCase = new DownloadLanguageTranslationUseCase(credentialsReader, connectivity); - downloader.download(); + String currentLanguage = PreferencesState.getInstance().getCurrentLocale(); + + useCase.download(currentLanguage); + useCase.downloadAsync(new AsyncExecutor()); } } catch (Exception e) { Log.e(TAG, "Unable to download Languages From Server" + e.getMessage());