m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
index a31f265..e8721b3 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
@@ -9,6 +9,7 @@ import pl.edu.mimuw.cloudatlas.agent.messages.GetStateMessage;
import pl.edu.mimuw.cloudatlas.agent.messages.StateMessage;
import pl.edu.mimuw.cloudatlas.agent.messages.StanikMessage;
import pl.edu.mimuw.cloudatlas.agent.messages.UpdateAttributesMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.UpdateQueriesMessage;
import pl.edu.mimuw.cloudatlas.model.Attribute;
import pl.edu.mimuw.cloudatlas.model.AttributesMap;
import pl.edu.mimuw.cloudatlas.model.PathName;
@@ -46,6 +47,9 @@ public class Stanik extends Module {
case UPDATE_ATTRIBUTES:
handleUpdateAttributes((UpdateAttributesMessage) message);
break;
+ case UPDATE_QUERIES:
+ handleUpdateQueries((UpdateQueriesMessage) message);
+ break;
default:
throw new InvalidMessageType("This type of message cannot be handled by Stanik");
}
@@ -74,6 +78,17 @@ public class Stanik extends Module {
}
}
+ public void handleUpdateQueries(UpdateQueriesMessage message) {
+ for (Entry<Attribute, Entry<ValueQuery, ValueTime>> entry : message.getQueries().entrySet()) {
+ Attribute attribute = entry.getKey();
+ ValueTime timestamp = entry.getValue().getValue();
+ Entry<ValueQuery, ValueTime> currentTimestampedQuery = queries.get(attribute);
+ if (currentTimestampedQuery == null || valueLower(currentTimestampedQuery.getValue(), timestamp)) {
+ queries.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+
private boolean valueLower(Value a, Value b) {
return ((ValueBoolean) a.isLowerThan(b)).getValue();
}