diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java index 9d86a4650..0ee860ee0 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonFormActivity.java @@ -16,6 +16,7 @@ import com.vijay.jsonwizard.utils.AppExecutors; import com.vijay.jsonwizard.utils.FormUtils; import com.vijay.jsonwizard.utils.NativeFormLangUtils; +import com.vijay.jsonwizard.utils.NoLocaleFormUtils; import org.json.JSONException; import org.json.JSONObject; @@ -38,11 +39,22 @@ public class FormConfigurationJsonFormActivity extends JsonFormActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - formUtils = new FormUtils(); + formUtils = getFormUtils(); JSONObject jsonObject = getmJSONObject(); checkIfFormUpdate(jsonObject); } + private FormUtils getFormUtils() { + if (!this.supportsLocaleBasedForms()) { + return new NoLocaleFormUtils(); + } + return new FormUtils(); + } + + protected boolean supportsLocaleBasedForms() { + return true; + } + private void checkIfFormUpdate(@NonNull JSONObject formJsonObject) { if (FormUtils.isFormNew(formJsonObject)) { showFormVersionUpdateDialog(formJsonObject, getString(R.string.form_update_title), getString(R.string.form_update_message)); diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonWizardFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonWizardFormActivity.java new file mode 100644 index 000000000..f310c916a --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/FormConfigurationJsonWizardFormActivity.java @@ -0,0 +1,37 @@ +package com.vijay.jsonwizard.activities; + +import com.vijay.jsonwizard.delegates.JsonWizardFormDelegate; + +import org.json.JSONException; + +public class FormConfigurationJsonWizardFormActivity extends FormConfigurationJsonFormActivity { + + private final JsonWizardFormDelegate delegate = new JsonWizardFormDelegate(); + + @Override + public synchronized void initializeFormFragment() { + initializeFormFragmentCore(); + } + + @Override + public void writeValue(String stepName, String key, String value, String openMrsEntityParent, String openMrsEntity, String openMrsEntityId) throws JSONException { + callSuperWriteValue(stepName, key, value, openMrsEntityParent, openMrsEntity, openMrsEntityId); + } + + @Override + public void onFormFinish() { + callSuperFinish(); + } + + protected void callSuperFinish() { + super.onFormFinish(); + } + + protected void callSuperWriteValue(String stepName, String key, String value, String openMrsEntityParent, String openMrsEntity, String openMrsEntityId) throws JSONException { + super.writeValue(stepName, key, value, openMrsEntityParent, openMrsEntity, openMrsEntityId); + } + + protected void initializeFormFragmentCore() { + delegate.initializeFormFragmentCore(this.getSupportFragmentManager()); + } +} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonWizardFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonWizardFormActivity.java index c85d2762b..dce1e0525 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonWizardFormActivity.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/JsonWizardFormActivity.java @@ -1,7 +1,6 @@ package com.vijay.jsonwizard.activities; -import com.vijay.jsonwizard.constants.JsonFormConstants; -import com.vijay.jsonwizard.fragments.JsonWizardFormFragment; +import com.vijay.jsonwizard.delegates.JsonWizardFormDelegate; import org.json.JSONException; @@ -10,8 +9,10 @@ */ public class JsonWizardFormActivity extends JsonFormActivity { + private final JsonWizardFormDelegate delegate = new JsonWizardFormDelegate(); + @Override - public void initializeFormFragment() { + public synchronized void initializeFormFragment() { initializeFormFragmentCore(); } @@ -34,8 +35,7 @@ protected void callSuperWriteValue(String stepName, String key, String value, St } protected void initializeFormFragmentCore() { - JsonWizardFormFragment jsonWizardFormFragment = JsonWizardFormFragment.getFormFragment(JsonFormConstants.FIRST_STEP_NAME); - getSupportFragmentManager().beginTransaction().add(com.vijay.jsonwizard.R.id.container, jsonWizardFormFragment).commit(); + delegate.initializeFormFragmentCore(this.getSupportFragmentManager()); } } diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/NoLocaleFormConfigurationJsonWizardFormActivity.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/NoLocaleFormConfigurationJsonWizardFormActivity.java new file mode 100644 index 000000000..19b83665f --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/activities/NoLocaleFormConfigurationJsonWizardFormActivity.java @@ -0,0 +1,8 @@ +package com.vijay.jsonwizard.activities; + +public class NoLocaleFormConfigurationJsonWizardFormActivity extends FormConfigurationJsonWizardFormActivity { + @Override + protected boolean supportsLocaleBasedForms() { + return false; + } +} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java new file mode 100644 index 000000000..1cb137682 --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/delegates/JsonWizardFormDelegate.java @@ -0,0 +1,18 @@ +package com.vijay.jsonwizard.delegates; + +import android.support.annotation.NonNull; +import android.support.v4.app.FragmentManager; + +import com.vijay.jsonwizard.constants.JsonFormConstants; +import com.vijay.jsonwizard.fragments.JsonWizardFormFragment; + +public class JsonWizardFormDelegate { + + public void initializeFormFragmentCore(@NonNull FragmentManager supportFragmentManager){ + JsonWizardFormFragment jsonWizardFormFragment = JsonWizardFormFragment.getFormFragment(JsonFormConstants.FIRST_STEP_NAME); + supportFragmentManager.beginTransaction() + .add(com.vijay.jsonwizard.R.id.container, jsonWizardFormFragment) + .commit(); + } + +} diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java index 16f868580..9c0c3cf2e 100644 --- a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/FormUtils.java @@ -1979,13 +1979,17 @@ public JSONObject getFormJson(@NonNull Context context, @NonNull String formIden } } - private ClientFormContract.Model getClientFormFromRepository(@NonNull Context context, @NonNull ClientFormContract.Dao clientFormRepository, String formIdentity) { - //Check the current locale of the app to load the correct version of the form in the desired language + protected String getLocaleFormIdentity(final Context context, final String formIdentity){ String locale = context.getResources().getConfiguration().locale.getLanguage(); - String localeFormIdentity = formIdentity; if (!Locale.ENGLISH.getLanguage().equals(locale)) { - localeFormIdentity = localeFormIdentity + "-" + locale; + return formIdentity + "-" + locale; } + return formIdentity; + } + + private ClientFormContract.Model getClientFormFromRepository(@NonNull Context context, @NonNull ClientFormContract.Dao clientFormRepository, String formIdentity) { + //Check the current locale of the app to load the correct version of the form in the desired language + String localeFormIdentity = getLocaleFormIdentity(context, formIdentity); ClientFormContract.Model clientForm = clientFormRepository.getActiveClientFormByIdentifier(localeFormIdentity); @@ -2061,13 +2065,8 @@ public void onCancelClicked() { @Nullable public JSONObject getSubFormJsonFromRepository(@NonNull Context context, @NonNull ClientFormContract.Dao clientFormDao, String formIdentity, String subFormsLocation, boolean translateSubForm) throws JSONException { - String locale = context.getResources().getConfiguration().locale.getLanguage(); - //Check the current locale of the app to load the correct version of the form in the desired language - String localeFormIdentity = formIdentity; - if (!Locale.ENGLISH.getLanguage().equals(locale)) { - localeFormIdentity = localeFormIdentity + "-" + locale; - } + String localeFormIdentity = getLocaleFormIdentity(context, formIdentity); String dbFormName = StringUtils.isBlank(subFormsLocation) ? localeFormIdentity : subFormsLocation + "/" + localeFormIdentity; ClientFormContract.Model clientForm = clientFormDao.getActiveClientFormByIdentifier(dbFormName); @@ -2098,13 +2097,8 @@ public JSONObject getSubFormJsonFromRepository(@NonNull Context context, @NonNul @Nullable public BufferedReader getRulesFromRepository(@NonNull Context context, @NonNull ClientFormContract.Dao clientFormDao, @NonNull String fileName) { - String locale = context.getResources().getConfiguration().locale.getLanguage(); - //Check the current locale of the app to load the correct version of the form in the desired language - String localeFormIdentity = fileName; - if (!Locale.ENGLISH.getLanguage().equals(locale)) { - localeFormIdentity = localeFormIdentity + "-" + locale; - } + String localeFormIdentity = getLocaleFormIdentity(context, fileName); ClientFormContract.Model clientForm = clientFormDao.getActiveClientFormByIdentifier(localeFormIdentity); if (clientForm == null && StringUtils.isNotBlank(fileName) && fileName.contains("/") && !fileName.endsWith("/")) { diff --git a/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NoLocaleFormUtils.java b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NoLocaleFormUtils.java new file mode 100644 index 000000000..bc40efbed --- /dev/null +++ b/android-json-form-wizard/src/main/java/com/vijay/jsonwizard/utils/NoLocaleFormUtils.java @@ -0,0 +1,10 @@ +package com.vijay.jsonwizard.utils; + +import android.content.Context; + +public class NoLocaleFormUtils extends FormUtils{ + @Override + protected String getLocaleFormIdentity(Context context, String formIdentity) { + return formIdentity; + } +} diff --git a/gradle.properties b/gradle.properties index 0de4d45a2..b5cb94a61 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.0-SNAPSHOT +VERSION_NAME=2.1.1-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard