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

io.katharsis.legacy.queryParams.DefaultQueryParamsSerializer Maven / Gradle / Ivy

The newest version!
package io.katharsis.legacy.queryParams;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import io.katharsis.legacy.queryParams.include.Inclusion;
import io.katharsis.legacy.queryParams.params.FilterParams;
import io.katharsis.legacy.queryParams.params.IncludedFieldsParams;
import io.katharsis.legacy.queryParams.params.IncludedRelationsParams;
import io.katharsis.legacy.queryParams.params.SortingParams;
import io.katharsis.legacy.queryParams.params.TypedParams;
import io.katharsis.resource.RestrictedQueryParamsMembers;

/**
 * @deprecated make use of QuerySpec
 */
@Deprecated
public class DefaultQueryParamsSerializer implements QueryParamsSerializer {

	@Override
	public Map> serializeFilters(QueryParams queryParams) {
		Map> map = new HashMap<>();
		TypedParams filters = queryParams.getFilters();
		if (filters != null) {
			Map filterParamsMap = filters.getParams();
			for (Map.Entry entry : filterParamsMap.entrySet()) {
				String type = entry.getKey();
				Map> params = entry.getValue().getParams();
				for (Map.Entry> param : params.entrySet()) {
					String paramName = RestrictedQueryParamsMembers.filter.name() + "[" + type + "]" + serializeKey(param.getKey());
					map.put(paramName, param.getValue());
				}
			}
		}
		return map;
	}

	private String serializeKey(String key) {
		return "[" + key.replace(".", "][") + "]";
	}

	@Override
	public Map serializeSorting(QueryParams queryParams) {
		Map map = new HashMap<>();
		TypedParams sorting = queryParams.getSorting();
		if (sorting != null) {
			Map sortingParamsMap = sorting.getParams();
			for (Map.Entry entry : sortingParamsMap.entrySet()) {
				String type = entry.getKey();
				Map params = entry.getValue().getParams();
				for (Entry param : params.entrySet()) {
					String paramName = RestrictedQueryParamsMembers.sort.name() + "[" + type + "][" + param.getKey() + "]";
					map.put(paramName, param.getValue().toString());
				}
			}
		}
		return map;
	}

	@Override
	public Map> serializeIncludedFields(QueryParams queryParams) {
		Map> map = new HashMap<>();
		TypedParams includedFields = queryParams.getIncludedFields();
		if (includedFields != null) {
			Map includedFieldsParamsMap = includedFields.getParams();
			for (Entry entry : includedFieldsParamsMap.entrySet()) {
				String type = entry.getKey();
				Set values = entry.getValue().getParams();
				String paramName = RestrictedQueryParamsMembers.fields.name() + "[" + type + "]";
				map.put(paramName, values);
			}
		}
		return map;
	}

	@Override
	public Map> serializeIncludedRelations(QueryParams queryParams) {
		Map> map = new HashMap<>();
		TypedParams includedRelations = queryParams.getIncludedRelations();
		if (includedRelations != null) {
			Map includedRelationsParamsMap = includedRelations.getParams();
			for (Entry entry : includedRelationsParamsMap.entrySet()) {
				String type = entry.getKey();
				Set inclusions = entry.getValue().getParams();

				Set strInclusions = new HashSet<>();
				for (Inclusion inclusion : inclusions) {
					strInclusions.add(inclusion.getPath());
				}

				String paramName = RestrictedQueryParamsMembers.include.name() + "[" + type + "]";
				map.put(paramName, strInclusions);
			}
		}
		return map;
	}

	@Override
	public Map serializePagination(QueryParams queryParams) {
		Map map = new HashMap<>();
		Map pagination = queryParams.getPagination();
		if (pagination != null) {
			for (Entry entry : pagination.entrySet()) {
				String paramName = RestrictedQueryParamsMembers.page.name() + "[" + entry.getKey().name() + "]";
				map.put(paramName, entry.getValue().toString());
			}
		}
		return map;
	}

	@Override
	public Map> serializeGrouping(QueryParams queryParams) {
		// not supported so far
		return new HashMap<>();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy