Skip to content
Snippets Groups Projects
Commit f9311e0b authored by gwen-soleil's avatar gwen-soleil
Browse files

add getLast support for MultiTangoArchivingFetcherService

parent c1696ede
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.Map;
import java.util.Optional;
......@@ -86,17 +87,15 @@ public class MultiTangoArchivingFetcherService {
*/
public AttributeValueSeries getSince(final String attributeName, final Timestamp since, final boolean withError) {
AttributeValueSeries valueSeriesAggregate = null;
logger.debug("getting data since of {} db", dataSources.getDatabaseSelectorMap().size());
logger.debug("getting data since from {} db", dataSources.getDatabaseSelectorMap().size());
for (Map.Entry<String, DatabaseSelector> entry : dataSources.getDatabaseSelectorMap().entrySet()) {
AttributeValueSeries valueSeries = null;
final DatabaseSelector selector = entry.getValue();
logger.debug("getting from {} with db selector {} start = {}, end {}", since,
entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
logger.debug("getting from {} with db selector {} start = {}, end {}", since, entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
if (since.before(selector.getEndTimestamp())) {
logger.debug("since {} before {}", since, selector.getStartTimestamp());
valueSeries = dataSources.getAttributeFetcherMap().get(entry.getKey()).getSince(attributeName, since, withError);
logger.debug("got chunk of {} values from db {} = {}/{}", valueSeries.getAttributeValues().size(), entry.getKey(),
selector.getStartTimestamp(), selector.getEndTimestamp());
logger.debug("got chunk of {} values from db {} = {}/{}", valueSeries.getAttributeValues().size(), entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
if (valueSeriesAggregate == null) {
valueSeriesAggregate = valueSeries;
logger.debug(" new series ");
......@@ -122,25 +121,20 @@ public class MultiTangoArchivingFetcherService {
* @param to The end timestamp
* @return Attribute values
*/
public AttributeValueSeries getBetween(final String attributeName, final Timestamp from,
final Timestamp to, final boolean withError) {
public AttributeValueSeries getBetween(final String attributeName, final Timestamp from, final Timestamp to, final boolean withError) {
AttributeValueSeries valueSeriesAggregate = null;
logger.debug("getting data since of {} db", dataSources.getDatabaseSelectorMap().size());
logger.debug("getting data between from {} db", dataSources.getDatabaseSelectorMap().size());
for (Map.Entry<String, DatabaseSelector> entry : dataSources.getDatabaseSelectorMap().entrySet()) {
AttributeValueSeries valueSeries = null;
AttributeValueSeries valueSeries;
final DatabaseSelector selector = entry.getValue();
logger.debug("getting from {}/to {} with db selector {} start = {}, end {}", from, to,
entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
logger.debug("getting from {}/to {} with db selector {} start = {}, end {}", from, to, entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
if (from.before(selector.getEndTimestamp()) || to.after(selector.getStartTimestamp())) {
valueSeries = dataSources.getAttributeFetcherMap().get(entry.getKey()).getBetween(attributeName, from, to, withError);
logger.debug("got chunk of {} values from db {} = {}/{}", valueSeries.getAttributeValues().size(), entry.getKey(),
selector.getStartTimestamp(), selector.getEndTimestamp());
logger.debug("got chunk of {} values from db {} = {}/{}", valueSeries.getAttributeValues().size(), entry.getKey(), selector.getStartTimestamp(), selector.getEndTimestamp());
if (valueSeriesAggregate == null) {
valueSeriesAggregate = valueSeries;
logger.debug(" new series ");
} else {
valueSeriesAggregate.addAttributeValues(valueSeries.getAttributeValues());
logger.debug(" add series ");
}
} else {
logger.debug("{} DB is out date range", entry.getKey());
......@@ -161,8 +155,21 @@ public class MultiTangoArchivingFetcherService {
* @return Attribute values
*/
public AttributeValue getLast(final String attributeName, final boolean withError) {
// return archivingAttributeFetcher.getLast(attributeName, withError);
return null;
logger.debug("getting last value from {} db", dataSources.getDatabaseSelectorMap().size());
Timestamp lastTimestamp = Timestamp.from(Instant.EPOCH);
AttributeValue lastValue = null;
for (String db : dataSources.getDatabaseSelectorMap().keySet()) {
AttributeValue value = dataSources.getAttributeFetcherMap().get(db).getLast(attributeName, withError);
if (value != null) {
Timestamp timeStamp = value.getDataTime();
if (timeStamp.after(lastTimestamp)) {
lastTimestamp = timeStamp;
lastValue = value;
}
}
}
logger.debug("got last value = {}", lastValue);
return lastValue;
}
/**
......@@ -177,8 +184,7 @@ public class MultiTangoArchivingFetcherService {
* @param endTime The end timestamp
* @return Sampled attribute values {@link AttributeValueSeries}
*/
public AttributeValueSeries getWithSampling(final String attributeName, final String sampling,
final String aggregateFunction, final Timestamp startTime, final Timestamp endTime) {
public AttributeValueSeries getWithSampling(final String attributeName, final String sampling, final String aggregateFunction, final Timestamp startTime, final Timestamp endTime) {
String samplingSQL;
if (!sampling.contains("'")) {
samplingSQL = "'" + sampling + "'";
......@@ -198,6 +204,7 @@ public class MultiTangoArchivingFetcherService {
* @return The attribute value {@link AttributeEvent}
*/
public AttributeValue getClosestValue(final String attributeName, final Timestamp timestamp, final boolean withError) {
//TODO
return null;
// return archivingAttributeFetcher.getClosestValue(attributeName, timestamp, withError);
}
......@@ -211,8 +218,8 @@ public class MultiTangoArchivingFetcherService {
* @param to The end timestamp
* @return The aggregated read and/or write values
*/
public AttributeValue getAggregateValue(final String attributeName, final String aggregateFunction,
final Timestamp from, final Timestamp to) {
public AttributeValue getAggregateValue(final String attributeName, final String aggregateFunction, final Timestamp from, final Timestamp to) {
//TODO
return null;
// return archivingAttributeFetcher.getAggregateValue(attributeName, aggregateFunction, from, to);
}
......
......@@ -36,6 +36,7 @@ import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import fr.soleil.tango.archiving.build.DatabaseSelector;
import fr.soleil.tango.archiving.event.select.AttributeValue;
import fr.soleil.tango.archiving.event.select.AttributeValueSeries;
import fr.soleil.tango.archiving.infra.injection.MySqlFlywayModuleInjector;
import fr.soleil.tango.archiving.infra.injection.TimeScaleFlywayModuleInjector;
......@@ -118,7 +119,7 @@ public class MultiTangoArchivingFetcherServiceTest {
AttributeValueSeries result = service.getSince("BOO-C02/RP/CIG.038/ushort",
Timestamp.valueOf("2021-06-08 23:00:12.188"), false);
System.out.println(result);
assertEquals(result.getAttributeValues().size(), 4);
assertEquals(4, result.getAttributeValues().size());
}
@Test
......@@ -126,21 +127,28 @@ public class MultiTangoArchivingFetcherServiceTest {
AttributeValueSeries result = service.getBetween("BOO-C02/RP/CIG.038/ushort",
Timestamp.valueOf("2010-06-08 23:00:12.188"), Timestamp.valueOf("2021-06-12 23:00:12.188"), false);
System.out.println(result);
assertEquals(5, result.getAttributeValues().size());
}
@Test
public void getLast() {
final AttributeValue last = service.getLast("BOO-C02/RP/CIG.038/ushort", false);
System.out.println(last);
assertEquals(Timestamp.valueOf("2021-06-09 23:00:12.188"), last.getDataTime());
}
@Test
public void getWithSampling() {
//TODO
}
@Test
public void getClosestValue() {
//TODO
}
@Test
public void getAggregateValue() {
//TODO
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment