Skip to content

Commit

Permalink
Merge branch '10.0.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
himeshr committed Oct 3, 2024
2 parents b086797 + d399c19 commit 2298e05
Show file tree
Hide file tree
Showing 10 changed files with 126 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,8 @@ public List getList(String key) {
}
return (List) o;
}

public Boolean getBoolean(String key) {
return (Boolean) this.get(key);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ public enum Locale {
this.name = name;
}

public static Locale valueByName(@Nullable String name) {
public static Locale valueByNameIgnoreCase(@Nullable String name) {
for (Locale value : Locale.values()) {
if (value.name.equals(name)) return value;
if (value.name.equalsIgnoreCase(name)) return value;
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ public List<UserSyncSettings> getSyncSettingsList() {
return ObjectMapperSingleton.getObjectMapper().convertValue(syncSettings.get(User.SyncSettingKeys.subjectTypeSyncSettings.name()), new TypeReference<List<UserSyncSettings>>() {});
}

public boolean isPartOfUserGroup(String userGroup) {
return this.getUserGroups().stream().anyMatch(ug -> ug.getGroup().getName().equals(userGroup));
}

public enum SyncSettingKeys {
syncAttribute1,
syncAttribute2,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
package org.avni.server.domain;

import org.avni.server.util.CollectionUtil;

import java.util.Arrays;
import java.util.List;

public class UserSettings {
private final JsonObject jsonObject;
public static final String ID_PREFIX = "idPrefix";
public static final String DATE_PICKER_MODE = "datePickerMode";
public static final String LOCALE = "locale";
public static final String ENABLE_BENEFICIARY_MODE = "showBeneficiaryMode";
public static final String TRACK_LOCATION = "trackLocation";
public static final List<String> DATE_PICKER_MODE_OPTIONS = Arrays.asList("calendar", "spinner");

public UserSettings(JsonObject jsonObject) {
this.jsonObject = jsonObject;
}

public static String createDatePickerMode(String datePickerMode) {
return CollectionUtil.findMatchingIgnoreCase(DATE_PICKER_MODE_OPTIONS, datePickerMode);
}

public String getIdPrefix() {
return UserSettings.getIdPrefix(this.jsonObject);
}
Expand All @@ -16,4 +30,20 @@ public static String getIdPrefix(JsonObject jsonObject) {
if (jsonObject == null) return null;
return jsonObject.getString(ID_PREFIX);
}

public String getDatePickerMode() {
return jsonObject.getString(DATE_PICKER_MODE);
}

public String getLocale() {
return jsonObject.getString(LOCALE);
}

public boolean isEnableBeneficiaryMode() {
return jsonObject.getBoolean(ENABLE_BENEFICIARY_MODE);
}

public boolean isTrackLocation() {
return jsonObject.getBoolean(TRACK_LOCATION);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.avni.server.importer.batch.csv.writer.header.UsersAndCatchmentsHeaders;
import org.avni.server.importer.batch.model.Row;
import org.avni.server.service.*;
import org.avni.server.util.CollectionUtil;
import org.avni.server.util.PhoneNumberUtil;
import org.avni.server.util.RegionUtil;
import org.avni.server.util.S;
Expand All @@ -24,10 +25,10 @@
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import static java.lang.String.format;
import static org.avni.server.domain.OperatingIndividualScope.ByCatchment;
import static org.avni.server.domain.UserSettings.DATE_PICKER_MODE_OPTIONS;
import static org.avni.server.importer.batch.csv.writer.header.UsersAndCatchmentsHeaders.*;

@Component
Expand Down Expand Up @@ -55,7 +56,6 @@ public class UserAndCatchmentWriter implements ItemWriter<Row>, Serializable {
private static final String ERR_MSG_INVALID_CONCEPT_ANSWER = "'%s' is not a valid value for the concept '%s'. " +
"To input this value, add this as an answer to the coded concept '%s'.";
private static final String METADATA_ROW_START_STRING = "Mandatory field.";
private static final List<String> DATE_PICKER_MODE_OPTIONS = Arrays.asList("calendar", "spinner");

@Autowired
public UserAndCatchmentWriter(CatchmentService catchmentService,
Expand Down Expand Up @@ -134,7 +134,7 @@ private void write(Row row) throws IDPException {
String idPrefix = row.get(IDENTIFIER_PREFIX);
String groupsSpecified = row.get(USER_GROUPS);
AddressLevel location = locationRepository.findByTitleLineageIgnoreCase(fullAddress).orElse(null);
Locale locale = S.isEmpty(language) ? Locale.en : Locale.valueByName(language);
Locale locale = S.isEmpty(language) ? Locale.en : Locale.valueByNameIgnoreCase(language);
Organisation organisation = UserContextHolder.getUserContext().getOrganisation();
String userSuffix = "@".concat(organisation.getEffectiveUsernameSuffix());
JsonObject syncSettings = constructSyncSettings(row, rowValidationErrorMsgs);
Expand All @@ -158,10 +158,10 @@ private void write(Row row) throws IDPException {
user.setSyncSettings(syncSettings);

user.setSettings(new JsonObject()
.with("locale", locale)
.with("trackLocation", trackLocation)
.withEmptyCheckAndTrim("datePickerMode", datePickerMode)
.with("showBeneficiaryMode", beneficiaryMode)
.with(UserSettings.LOCALE, locale)
.with(UserSettings.TRACK_LOCATION, trackLocation)
.withEmptyCheckAndTrim(UserSettings.DATE_PICKER_MODE, UserSettings.createDatePickerMode(datePickerMode))
.with(UserSettings.ENABLE_BENEFICIARY_MODE, beneficiaryMode)
.withEmptyCheckAndTrim(UserSettings.ID_PREFIX, idPrefix));

user.setOrganisationId(organisation.getId());
Expand All @@ -188,8 +188,7 @@ private void validateRowAndAssimilateErrors(List<String> rowValidationErrorMsgs,

addErrMsgIfValidationFails(StringUtils.isEmpty(location), rowValidationErrorMsgs, format(ERR_MSG_LOCATION_FIELD, fullAddress));
addErrMsgIfValidationFails(StringUtils.isEmpty(locale), rowValidationErrorMsgs, format(ERR_MSG_LOCALE_FIELD, language));
addErrMsgIfValidationFails(StringUtils.isEmpty(datePickerMode) || !DATE_PICKER_MODE_OPTIONS.contains(datePickerMode),
rowValidationErrorMsgs, format(ERR_MSG_DATE_PICKER_FIELD, datePickerMode));
addErrMsgIfValidationFails(!StringUtils.isEmpty(datePickerMode) && !CollectionUtil.containsIgnoreCase(DATE_PICKER_MODE_OPTIONS, datePickerMode), rowValidationErrorMsgs, format(ERR_MSG_DATE_PICKER_FIELD, datePickerMode));

addErrMsgIfValidationFails(trackLocation == null && !StringUtils.isEmpty(trackLocationValueProvidedByUser), rowValidationErrorMsgs, format(ERR_MSG_INVALID_TRACK_LOCATION, trackLocationValueProvidedByUser));
addErrMsgIfValidationFails(beneficiaryMode == null && !StringUtils.isEmpty(beneficiaryModeValueProvidedByUser), rowValidationErrorMsgs, format(ERR_MSG_INVALID_ENABLE_BENEFICIARY_MODE, beneficiaryModeValueProvidedByUser));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class UsersAndCatchmentsHeaders implements Headers {
public static final String IDENTIFIER_PREFIX = "Identifier Prefix";
public static final String USER_GROUPS = "User Groups";

private static final List<String> OPTIONAL_HEADERS = Arrays.asList(ENABLE_BENEFICIARY_MODE, TRACK_LOCATION);
private static final List<String> OPTIONAL_HEADERS = Arrays.asList(ENABLE_BENEFICIARY_MODE, TRACK_LOCATION, PREFERRED_LANGUAGE, DATE_PICKER_MODE, IDENTIFIER_PREFIX, USER_GROUPS);

@Override
public String[] getAllHeaders() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public void addToGroups(User user, String groupsSpecified) {
Arrays.stream(groupNames).distinct().forEach(groupName -> {
if (!StringUtils.hasLength(groupName.trim())) return;

Group group = this.groupRepository.findByName(groupName);
Group group = this.groupRepository.findByNameIgnoreCase(groupName);
if (group == null) {
String errorMessage = String.format("Group '%s' not found", groupName);
throw new RuntimeException(errorMessage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,15 @@ public static boolean hasOnlyTrailingEmptyStrings(List<String> values) {
return hasNoEmptyStrings(trimmed);
}

public static boolean containsIgnoreCase(List<String> list, String value) {
return list.stream().anyMatch(x -> !StringUtils.isEmpty(x) && x.equalsIgnoreCase(value));
}

public static boolean anyStartsWith(List<String> values, String prefix) {
return values.stream().anyMatch(x -> !StringUtils.isEmpty(x) && x.startsWith(prefix));
}

public static String findMatchingIgnoreCase(List<String> values, String value) {
return values.stream().filter(x -> !StringUtils.isEmpty(x) && x.equalsIgnoreCase(value)).findFirst().orElse(null);
}
}
Loading

0 comments on commit 2298e05

Please sign in to comment.