All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.damianwajser.factories.jsonbased.criteria.builder.CriterionBuilder Maven / Gradle / Ivy

package com.github.damianwajser.factories.jsonbased.criteria.builder;

import com.github.damianwajser.factories.jsonbased.conditions.Condition;
import com.github.damianwajser.factories.jsonbased.conditions.operations.Operation;
import com.github.damianwajser.factories.jsonbased.criteria.Criterion;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public final class CriterionBuilder {

	private static final Pattern pattern = Pattern.compile("[\\$\\.A-z0-9]+|[\\=]");

	private CriterionBuilder(){
		//private constructor
	}

	public static  Criterion build(String criterion, T result) {
		return new Criterion<>(getConditions(criterion), result);
	}

	private static Collection getConditions(String criterion) {
		Collection terms = Arrays.asList(criterion.split("AND"));
		return terms.stream().map(CriterionBuilder::getConditionByString).collect(Collectors.toList());
	}

	private static Condition getConditionByString(String t) {
		Matcher m = pattern.matcher(t);
		List items = new ArrayList<>();
		while (m.find()) {
			items.add(m.group());
		}
		return new Condition(items.get(0), items.get(2), Operation.value(items.get(1)));
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy