package io.github.perplexhub.rsql;

import java.util.Collections;
import java.util.Map;

import org.springframework.util.MultiValueMap;

import cz.jirutka.rsql.parser.ast.AndNode;
import cz.jirutka.rsql.parser.ast.ComparisonNode;
import cz.jirutka.rsql.parser.ast.OrNode;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RSQLSimpleConverter extends RSQLVisitorBase<Void, MultiValueMap<String, String>> {

	public RSQLSimpleConverter() {
		super();
	}

	@Override
	public Void visit(ComparisonNode node, MultiValueMap<String, String> map) {
		log.debug("visit(node:{},map:{})", node, map);
		map.addAll(node.getSelector(), node.getArguments());
		return null;
	}

	@Override
	public Void visit(AndNode node, MultiValueMap<String, String> map) {
		log.debug("visit(node:{},map:{})", node, map);
		node.getChildren().forEach(n -> n.accept(this, map));
		return null;
	}

	@Override
	public Void visit(OrNode node, MultiValueMap<String, String> map) {
		log.debug("visit(node:{},map:{})", node, map);
		node.getChildren().forEach(n -> n.accept(this, map));
		return null;
	}

	@Override
	public Map<String, String> getPropertyPathMapper() {
		return Collections.emptyMap();
	}

}