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);