diff --git a/pom.xml b/pom.xml
index 7679711a7b2ca69f4f4644ab6e94d79e25fcbcd7..20c9072a1ce220f26c13aef638036de319a5e3e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
com.capitalone.dashboard
core-p1
jar
- 3.15.15B-SNAPSHOT
+ 3.15.15C-SNAPSHOT
${project.groupId}:${project.artifactId}
Core package shared by API layer and Microservices
https://github.com/Hygieia/hygieia-core
diff --git a/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryCustom.java b/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryCustom.java
index 940db61065745a3d70d2c554833a2b190f33eea5..c135e187d64fa40f2f2de71d93ed1a8dd74c278b 100644
--- a/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryCustom.java
+++ b/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryCustom.java
@@ -1,6 +1,7 @@
package com.capitalone.dashboard.repository;
import java.util.List;
+import java.util.Set;
import org.bson.types.ObjectId;
@@ -51,5 +52,15 @@ public interface FeatureRepositoryCustom {
* @return
*/
List findByDate(List teamId, String startDate, String endDate);
-
+
+ /**
+ * Find all features between two dates
+ *
+ * @param collectorIds
+ * @param startDate
+ * @param endDate
+ * @return
+ */
+ List findByDate(Set collectorIds, String startDate, String endDate);
+
}
diff --git a/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryImpl.java b/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryImpl.java
index e51c68faee244345a52e7f8b55265a050ab71f02..ed68c0e60c6caf3bc431d31f4efe6bd60eb04cfb 100644
--- a/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryImpl.java
+++ b/src/main/java/com/capitalone/dashboard/repository/FeatureRepositoryImpl.java
@@ -1,8 +1,6 @@
package com.capitalone.dashboard.repository;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import javax.xml.bind.DatatypeConverter;
@@ -127,6 +125,30 @@ public class FeatureRepositoryImpl implements FeatureRepositoryCustom {
return operations.find(query, Feature.class);
}
+ @Override
+ public List findByDate(Set collectorIds, String startDate, String endDate) {
+ boolean startDateTimeValid = isValidDate(startDate);
+ boolean endDateTimeValid = isValidDate(endDate);
+
+ Criteria criteria = Criteria.where("isDeleted").is("False");
+ Criteria collectorCriteria = new Criteria();
+ for(ObjectId collectorId : collectorIds) {
+ collectorCriteria.orOperator(Criteria.where("collectorId").is(collectorId));
+ }
+ criteria.andOperator(collectorCriteria);
+
+ if (startDateTimeValid && endDateTimeValid) {
+ criteria = criteria.andOperator(Criteria.where("changeDate").gt(startDate), Criteria.where("changeDate").lt(endDate));
+ } else if (startDateTimeValid){
+ criteria = criteria.andOperator(Criteria.where("changeDate").gt(startDate));
+ } else {
+ criteria = criteria.andOperator(Criteria.where("changeDate").gt(getDefaultDate()));
+ }
+ Query query = new Query(criteria);
+
+ return operations.find(query, Feature.class);
+ }
+
protected boolean isValidDate(String date) {
try {
DatatypeConverter.parseDateTime(date);