Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@

import com.fasterxml.jackson.databind.ObjectWriter;

import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
Expand All @@ -43,6 +45,7 @@
import io.mosip.registration.clientmanager.constant.Components;
import io.mosip.registration.clientmanager.constant.PacketClientStatus;
import io.mosip.registration.clientmanager.constant.PacketTaskStatus;
import io.mosip.registration.clientmanager.constant.RegistrationConstants;
import io.mosip.registration.clientmanager.dao.GlobalParamDao;
import io.mosip.registration.clientmanager.dto.CenterMachineDto;
import io.mosip.registration.clientmanager.entity.GlobalParam;
Expand Down Expand Up @@ -263,8 +266,15 @@ void scheduleAllActiveJobs() {
try {
List<SyncJobDef> activeJobs = syncJobDefRepository.getAllSyncJobDefList();
int scheduledCount = 0;

Set<String> excludedJobIds = getExcludedJobIds();
for (SyncJobDef job : activeJobs) {
if (job.getId() == null) {
continue;
}
if (excludedJobIds.contains(job.getId())) {
Log.d(getClass().getSimpleName(), "Skipping excluded job: " + job.getId());
continue;
}
if (job.getIsActive() != null && job.getIsActive() && job.getApiName() != null) {
Log.d(getClass().getSimpleName(), "Scheduling job: " + job.getApiName() +
" (ID: " + job.getId() + ", Cron: " + job.getSyncFreq() + ")");
Expand All @@ -281,6 +291,25 @@ void scheduleAllActiveJobs() {
}).start();
}

private Set<String> getExcludedJobIds() {
Set<String> excluded = new HashSet<>();
addJobIdsFromString(excluded, globalParamRepository.getCachedStringJobsOffline());
addJobIdsFromString(excluded, globalParamRepository.getCachedStringJobsUntagged());
return excluded;
}

private void addJobIdsFromString(Set<String> target, String value) {
if (value == null || value.trim().isEmpty()) {
return;
}
for (String jobId : value.split(RegistrationConstants.COMMA)) {
String trimmed = jobId.trim();
if (!trimmed.isEmpty()) {
target.add(trimmed);
}
}
}

@Override
protected void onDestroy() {
super.onDestroy();
Expand Down Expand Up @@ -386,7 +415,7 @@ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
DynamicResponsePigeon.DynamicResponseApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), dynamicDetailsApi);
batchJob.setCallbackActivity(this);
MasterDataSyncPigeon.SyncApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), masterDataSyncApi);
masterDataSyncApi.setCallbackActivity(this, batchJob);
masterDataSyncApi.setCallbackActivity(this, batchJob, flutterEngine.getDartExecutor().getBinaryMessenger());
AuditResponsePigeon.AuditResponseApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), auditDetailsApi);
GlobalConfigSettingsPigeon.GlobalConfigSettingsApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), globalConfigSettingsApi);
SecureScreenPigeon.SecureScreenApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), secureScreenApi);
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ private List<Registration> getRegistrationList(List<String> statusList) {
return registrationList;
}

public void syncRegistrationPackets(Context context) {
public void syncRegistrationPackets(Context context, Runnable onComplete) {
Log.d(getClass().getSimpleName(), "Sync Packets in Batch Job");
List<Registration> registrationList = getRegistrationList(Arrays.asList(PacketClientStatus.APPROVED.name(), PacketClientStatus.REJECTED.name()));
final Integer[] remainingPack = {registrationList.size(), 0};
Expand All @@ -80,7 +80,7 @@ public void syncRegistrationPackets(Context context) {
CustomToast newToast = new CustomToast(activity);

if (registrationList.isEmpty()) {
uploadRegistrationPackets(context);
uploadRegistrationPackets(context, onComplete);
return;
}
for (Registration value : registrationList) {
Expand Down Expand Up @@ -126,25 +126,44 @@ public void onComplete(String RID, PacketTaskStatus status) {
newToast.showToast();

Log.d(getClass().getSimpleName(), "Last Packet" + RID);
uploadRegistrationPackets(context);
uploadRegistrationPackets(context, onComplete);
}
}
});
} catch (Exception e) {
syncAndUploadInProgressStatus = false;
Log.e(getClass().getSimpleName(), e.getMessage());
// If exception occurs, decrement counter and check if all packets are done
remainingPack[0] -= 1;
if (remainingPack[0] == 0) {
// All packets processed (either completed or failed)
syncAndUploadInProgressStatus = false;
Log.d(getClass().getSimpleName(), "Last Packet (exception)");
if (onComplete != null) {
uploadRegistrationPackets(context, onComplete);
} else {
uploadRegistrationPackets(context, null);
}
}
Comment thread
MadhuMosip marked this conversation as resolved.
}
}
}

