diff --git a/app/build.gradle b/app/build.gradle index 4099979f..cf4fe82f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 520 - def appVersionName = '1.47.07' + def appVersionCode = 521 + def appVersionName = '1.47.08' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java index dfb86ddf..3e8d0297 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java @@ -24,19 +24,4 @@ public class CommonConst { public static String RECOVER_COLLO_FILE = "recover_ul.json"; } - public static class Mail { - - public static String[] forErrorsDebug = { - "g.scorrano@integry.it", - "v.castellana@integry.it" - }; - - public static String[] forErrors = { -// "syslogs@integry.it", - "g.scorrano@integry.it", - "v.castellana@integry.it" - }; - - } - } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index 042122ad..6709366e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -90,10 +90,10 @@ public class AppContext { Logger.addLogAdapter(new AndroidLogAdapter()); logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath()); + removeOldLogs(logsFolder); + int maxBytesSize = 5 * 1024 * 1024; Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize)); - - removeOldLogs(logsFolder); } private void removeOldLogs(File logsFolder) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 48b2a4e8..3e4c2a67 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -1,8 +1,5 @@ package it.integry.integrywmsnative.core.rest.consumers; -import android.text.TextUtils; -import android.util.Log; - import androidx.annotation.NonNull; import com.google.gson.Gson; @@ -17,8 +14,6 @@ import java.util.concurrent.ExecutorService; import javax.inject.Singleton; -import it.integry.integrywmsnative.BuildConfig; -import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.rest.RESTBuilder; @@ -27,9 +22,7 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.system.LatestAppVersionInfoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityGson; -import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; import retrofit2.Response; @@ -110,36 +103,6 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { }); } - - public void sendErrorLogMail(String message, Runnable onComplete, RunnableArgs onFailed) { - - String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]"; - - String dest = ""; - if (BuildConfig.DEBUG) { - dest = TextUtils.join(";", CommonConst.Mail.forErrorsDebug); - } else { - dest = TextUtils.join(";", CommonConst.Mail.forErrors); - } - - - MailRequestDTO mailDTO = new MailRequestDTO() - .setFrom("sender@integry.it") - .setFromName((BuildConfig.DEBUG ? "[DEBUG] " : "") + "WMS Android") - .setTo(dest) - .setSubject("Bug notification" + currentAzienda) - .setMsgText(message) - .setHtml(true); - - sendMail(mailDTO, () -> { - if (onComplete != null) onComplete.run(); - }, ex -> { - Log.e(SystemRESTConsumer.class.getName(), "", ex); - if (onFailed != null) onFailed.run(ex); - }); - } - - public void sendMailSynchronized(MailRequestDTO mailDTO) throws Exception { SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); var response = service.sendMail(mailDTO).execute(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index b868d280..a368f763 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -49,6 +49,7 @@ public class LoginViewModel { FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + SettingsManager.i().createUserSession(); retrieveAvailableProfiles(protocol, host, port, username, password, selectedProfile -> { if(selectedProfile == null) { this.sendOnLoadingEnded(); @@ -56,8 +57,6 @@ public class LoginViewModel { return; } - SettingsManager.i().createUserSession(); - authenticate(protocol, host, port, username, password, selectedProfile, fid.getResult(), fullName -> { SettingsManager.i().getUser() @@ -159,7 +158,7 @@ public class LoginViewModel { public void loadDepo(Runnable onComplete) { this.mSystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { - SettingsManager.iDB().setAvailableDepos(availableCodMdeps); + SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps); if (availableCodMdeps == null || availableCodMdeps.isEmpty()) { this.sendError(new InvalidUserDepositException()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index b4b984bd..aa6df5c3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -33,7 +33,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Comparator; import java.util.List; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; import javax.inject.Inject; @@ -327,35 +329,38 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT private void exportLog() { - DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> { - if (result == DialogConsts.Results.NO || result == DialogConsts.Results.ABORT) - return; + executorService.execute(() -> { + + if(!askConfirmToExportLog()) { + return; + } + + this.openProgress(); + - this.openProgress(); - executorService.execute(() -> { File logFilePath = appContext.getLogFilePath(); var files = logFilePath.listFiles(); - var fileToShare = Arrays.stream(files) - .sorted(Comparator.reverseOrder()) - .findFirst() - .orElse(null); - try { - List attachmentDTOList = new ArrayList<>(); + var fileToShare = Arrays.stream(files) + .sorted(Comparator.reverseOrder()) + .findFirst() + .orElse(null); + try { + List attachmentDTOList = new ArrayList<>(); - if (fileToShare != null) { - var htmlContent = createAppLogAttachment(fileToShare); + if (fileToShare != null) { + var htmlContent = createAppLogAttachment(fileToShare); - byte[] buffer = htmlContent.getBytes();//specify the size to allow. - String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP); + byte[] buffer = htmlContent.getBytes();//specify the size to allow. + String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP); - var logAttachment = new MailAttachmentDTO() - .setFileName("wms_log.html") - .setFileb64Content(base64); - attachmentDTOList.add(logAttachment); - } + var logAttachment = new MailAttachmentDTO() + .setFileName("wms_log.html") + .setFileb64Content(base64); + attachmentDTOList.add(logAttachment); + } rawDao.vacuumDb(new SimpleSQLiteQuery("pragma wal_checkpoint(full)")); @@ -365,43 +370,59 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT dbFiles[1] = requireContext().getDatabasePath("integry_wms-shm"); dbFiles[2] = requireContext().getDatabasePath("integry_wms-wal"); - for (int i = 0; i < dbFiles.length; i++) { - byte[] dbFileBytes = new byte[(int) dbFiles[i].length()]; - FileInputStream inputStream = new FileInputStream(dbFiles[i]); - final int read = inputStream.read(dbFileBytes); - inputStream.close(); + for (int i = 0; i < dbFiles.length; i++) { + byte[] dbFileBytes = new byte[(int) dbFiles[i].length()]; + FileInputStream inputStream = new FileInputStream(dbFiles[i]); + final int read = inputStream.read(dbFileBytes); + inputStream.close(); - var dbAttachment = new MailAttachmentDTO() - .setFileName(dbFiles[i].getName()) - .setFileb64Content(Base64.encodeToString(dbFileBytes, Base64.NO_WRAP)); - attachmentDTOList.add(dbAttachment); - } + var dbAttachment = new MailAttachmentDTO() + .setFileName(dbFiles[i].getName()) + .setFileb64Content(Base64.encodeToString(dbFileBytes, Base64.NO_WRAP)); + attachmentDTOList.add(dbAttachment); + } - var mailRequest = new MailRequestDTO() - .setTo("developer@integry.it") - .setMsgText("Questa è una mail contenente il log del WMS") - .setSubject("Internal WMS log") - .setAttachments(attachmentDTOList); + var mailRequest = new MailRequestDTO() + .setTo("developer@integry.it") + .setMsgText("Questa è una mail contenente il log del WMS") + .setSubject("Internal WMS log") + .setAttachments(attachmentDTOList); - systemRESTConsumer.sendMailSynchronized(mailRequest); + systemRESTConsumer.sendMailSynchronized(mailRequest); - this.closeProgress(); - } catch (Exception ex) { - handler.post(() -> { - FirebaseCrashlytics.getInstance().recordException(ex, new CustomKeysAndValues.Builder() {{ - putString("ExportLog", "Error while exporting log"); - }}.build()); - this.closeProgress(); - UtilityExceptions.defaultException(requireContext(), ex); - }); - } - }); - }) - .show(getParentFragmentManager(), "tag"); + this.closeProgress(); + } catch (Exception ex) { + handler.post(() -> { + FirebaseCrashlytics.getInstance().recordException(ex, new CustomKeysAndValues.Builder() {{ + putString("ExportLog", "Error while exporting log"); + }}.build()); + this.closeProgress(); + UtilityExceptions.defaultException(requireContext(), ex); + }); + } + }); } + private boolean askConfirmToExportLog() { + CountDownLatch countDownLatch = new CountDownLatch(1); + AtomicBoolean userConfirmed = new AtomicBoolean(false); + + DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> { + userConfirmed.set(result != DialogConsts.Results.NO && result != DialogConsts.Results.ABORT); + countDownLatch.countDown(); + }).show(getParentFragmentManager(), "tag"); + + try { + countDownLatch.await(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + return userConfirmed.get(); + } + private void openProgress() { // executorService.execute(() -> { this.mCurrentProgress.show(requireActivity().getSupportFragmentManager()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index e5eec9e0..6b7ab57d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1543,9 +1543,6 @@ public class SpedizioneViewModel { .setMtbAart(null); } - var clonedTargetMtbColt = (MtbColt) mCurrentMtbColt.clone(); - clonedTargetMtbColt.setMtbColr(null); - var insertUDSRowRequestDto = new InsertUDSRowRequestDTO() .setSourceMtbColr(clonedSourceMtbColr) .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) @@ -1553,7 +1550,7 @@ public class SpedizioneViewModel { .setQtaCnf(qtaCnf) .setNumCnf(numCnf) .setPartitaMag(partitaMag) - .setTargetMtbColt(clonedTargetMtbColt); + .setTargetMtbColt(mCurrentMtbColt.clone(false)); if (dataScad != null) insertUDSRowRequestDto @@ -1568,6 +1565,7 @@ public class SpedizioneViewModel { createdMtbColr = this.mColliScaricoRESTConsumer.insertUDSRowSynchronized(insertUDSRowRequestDto); } catch (Exception ex) { this.sendError(ex); + return; } MtbColr finalCreatedMtbColr = createdMtbColr;