Commit 93cde6a3 authored by Noel Alonso's avatar Noel Alonso
Browse files

Merge branch 'release-0.11.0' into 'master'

Release 0.11.0

See merge request redmic-project/server/library/view-lib!9
parents d361f98f 5535b6a7
Loading
Loading
Loading
Loading
+70 −14
Original line number Diff line number Diff line
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<parent>
@@ -12,17 +13,18 @@
	<groupId>es.redmic.lib</groupId>
	<artifactId>view-lib</artifactId>
	<packaging>jar</packaging>
	<version>0.10.0</version>
	<version>0.11.0</version>
	<name>view-lib</name>

	<properties>
		<!-- REDMIC -->
		<redmic.rest-lib.version>0.9.0</redmic.rest-lib.version>
		<redmic.models.version>0.9.1</redmic.models.version>
		<redmic.broker-lib.version>0.8.0</redmic.broker-lib.version>
		
		<redmic.rest-lib.version>0.11.0</redmic.rest-lib.version>
		<redmic.models.version>0.11.0</redmic.models.version>
		<redmic.broker-lib.version>0.11.0</redmic.broker-lib.version>
		<redmic.user-settings-lib.version>0.2.0</redmic.user-settings-lib.version>
		<redmic.test-utils.version>0.10.0</redmic.test-utils.version>
		<!-- OTHERS -->
		<ma.glasnost.orika.core.version>1.5.2</ma.glasnost.orika.core.version>
		<mapstruct.version>1.3.0.Final</mapstruct.version>
	</properties>

	<dependencies>
@@ -45,12 +47,66 @@
		</dependency>

		<dependency>
			<groupId>ma.glasnost.orika</groupId>
			<artifactId>orika-core</artifactId>
			<version>${ma.glasnost.orika.core.version}</version>
			<scope>provided</scope>
			<groupId>es.redmic.lib</groupId>
			<artifactId>user-settings-lib</artifactId>
			<version>${redmic.user-settings-lib.version}</version>
		</dependency>

		<!-- OTHERS -->

		<dependency>
			<groupId>org.mapstruct</groupId>
			<artifactId>mapstruct</artifactId>
			<version>${mapstruct.version}</version>
		</dependency>
		
		<!-- Test -->
		<dependency>
			<groupId>es.redmic.lib</groupId>
			<artifactId>test-utils</artifactId>
			<version>${redmic.test-utils.version}</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>es.redmic.lib</groupId>
			<artifactId>user-settings-lib</artifactId>
			<version>${redmic.user-settings-lib.version}</version>
			<type>test-jar</type>
  			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<id>Jar Tests Package</id>
						<phase>package</phase>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<annotationProcessorPaths>
						<path>
							<groupId>org.mapstruct</groupId>
							<artifactId>mapstruct-processor</artifactId>
							<version>${mapstruct.version}</version>
						</path>
						<!-- other annotation processors -->
					</annotationProcessorPaths>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<repositories>
		<repository>
			<id>central</id>
+76 −0
Original line number Diff line number Diff line
package es.redmic.viewlib.common.mapper.es2dto;

import java.util.HashMap;
import java.util.Map;

