Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optibp decompression feature #664

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
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 @@ -57,6 +57,7 @@ public class JsonFormConstants {
public static final String BEHAVIOUR = "behaviour";
public static final String RESULT = "result";
public static final String VALUE = "value";
public static final String V_EQUALS = "v_equals";
public static final String KEYS = "keys";
public static final String SECOND_VALUE = "second_value";
public static final String OPENMRS_ENTITY_PARENT = "openmrs_entity_parent";
Expand Down Expand Up @@ -148,6 +149,7 @@ public class JsonFormConstants {
public static final String EXPANDED = "expanded";
public static final String EXPAND_ON_TEXT_CHANGE = "expand_on_text_change";
public static final String NUMBER = "number";
public static final String PASSWORD = "password";
public static final String TOP_MARGIN = "top_margin";
public static final String BOTTOM_MARGIN = "bottom_margin";
public static final String LEFT_MARGIN = "left_margin";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,13 @@
import org.json.JSONObject;
import org.yaml.snakeyaml.Yaml;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
Expand All @@ -75,6 +78,7 @@
import java.util.Scanner;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.zip.GZIPInputStream;

import timber.log.Timber;

Expand Down Expand Up @@ -1041,6 +1045,29 @@ public static String extractValueFromJson(String value)
return value;
}

public static String decompress(String str, String outEncoding) {
if (str == null || str.length() == 0) {
return str;
}

try {
String decode = URLDecoder.decode(str, "UTF-8");

ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(decode.getBytes("ISO-8859-1"));
GZIPInputStream gunzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = gunzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
return out.toString(outEncoding);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

}


Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.vijay.jsonwizard.validators.edittext;

import androidx.annotation.NonNull;

import com.rengwuxian.materialedittext.MaterialEditText;
import com.rengwuxian.materialedittext.validation.METValidator;

import org.jetbrains.annotations.NotNull;

public class ReferenceFieldValidator extends METValidator {
MaterialEditText referenceField;
public ReferenceFieldValidator(@NonNull @NotNull String errorMessage,MaterialEditText referenceField) {
super(errorMessage);
this.referenceField = referenceField;
}

@Override
public boolean isValid(@NonNull @NotNull CharSequence charSequence, boolean isEmpty) {
if(!isEmpty) {
String referenceText = referenceField.getText().toString();
return referenceText.equals(charSequence.toString());
}
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
package com.vijay.jsonwizard.widgets;

import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_CUMULATIVE_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MAX_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MIN_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.KEY;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATED_FIELDS;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATIVE_VALIDATION_EXCEPTION;
import static com.vijay.jsonwizard.constants.JsonFormConstants.STEP1;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_CUMULATIVE_TOTAL;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MAX;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MIN;
import static com.vijay.jsonwizard.utils.FormUtils.fields;
import static com.vijay.jsonwizard.utils.FormUtils.getFieldJSONObject;

import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.PasswordTransformationMethod;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -43,6 +31,7 @@
import com.vijay.jsonwizard.validators.edittext.MaxNumericValidator;
import com.vijay.jsonwizard.validators.edittext.MinLengthValidator;
import com.vijay.jsonwizard.validators.edittext.MinNumericValidator;
import com.vijay.jsonwizard.validators.edittext.ReferenceFieldValidator;
import com.vijay.jsonwizard.validators.edittext.ReferenceValidator;
import com.vijay.jsonwizard.validators.edittext.RelativeNumericValidator;
import com.vijay.jsonwizard.validators.edittext.RequiredValidator;
Expand All @@ -60,6 +49,19 @@

import timber.log.Timber;

import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_CUMULATIVE_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MAX_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MIN_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.KEY;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATED_FIELDS;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATIVE_VALIDATION_EXCEPTION;
import static com.vijay.jsonwizard.constants.JsonFormConstants.STEP1;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_CUMULATIVE_TOTAL;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MAX;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MIN;
import static com.vijay.jsonwizard.utils.FormUtils.fields;
import static com.vijay.jsonwizard.utils.FormUtils.getFieldJSONObject;

public class EditTextFactory implements FormWidgetFactory {

public static final int MIN_LENGTH = 0;
Expand Down Expand Up @@ -117,7 +119,6 @@ protected List<View> attachJson(String stepName, Context context, JsonFormFragme
RelativeLayout editTextLayout = rootLayout.findViewById(R.id.edit_text_layout);
MaterialEditText editText = editTextLayout.findViewById(R.id.edit_text);
ImageView editButton = editTextLayout.findViewById(R.id.material_edit_text_edit_button);

FormUtils.setEditButtonAttributes(jsonObject, editText, editButton, listener);
attachLayout(stepName, context, formFragment, jsonObject, editText, editButton);

Expand Down Expand Up @@ -179,6 +180,7 @@ public void run() {
FormUtils.toggleEditTextVisibility(jsonObject, editText);

addRequiredValidator(jsonObject, editText);
addEqualsValidator(formFragment,jsonObject,editText);
addLengthValidator(jsonObject, editText);
addRegexValidator(jsonObject, editText);
addEmailValidator(jsonObject, editText);
Expand All @@ -190,15 +192,19 @@ public void run() {
addCumulativeTotalValidator(jsonObject, formFragment, editText, stepName, (JsonApi) context);
// edit type check
String editType = jsonObject.optString(JsonFormConstants.EDIT_TYPE);
editText.setSingleLine(false);
if (!TextUtils.isEmpty(editType)) {
if (JsonFormConstants.NUMBER.equals(editType)) {
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
} else if (JsonFormConstants.NAME.equals(editType)) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
}
}
else if (JsonFormConstants.PASSWORD.equals(editType))
{
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}

editText.setSingleLine(false);
}
editText.addTextChangedListener(new GenericTextWatcher(stepName, formFragment, editText));
attachRefreshLogic(context, jsonObject, editText);
}
Expand All @@ -212,6 +218,15 @@ private void attachInfoIcon(String stepName, JSONObject jsonObject, RelativeLayo

}

private void addEqualsValidator(JsonFormFragment formFragment,JSONObject jsonObject, MaterialEditText editText) throws JSONException {
JSONObject requiredObject = jsonObject.optJSONObject(JsonFormConstants.V_EQUALS);
if (requiredObject != null) {
String referencedValue = requiredObject.optString(JsonFormConstants.VALUE,"");
MaterialEditText referencedEditText = (MaterialEditText) formFragment.getJsonApi().getFormDataView(referencedValue);
editText.addValidator(new ReferenceFieldValidator(requiredObject.getString(JsonFormConstants.ERR),referencedEditText));
FormUtils.setRequiredOnHint(editText);
}
}
Comment on lines +221 to +229
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes from this PR #663. I see some requested changes that have not been addressed here #663

private void addRequiredValidator(JSONObject jsonObject, MaterialEditText editText) throws JSONException {
JSONObject requiredObject = jsonObject.optJSONObject(JsonFormConstants.V_REQUIRED);
if (requiredObject != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.os.Build;
import android.text.InputType;
import android.text.TextUtils;
import android.text.method.PasswordTransformationMethod;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -144,6 +145,10 @@ protected void makeFromJson(String stepName, Context context, JsonFormFragment f
} else if ("name".equals(editType)) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
}
else if ("password".equals(editType))
{
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}

editText.addTextChangedListener(new GenericTextWatcher(stepName, formFragment, editText));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ protected String getInputJsonString(Context context, JSONObject jsonObject, Widg
* Adding new calibration data here
*/
appendHealthData(optiBPData, widgetArgs);
optiBPData.put(OptibpConstants.CALIBRATION, getCalibrationData(optiBPData.optString(OptibpConstants.CALIBRATION)));
optiBPData.put(OptibpConstants.CALIBRATION, getCalibrationData(Utils.decompress(optiBPData.optString(OptibpConstants.CALIBRATION),"UTF-8")));
return optiBPData.toString();
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION_NAME=3.1.1-SNAPSHOT
VERSION_NAME=3.1.4-SNAPSHOT
VERSION_CODE=1
GROUP=org.smartregister
POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard
Expand Down