Skip to content

Commit

Permalink
allow getting forms from db without appending locale
Browse files Browse the repository at this point in the history
issue #585
  • Loading branch information
LZRS committed Jul 9, 2021
1 parent b266641 commit 10ec8f3
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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.isUsingLocaleForms()){
return new NoLocaleFormUtils();
}
return new FormUtils();
}

protected boolean isUsingLocaleForms(){
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));
Expand Down
Original file line number Diff line number Diff line change
@@ -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 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());
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
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;

/**
* Created by keyman on 04/12/2018.
*/
public class JsonWizardFormActivity extends FormConfigurationJsonFormActivity {
public class JsonWizardFormActivity extends JsonFormActivity {

private final JsonWizardFormDelegate delegate = new JsonWizardFormDelegate();

@Override
public void initializeFormFragment() {
public synchronized void initializeFormFragment() {
initializeFormFragmentCore();
}

Expand All @@ -34,9 +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());
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.vijay.jsonwizard.activities;

public class NoLocaleFormConfigurationJsonWizardFormActivity extends FormConfigurationJsonWizardFormActivity {
@Override
protected boolean isUsingLocaleForms() {
return false;
}
}
Original file line number Diff line number Diff line change
@@ -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();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -1918,13 +1918,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);

Expand Down Expand Up @@ -2000,13 +2004,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);
Expand Down Expand Up @@ -2037,13 +2036,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("/")) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION_NAME=1.14.7.3-FORM-CONFIG-RULES-FIX-SNAPSHOT
VERSION_NAME=1.14.7.4-FORM-CONFIG-RULES-FIX-SNAPSHOT
VERSION_CODE=1
GROUP=org.smartregister
POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard
Expand Down

0 comments on commit 10ec8f3

Please sign in to comment.