/*-
 * #%L
 * view-lib
 * %%
 * Copyright (C) 2019 REDMIC Project / Server
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

import es.redmic.brokerlib.avro.common.CommonDTO;
import es.redmic.models.es.common.dto.AggregationsDTO;
import es.redmic.models.es.common.dto.MetaDataDTO;
import es.redmic.models.es.common.model.BaseES;
import es.redmic.models.es.common.model.HitWrapper;
import es.redmic.models.es.common.model.SearchWrapper;

public abstract class BaseESMapper<TDTO extends CommonDTO, TModel extends BaseES<?>> {

	protected abstract TDTO mapSource(TModel model);

	protected MetaDataDTO getMetaDataDTO(HitWrapper hit) {

		MetaDataDTO _meta = new MetaDataDTO();
		_meta.setScore(hit.get_score());
		_meta.setVersion(hit.get_version());
		_meta.setHighlight(hit.getHighlight());
		return _meta;
	}

	AggregationsDTO getAggs(SearchWrapper wrapper) {

		AggregationsDTO aggs = new AggregationsDTO();

		if (wrapper.getAggregations() == null || wrapper.getAggregations().getAttributes().isEmpty())
			return aggs;

		aggs.setAttributes(getCleanAttributes(wrapper.getAggregations().getAttributes()));

		return aggs;
	}

	@SuppressWarnings("unchecked")
	private Map<String, Object> getCleanAttributes(Map<String, Object> source) {

		Map<String, Object> attrs = new HashMap<>();

		source.keySet().stream()
				.forEach(key -> attrs.put(getAggField(key),
						((source.get(key) instanceof HashMap)
								? getCleanAttributes((Map<String, Object>) source.get(key))
								: source.get(key))));

		return attrs;
	}

	private String getAggField(String key) {
		String[] keySplitted = key.split("#");
		return keySplitted.length == 2 ? keySplitted[1] : key;
	}
}
+24 −16
Original line number Diff line number Diff line
package es.redmic.viewlib.common.mapper.es2dto;

import es.redmic.brokerlib.avro.common.CommonDTO;

/*-
 * #%L
 * view-lib
@@ -20,23 +22,29 @@ package es.redmic.viewlib.common.mapper.es2dto;
 * #L%
 */

import org.springframework.stereotype.Component;

import es.redmic.models.es.common.dto.JSONCollectionDTO;
import es.redmic.models.es.common.model.BaseES;
import es.redmic.models.es.data.common.model.DataHitsWrapper;
import es.redmic.viewlib.data.dto.MetaDTO;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;

@SuppressWarnings("rawtypes")
@Component
public class DataCollectionESMapper extends CustomMapper<DataHitsWrapper, JSONCollectionDTO> {

