Commit e0c41020 authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade funcionalidades para guardar timeseries

parent 8634cc6b
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregationBuilder;
import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;

public interface IBaseTimeSeriesESRepository {
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.model.BaseAbstractStringES;

public interface IBaseSeriesESRepository<TModel extends BaseAbstractStringES> {

	static String[] INDEX = { "timeseries" };
	static String TYPE = "_doc";
@@ -40,4 +43,10 @@ public interface IBaseTimeSeriesESRepository {
		return AggregationBuilders.dateHistogram("dateHistogram").field(dateTimeField)
				.dateHistogramInterval(dateHistogramInterval).minDocCount(minDocCount);
	}

	EventApplicationResult save(TModel modelToIndex);

	EventApplicationResult update(TModel modelToIndex);

	EventApplicationResult delete(String id);
}
+1 −3
Original line number Diff line number Diff line
@@ -21,9 +21,7 @@ package es.redmic.elasticsearchlib.series.repository;
 */

import java.util.List;

import org.elasticsearch.search.builder.SearchSourceBuilder;

import es.redmic.models.es.common.model.BaseAbstractStringES;
import es.redmic.models.es.common.query.dto.DataQueryDTO;
import es.redmic.models.es.common.query.dto.MgetDTO;
@@ -31,7 +29,7 @@ import es.redmic.models.es.series.common.model.SeriesHitWrapper;
import es.redmic.models.es.series.common.model.SeriesHitsWrapper;
import es.redmic.models.es.series.common.model.SeriesSearchWrapper;

public interface IRSeriesESRepository<TModel extends BaseAbstractStringES> extends IBaseTimeSeriesESRepository {
public interface IRSeriesESRepository<TModel extends BaseAbstractStringES> extends IBaseSeriesESRepository<TModel> {

	public SeriesHitWrapper<TModel> findById(String id);
	public SeriesSearchWrapper<TModel> searchByIds(String[] ids);
+1 −6
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ import org.elasticsearch.search.sort.SortOrder;
 * #L%
 */

import org.springframework.beans.factory.annotation.Value;

import es.redmic.elasticsearchlib.common.query.SeriesQueryUtils;
import es.redmic.elasticsearchlib.common.repository.RBaseESRepository;
import es.redmic.exception.data.ItemNotFoundException;
@@ -51,13 +49,10 @@ import es.redmic.models.es.series.common.model.SeriesSearchWrapper;
public abstract class RSeriesESRepository<TModel extends BaseAbstractStringES, TQueryDTO extends DataQueryDTO>
		extends RBaseESRepository<TModel, TQueryDTO> implements IRSeriesESRepository<TModel> {

	@Value("${timeseries.index.pattern}")
	protected String timeSeriesIndexPattern;

	private static final String DATADEFINITION_PROPERTY = "dataDefinition";

	protected RSeriesESRepository() {
		super(IBaseTimeSeriesESRepository.INDEX, IBaseTimeSeriesESRepository.TYPE, true);
		super(IBaseSeriesESRepository.INDEX, IBaseSeriesESRepository.TYPE, true);
	}

	@Override
+62 −5
Original line number Diff line number Diff line
@@ -20,26 +20,83 @@ package es.redmic.elasticsearchlib.series.repository;
 * #L%
 */

import es.redmic.elasticsearchlib.common.repository.RBaseESRepository;

import org.joda.time.format.DateTimeFormat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import es.redmic.elasticsearchlib.common.utils.ElasticPersistenceUtils;
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.model.BaseTimeDataAbstractES;
import es.redmic.models.es.common.query.dto.DataQueryDTO;

public abstract class RWSeriesESRepository<TModel extends BaseTimeDataAbstractES, TQueryDTO extends DataQueryDTO>
		extends RBaseESRepository<TModel, TQueryDTO> implements IBaseTimeSeriesESRepository {
		extends RSeriesESRepository<TModel, TQueryDTO> {

	@Value("${timeseries.index.pattern}")
	String timeSeriesIndexPattern;

	@Autowired
	ElasticPersistenceUtils elasticPersistenceUtils;

	protected RWSeriesESRepository() {
		super(IBaseTimeSeriesESRepository.INDEX, IBaseTimeSeriesESRepository.TYPE, true);
		super();
	}

	@Override
	protected String getIndex(final TModel modelToIndex) {
		return super.getIndex()[0] + "-" + modelToIndex.getDate().toString(DateTimeFormat.forPattern(timeSeriesIndexPattern));
		return timeSeriesIndexPattern + "-" + modelToIndex.getDate().toString(DateTimeFormat.forPattern(timeSeriesIndexPattern));
	}

	@Override
	public EventApplicationResult save(TModel modelToIndex) {

		EventApplicationResult checkInsert = checkInsertConstraintsFulfilled(modelToIndex);

		if (!checkInsert.isSuccess()) {
			return checkInsert;
		}

		return elasticPersistenceUtils.save(getIndex(modelToIndex), getType(), modelToIndex,
				modelToIndex.getId());
	}

	@Override
	public EventApplicationResult update(TModel modelToIndex) {

		EventApplicationResult checkUpdate = checkUpdateConstraintsFulfilled(modelToIndex);

		if (!checkUpdate.isSuccess()) {
			return checkUpdate;
		}

		return elasticPersistenceUtils.update(getIndex(modelToIndex), getType(), modelToIndex,
				modelToIndex.getId());
	}

	@Override
	public EventApplicationResult delete(String id) {

		EventApplicationResult checkDelete = checkDeleteConstraintsFulfilled(id);

		if (!checkDelete.isSuccess()) {
			return checkDelete;
		}

		return elasticPersistenceUtils.delete(getIndex()[0], getType(), id);
	}

	private EventApplicationResult checkUpdateConstraintsFulfilled(TModel modelToIndex) {
		// TODO Implementar comprobaciones
		return new EventApplicationResult(true);
	}

	private EventApplicationResult checkDeleteConstraintsFulfilled(String id) {
		// TODO Implementar comprobaciones
		return new EventApplicationResult(true);
	}

	private EventApplicationResult checkInsertConstraintsFulfilled(TModel modelToIndex) {
		// TODO Implementar comprobaciones
		return new EventApplicationResult(true);
	}
}