Skip to content

Commit

Permalink
Object instead of procedural utility class – example
Browse files Browse the repository at this point in the history
  • Loading branch information
Paweł Albecki committed Nov 21, 2017
1 parent 6f1e373 commit b5223be
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 9 deletions.
Expand Up @@ -15,18 +15,25 @@

package org.openlmis.cce.util;

import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

public class StringHelper {
public class LowerCaseStrings {

private final List<String> strings;

/**
* Make every string in given list lowerCase.
*/
public static List<String> lowerCase(List<String> strings) {
return strings.stream()
public LowerCaseStrings(Collection<String> strings) {
this.strings = strings.stream()
.map(String::toLowerCase)
.collect(Collectors.toList());
}

public List<String> asList() {
return strings;
}

}
Expand Up @@ -18,14 +18,13 @@
import static org.openlmis.cce.i18n.CsvUploadMessageKeys.ERROR_UPLOAD_HEADER_INVALID;
import static org.openlmis.cce.i18n.CsvUploadMessageKeys.ERROR_UPLOAD_HEADER_MISSING;
import static org.openlmis.cce.i18n.CsvUploadMessageKeys.ERROR_UPLOAD_MISSING_MANDATORY_COLUMNS;
import static org.openlmis.cce.util.StringHelper.lowerCase;

import org.apache.commons.collections.ListUtils;
import org.openlmis.cce.exception.ValidationMessageException;
import org.openlmis.cce.util.LowerCaseStrings;
import org.openlmis.cce.web.csv.model.ModelClass;
import org.openlmis.cce.web.csv.model.ModelField;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

Expand All @@ -38,7 +37,7 @@ public class CsvHeaderValidator {
public void validateHeaders(List<String> headers, ModelClass<?> modelClass,
boolean acceptExtraHeaders) {
validateNullHeaders(headers);
List<String> lowerCaseHeaders = lowerCase(headers);
List<String> lowerCaseHeaders = new LowerCaseStrings(headers).asList();
if (!acceptExtraHeaders) {
validateInvalidHeaders(lowerCaseHeaders, modelClass);
}
Expand All @@ -64,7 +63,7 @@ private void validateMandatoryFields(List<String> headers, ModelClass modelClass

private void validateInvalidHeaders(List<String> headers, ModelClass modelClass) {
List<String> fieldNames = getAllImportedFieldNames(modelClass);
List invalidHeaders = ListUtils.subtract(headers, lowerCase(fieldNames));
List invalidHeaders = ListUtils.subtract(headers, new LowerCaseStrings(fieldNames).asList());
if (!invalidHeaders.isEmpty()) {
throw new ValidationMessageException(ERROR_UPLOAD_HEADER_INVALID, invalidHeaders.toString());
}
Expand Down
Expand Up @@ -21,14 +21,14 @@
import java.util.Arrays;
import java.util.List;

public class StringHelperTest {
public class LowerCaseStringsTest {

private static final String STRING_A = "StringA";
private static final String STRING_B = "StringB";

@Test
public void shouldLowerCaseAllStrings() {
List<String> strings = StringHelper.lowerCase(Arrays.asList(STRING_A, STRING_B));
List<String> strings = new LowerCaseStrings(Arrays.asList(STRING_A, STRING_B)).asList();
assertEquals(STRING_A.toLowerCase(), strings.get(0));
assertEquals(STRING_B.toLowerCase(), strings.get(1));
}
Expand Down

0 comments on commit b5223be

Please sign in to comment.