	@SuppressWarnings("unchecked")
	@Override
	public void mapAtoB(DataHitsWrapper a, JSONCollectionDTO b, MappingContext context) {
		b.setData(mapperFacade.mapAsList(a.getHits(), MetaDTO.class, context));
		b.get_meta().setMax_score(a.getMax_score());
		b.setTotal(a.getTotal());
import es.redmic.models.es.data.common.model.DataSearchWrapper;

public abstract class DataCollectionESMapper<TDTO extends CommonDTO, TModel extends BaseES<?>>
		extends DataItemESMapper<TDTO, TModel> {

	@SuppressWarnings({ "rawtypes" })
	public JSONCollectionDTO map(DataSearchWrapper dataSearchWrapper) {

		JSONCollectionDTO result = map(dataSearchWrapper.getHits());
		result.set_aggs(getAggs(dataSearchWrapper));
		return result;
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public JSONCollectionDTO map(DataHitsWrapper dataHitsWrapper) {

		JSONCollectionDTO result = new JSONCollectionDTO();
		result.setData(mapList(dataHitsWrapper.getHits()));
		result.get_meta().setMax_score(dataHitsWrapper.getMax_score());
		result.setTotal(dataHitsWrapper.getTotal());
		return result;
	}
}
+20 −14
Original line number Diff line number Diff line
@@ -20,27 +20,33 @@ package es.redmic.viewlib.common.mapper.es2dto;
 * #L%
 */

import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;

import es.redmic.models.es.common.dto.MetaDataDTO;
import es.redmic.brokerlib.avro.common.CommonDTO;
import es.redmic.models.es.common.model.BaseES;
import es.redmic.models.es.data.common.model.DataHitWrapper;
import es.redmic.viewlib.data.dto.MetaDTO;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;

@SuppressWarnings("rawtypes")
@Component
public class DataItemESMapper extends CustomMapper<DataHitWrapper, MetaDTO> {
public abstract class DataItemESMapper<TDTO extends CommonDTO, TModel extends BaseES<?>>
		extends BaseESMapper<TDTO, TModel> {

	@Override
	public void mapAtoB(DataHitWrapper a, MetaDTO b, MappingContext context) {
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<MetaDTO<TDTO>> mapList(List<DataHitWrapper> dataHitWrapper) {

		MetaDataDTO _meta = new MetaDataDTO();
		List<MetaDTO<TDTO>> list = new ArrayList<MetaDTO<TDTO>>();
		for (DataHitWrapper<TModel> entity : dataHitWrapper) {
			list.add(map(entity));
		}
		return list;
	}

		_meta.setScore(a.get_score());
		_meta.setVersion(a.get_version());
		_meta.setHighlight(a.getHighlight());
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public MetaDTO map(DataHitWrapper dataHitWrapper) {

		b.set_meta(_meta);
		MetaDTO<TDTO> result = new MetaDTO<TDTO>();
		result.set_meta(getMetaDataDTO(dataHitWrapper));
		result.set_source(mapSource((TModel) dataHitWrapper.get_source()));
		return result;
	}
}
+52 −0
Original line number Diff line number Diff line
@@ -20,31 +20,33 @@ package es.redmic.viewlib.common.mapper.es2dto;
 * #L%
 */

import org.springframework.stereotype.Component;
import org.locationtech.jts.geom.Geometry;

import es.redmic.exception.common.ExceptionType;
import es.redmic.exception.common.InternalException;
import es.redmic.brokerlib.avro.geodata.common.FeatureDTO;
import es.redmic.brokerlib.avro.geodata.common.PropertiesBaseDTO;
import es.redmic.models.es.common.model.BaseES;
import es.redmic.models.es.geojson.common.dto.GeoJSONFeatureCollectionDTO;
import es.redmic.models.es.geojson.wrapper.GeoHitsWrapper;
import es.redmic.viewlib.geodata.dto.GeoMetaDTO;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;
import es.redmic.models.es.geojson.common.model.GeoHitsWrapper;
import es.redmic.models.es.geojson.common.model.GeoSearchWrapper;

@SuppressWarnings("rawtypes")
@Component
public class FeatureCollectionMapper extends CustomMapper<GeoHitsWrapper, GeoJSONFeatureCollectionDTO> {
public abstract class FeatureCollectionESMapper<TDTO extends FeatureDTO<PropertiesBaseDTO, Geometry>, TModel extends BaseES<?>>
		extends FeatureESMapper<TDTO, TModel> {

	@SuppressWarnings("unchecked")
	@Override
	public void mapAtoB(GeoHitsWrapper a, GeoJSONFeatureCollectionDTO b, MappingContext context) {
	@SuppressWarnings("rawtypes")
	public GeoJSONFeatureCollectionDTO map(GeoSearchWrapper geoSearchWrapper) {

		Class<?> targetTypeDto = (Class<?>) context.getProperty("targetTypeDto");
		GeoJSONFeatureCollectionDTO result = map(geoSearchWrapper.getHits());
		result.set_aggs(getAggs(geoSearchWrapper));
		return result;
	}

		if (targetTypeDto == null)
			throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public GeoJSONFeatureCollectionDTO map(GeoHitsWrapper geoHitsWrapper) {

		b.setFeatures(mapperFacade.mapAsList(a.getHits(), GeoMetaDTO.class, context));
		b.get_meta().setMax_score(a.getMax_score());
		b.setTotal(a.getTotal());
		GeoJSONFeatureCollectionDTO result = new GeoJSONFeatureCollectionDTO();
		result.setFeatures(mapList(geoHitsWrapper.getHits()));
		result.get_meta().setMax_score(geoHitsWrapper.getMax_score());
		result.setTotal(geoHitsWrapper.getTotal());
		return result;
	}
}
Loading