StringUtils.java

package no.nav.data.common.utils;

import org.apache.logging.log4j.util.Strings;
import org.springframework.util.Assert;

import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;

import static no.nav.data.common.utils.StreamUtils.safeStream;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public final class StringUtils {

    private StringUtils() {
    }

    public static String toUpperCaseAndTrim(String field) {
        return field == null ? null : field.toUpperCase().trim();
    }

    public static List<String> formatList(List<String> strings) {
        return safeStream(strings).map(Strings::trimToNull).filter(Objects::nonNull).collect(Collectors.toList());
    }

    public static List<String> formatListToUppercase(List<String> strings) {
        return safeStream(strings).map(Strings::trimToNull).filter(Objects::nonNull).map(String::toUpperCase).collect(Collectors.toList());
    }

    public static List<String> formatListToUppercase(List<String> strings, boolean sort) {
        var formatted = formatListToUppercase(strings);
        if (sort) {
            formatted.sort(Comparator.comparing(Function.identity()));
        }
        return formatted;
    }

    public static boolean isUUID(String uuid) {
        if (isBlank(uuid)) {
            return false;
        }
        try {
            //noinspection ResultOfMethodCallIgnored
            UUID.fromString(uuid);
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }

    public static String insertUuidDashes(String uuid) {
        return uuid.replaceFirst(
                "(\\p{XDigit}{8})(\\p{XDigit}{4})(\\p{XDigit}{4})(\\p{XDigit}{4})(\\p{XDigit}+)",
                "$1-$2-$3-$4-$5"
        );
    }

    public static UUID toUUID(String id) {
        Assert.isTrue(isNotBlank(id) && id.length() >= 32, "invalid id");
        if (!id.contains("-")) {
            id = insertUuidDashes(id);
        }
        Assert.isTrue(StringUtils.isUUID(id), "invalid id");
        return UUID.fromString(id);
    }
}