public void uploadRegistrationPackets(Context context) {
public void uploadRegistrationPackets(Context context, Runnable onComplete) {
Log.d(getClass().getSimpleName(), "Upload Packets in Batch Job");
List<Registration> registrationList = getRegistrationList(Arrays.asList(PacketClientStatus.SYNCED.name(), PacketClientStatus.EXPORTED.name()));

Integer packetSize = registrationList.size();
final Integer[] remainingPack = {packetSize, 0};
CustomToast newToast = new CustomToast(activity);

if (registrationList.isEmpty()) {
// If no packets to upload, call completion callback if provided
if (onComplete != null) {
onComplete.run();
}
return;
}

for (Registration value : registrationList) {
try {
syncAndUploadInProgressStatus = true;
Expand Down Expand Up @@ -186,13 +205,40 @@ public void onComplete(String RID, PacketTaskStatus status) {
}
newToast.setText(message);
newToast.showToast();

// Call completion callback when all uploads finish
if (onComplete != null) {
onComplete.run();
}
}
}
});
} catch (Exception e) {
syncAndUploadInProgressStatus = false;
Log.e(getClass().getSimpleName(), e.getMessage());
auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REG_PACKET_LIST, e.getMessage());
// If exception occurs, decrement counter and check if all packets are done
remainingPack[0] -= 1;
if (remainingPack[0] == 0) {
// All packets processed (either completed or failed)
syncAndUploadInProgressStatus = false;
Integer failed = packetSize - remainingPack[1];
newToast.setIcon(R.drawable.done);
String message = "Upload Packet Status :";
if (remainingPack[1] != 0) {
message = message + String.format(" %s/%s Success", remainingPack[1], packetSize);
}
if (failed != 0) {
message = message + String.format(" %s/%s Failed", failed, packetSize);
}
newToast.setText(message);
newToast.showToast();

// Call completion callback when all uploads finish
if (onComplete != null) {
onComplete.run();
}
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,10 @@ public class RegistrationConstants {
public static final String REG_PAK_MAX_CNT_APPRV_LIMIT = "mosip.registration.reg_pak_max_cnt_apprv_limit";
public static final String PACKET_STORE_LOCATION = "mosip.registration.registration_packet_store_location";

public static final String JOBS_OFFLINE = "mosip.registration.jobs.offline";
public static final String JOBS_UNTAGGED = "mosip.registration.jobs.unTagged";
public static final String JOBS_RESTART = "mosip.registration.jobs.restart";

// Sync status validation constants
public static final String MOSIP_REGISTRATION = "mosip.registration.";
public static final String DOT = ".";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,10 +254,23 @@ public String getCachedStringFieldsToRetainOnPridFetch(){
public int getCachedIntRegMaxCountApproveLimit(){
return getCachedIntegerGlobalParam(RegistrationConstants.REG_PAK_MAX_CNT_APPRV_LIMIT);
}

public String getCachedStringPacketStoreLocation() {
return globalParamMap.get(RegistrationConstants.PACKET_STORE_LOCATION);
}

public String getCachedStringJobsOffline() {
return globalParamMap.get(RegistrationConstants.JOBS_OFFLINE);
}

public String getCachedStringJobsUntagged() {
return globalParamMap.get(RegistrationConstants.JOBS_UNTAGGED);
}

public String getCachedStringJobsRestart() {
return globalParamMap.get(RegistrationConstants.JOBS_RESTART);
}

/**
* Refresh configuration cache by merging global params with local preferences
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ public List<Map<String, String>> getAudits() {

private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) throws Exception {
//free space validation
if (validatingDiskSpace()) {
if (isDiskSpaceAvailable()) {
throw new ClientCheckedException("PAK_DISK_SPACE_LOW");
}
Comment thread
MadhuMosip marked this conversation as resolved.

Expand Down Expand Up @@ -611,7 +611,7 @@ private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) th
}
}

private boolean validatingDiskSpace() {
private boolean isDiskSpaceAvailable() {
int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize();
if (minSpaceRequiredMB <= 0) {
minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,6 @@ private void initPosixAdapterService(Context context) {
File baseDir = StorageUtils.getPacketStorageDir(context);
if (baseDir.exists() || baseDir.mkdirs()) {
BASE_LOCATION = baseDir.getAbsolutePath();
} else {
Log.e(TAG, "Failed to initialize packet storage directory: " + baseDir.getAbsolutePath());
BASE_LOCATION = null;
}
}

Expand Down
5 changes: 4 additions & 1 deletion assets/l10n/app_ar.arb
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,9 @@
"local_preferences_saved_msg": "تم حفظ التفضيلات المحلية بنجاح. يلزم إعادة تشغيل التطبيق لرؤية التغييرات. هل ترغب في الإنهاء الآن؟",
"search_for_key": "ابحث عن المفتاح",
"no_devices_found": "لم يتم العثور على أجهزة",
"connect_devices_and_scan": "يرجى توصيل أجهزتك والضغط على 'مسح' لاكتشافها"
"connect_devices_and_scan": "يرجى توصيل أجهزتك والضغط على 'مسح' لاكتشافها",
"search_for_key": "ابحث عن المفتاح",
"sync_restart_dialog_message": "سيتم إعادة تشغيل التطبيق بمجرد النقر على إعادة التشغيل، وسيتم توجيهك إلى صفحة تسجيل الدخول.",
"sync_restart_button": "إعادة التشغيل"
}

5 changes: 4 additions & 1 deletion assets/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -360,5 +360,8 @@
"local_preferences_saved_msg": "Local Preferences have been saved successfully. Application restart is needed to see the changes. Do you want to quit now?",
"search_for_key": "Search for Key",
"no_devices_found": "No devices found",
"connect_devices_and_scan": "Please connect your devices and tap 'Scan' to detect them"
"connect_devices_and_scan": "Please connect your devices and tap 'Scan' to detect them",
"search_for_key": "Search for Key",
"sync_restart_dialog_message": "The app will restart once you click Restart, and you will be redirected to the login page.",
"sync_restart_button": "Restart"
}
5 changes: 4 additions & 1 deletion assets/l10n/app_fr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,9 @@
"local_preferences_saved_msg": "Les préférences locales ont été enregistrées avec succès. Le redémarrage de l'application est nécessaire pour voir les changements. Voulez-vous quitter maintenant ?",
"search_for_key": "Rechercher une clé",
"no_devices_found": "Aucun appareil trouvé",
"connect_devices_and_scan": "Veuillez connecter vos appareils et appuyer sur 'ANALYSE' pour les détecter"
"connect_devices_and_scan": "Veuillez connecter vos appareils et appuyer sur 'ANALYSE' pour les détecter",
"search_for_key": "Rechercher une clé",
"sync_restart_dialog_message": "L'application redémarrera une fois que vous aurez cliqué sur Redémarrer, et vous serez redirigé vers la page de connexion.",
"sync_restart_button": "Redémarrer"
}

5 changes: 4 additions & 1 deletion assets/l10n/app_hi.arb
Original file line number Diff line number Diff line change
Expand Up @@ -360,5 +360,8 @@
"local_preferences_saved_msg": "स्थानीय प्राथमिकताएँ सफलतापूर्वक सहेज ली गई हैं। बदलाव देखने के लिए एप्लिकेशन को पुनः शुरू करना आवश्यक है। क्या आप अभी बाहर निकलना चाहते हैं?",
"search_for_key": "कुंजी खोजें",
"no_devices_found": "कोई डिवाइस नहीं मिला",
"connect_devices_and_scan": "कृपया अपने डिवाइस कनेक्ट करें और उन्हें खोजने के लिए 'स्कैन' पर टैप करें"
"connect_devices_and_scan": "कृपया अपने डिवाइस कनेक्ट करें और उन्हें खोजने के लिए 'स्कैन' पर टैप करें",
"search_for_key": "कुंजी खोजें",
"sync_restart_dialog_message": "जैसे ही आप पुनः आरंभ करें पर क्लिक करेंगे ऐप पुनः आरंभ हो जाएगा, और आपको लॉगिन पृष्ठ पर पुनः निर्देशित किया जाएगा।",
"sync_restart_button": "पुनः आरंभ करें"
}
5 changes: 4 additions & 1 deletion assets/l10n/app_kn.arb
Original file line number Diff line number Diff line change
Expand Up @@ -360,5 +360,8 @@
"local_preferences_saved_msg": "ಸ್ಥಳೀಯ ಆದ್ಯತೆಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಲು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕು. ನೀವು ಈಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?",
"search_for_key": "ಕೀಗಾಗಿ ಹುಡುಕಿ",
"no_devices_found": "ಯಾವುದೇ ಸಾಧನಗಳು ಕಂಡುಬಂದಿಲ್ಲ",
"connect_devices_and_scan": "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು 'ಸ್ಕ್ಯಾನ್' ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"
"connect_devices_and_scan": "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು 'ಸ್ಕ್ಯಾನ್' ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ",
"search_for_key": "ಕೀಗಾಗಿ ಹುಡುಕಿ",
"sync_restart_dialog_message": "ನೀವು ಮರುಪ್ರಾರಂಭ ಕ್ಲಿಕ್ ಮಾಡಿದ ನಂತರ ಅಪ್ಲಿಕೇಶನ್ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮನ್ನು ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ.",
"sync_restart_button": "ಮರುಪ್ರಾರಂಭ"
}
5 changes: 4 additions & 1 deletion assets/l10n/app_ta.arb
Original file line number Diff line number Diff line change
Expand Up @@ -369,5 +369,8 @@
"local_preferences_saved_msg": "உள்நாட்டு விருப்பங்கள் வெற்றிகரமாக சேமிக்கப்பட்டுள்ளன. மாற்றங்களைப் பார்க்க பயன்பாட்டை மறுதொடக்கம் செய்ய வேண்டும். நீங்கள் இப்போது வெளியேற விரும்புகிறீர்களா?",
"search_for_key": "விசையைத் தேடவும்",
"no_devices_found": "சாதனங்கள் எதுவும் கண்டுபிடிக்கப்படவில்லை",
"connect_devices_and_scan": "தயவுசெய்து உங்கள் சாதனங்களை இணைத்து, அவற்றைக் கண்டறிய 'ஊடுகதிர்' என்பதைத் தட்டவும்"
"connect_devices_and_scan": "தயவுசெய்து உங்கள் சாதனங்களை இணைத்து, அவற்றைக் கண்டறிய 'ஊடுகதிர்' என்பதைத் தட்டவும்",
"search_for_key": "விசையைத் தேடவும்",
"sync_restart_dialog_message": "மறுதொடக்கம் என்பதைக் கிளிக் செய்தவுடன் பயன்பாடு மறுதொடங்கும், மற்றும் நீங்கள் உள்நுழைவு பக்கத்திற்கு திருப்பிவிடப்படுவீர்கள்.",
"sync_restart_button": "மறுதொடக்கம்"
}
Loading