Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.0.x sprint17 vir 144 further filter by refactor #279

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 48 additions & 86 deletions src/main/java/org/tdl/vireo/controller/SubmissionListController.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
import org.springframework.transaction.annotation.Transactional;
import org.tdl.vireo.model.FilterCriterion;
import org.tdl.vireo.model.NamedSearchFilter;
import org.tdl.vireo.model.NamedSearchFilterGroup;
import org.tdl.vireo.model.SubmissionListColumn;
import org.tdl.vireo.model.User;
import org.tdl.vireo.model.repo.FilterCriterionRepo;
import org.tdl.vireo.model.repo.NamedSearchFilterRepo;
import org.tdl.vireo.model.repo.NamedSearchFilterGroupRepo;
import org.tdl.vireo.model.repo.SubmissionListColumnRepo;
import org.tdl.vireo.model.repo.UserRepo;
import org.tdl.vireo.service.DefaultSubmissionListColumnService;
Expand Down Expand Up @@ -51,10 +52,10 @@ public class SubmissionListController {
private SimpMessagingTemplate simpMessagingTemplate;

@Autowired
private FilterCriterionRepo filterCriterionRepo;
private NamedSearchFilterRepo filterCriterionRepo;

@Autowired
private NamedSearchFilterRepo namedSearchFilterRepo;
private NamedSearchFilterGroupRepo namedSearchFilterGroupRepo;

@PersistenceContext
EntityManager em;
Expand Down Expand Up @@ -125,26 +126,26 @@ public ApiResponse updateUserFilterColumns(@ApiCredentials Credentials credentia

@ApiMapping("/set-active-filter")
@Auth(role = "MANAGER")
public ApiResponse setActiveFilter(@ApiCredentials Credentials credentials, @ApiValidatedModel NamedSearchFilter filter) {
public ApiResponse setActiveFilter(@ApiCredentials Credentials credentials, @ApiValidatedModel NamedSearchFilterGroup namedSearchFilterGroup) {

User user = userRepo.findByEmail(credentials.getEmail());

List<Long> ids = new ArrayList<Long>();

user.getActiveFilter().getFilterCriteria().forEach(filterCriterion -> {
ids.add(filterCriterion.getId());
user.getActiveFilter().getNamedSearchFilters().forEach(namedSearchFilter -> {
ids.add(namedSearchFilter.getId());
});

user.getActiveFilter().getFilterCriteria().clear();
user.getActiveFilter().getNamedSearchFilters().clear();

user = userRepo.save(user);

ids.forEach(id -> {
filterCriterionRepo.delete(id);
});

NamedSearchFilter activeFilter = user.getActiveFilter();
activeFilter = namedSearchFilterRepo.clone(activeFilter,filter);
NamedSearchFilterGroup activeFilter = user.getActiveFilter();
activeFilter = namedSearchFilterGroupRepo.clone(activeFilter,namedSearchFilterGroup);

if(activeFilter.getColumnsFlag()) {
user.getSubmissionViewColumns().clear();
Expand All @@ -162,26 +163,6 @@ public ApiResponse setActiveFilter(@ApiCredentials Credentials credentials, @Api
@Auth(role = "MANAGER")
public ApiResponse getActiveFilters(@ApiCredentials Credentials credentials) {
User user = userRepo.findByEmail(credentials.getEmail());

// if(user.getActiveFilter().getFilterCriteria().size() < 1) {
//
// NamedSearchFilter activeFilter = user.getActiveFilter();
// FilterCriterion filterCriterionOne = filterCriterionRepo.create(submissionListColumnRepo.findOne(1L));
// filterCriterionOne.setName("First Name");
// filterCriterionOne.addFilter("Jeremy");
// filterCriterionOne.addFilter("Jack");
//
// activeFilter.addFilterCriterion(filterCriterionOne);
//
// FilterCriterion filterCriterionTwo = filterCriterionRepo.create(submissionListColumnRepo.findOne(2L));
// filterCriterionTwo.setName("Last Name");
// filterCriterionTwo.addFilter("Huff");
// filterCriterionTwo.addFilter("Daniels");
//
// activeFilter.addFilterCriterion(filterCriterionTwo);
//
// userRepo.save(user);
// }

return new ApiResponse(SUCCESS,user.getActiveFilter());
}
Expand All @@ -190,37 +171,17 @@ public ApiResponse getActiveFilters(@ApiCredentials Credentials credentials) {
@Auth(role = "MANAGER")
public ApiResponse getSavedFilters(@ApiCredentials Credentials credentials) {
User user = userRepo.findByEmail(credentials.getEmail());

// if(user.getActiveFilter().getFilterCriteria().size() < 1) {
//
// NamedSearchFilter activeFilter = user.getActiveFilter();
// FilterCriterion filterCriterionOne = filterCriterionRepo.create(submissionListColumnRepo.findOne(1L));
// filterCriterionOne.setName("First Name");
// filterCriterionOne.addFilter("Jeremy");
// filterCriterionOne.addFilter("Jack");
//
// activeFilter.addFilterCriterion(filterCriterionOne);
//
// FilterCriterion filterCriterionTwo = filterCriterionRepo.create(submissionListColumnRepo.findOne(2L));
// filterCriterionTwo.setName("Last Name");
// filterCriterionTwo.addFilter("Huff");
// filterCriterionTwo.addFilter("Daniels");
//
// activeFilter.addFilterCriterion(filterCriterionTwo);
//
// userRepo.save(user);
// }

return new ApiResponse(SUCCESS,user.getActiveFilter());
}

@ApiMapping("/remove-saved-filter")
@Auth(role = "MANAGER")
public ApiResponse removeSavedFilter(@ApiCredentials Credentials credentials, @ApiModel NamedSearchFilter savedFilter) {
public ApiResponse removeSavedFilter(@ApiCredentials Credentials credentials, @ApiModel NamedSearchFilterGroup savedFilter) {
User user = userRepo.findByEmail(credentials.getEmail());
user.getSavedFilters().remove(savedFilter);
userRepo.save(user);
namedSearchFilterRepo.delete(savedFilter.getId());
namedSearchFilterGroupRepo.delete(savedFilter.getId());

return getSavedFilters(credentials);
}
Expand All @@ -232,27 +193,31 @@ public ApiResponse addFilterCriterion(@ApiCredentials Credentials credentials, @
String criterionName = data.get("criterionName").asText();
String filterValue = data.get("filterValue").asText();

JsonNode filterGlossNode = data.get("filterGloss");
String filterGloss = null;
if(filterGlossNode !=null) filterGloss = filterGlossNode.asText();

System.out.println(criterionName);
System.out.println(filterValue);

User user = userRepo.findByEmail(credentials.getEmail());

NamedSearchFilter activeFilter = user.getActiveFilter();
NamedSearchFilterGroup activeFilter = user.getActiveFilter();

FilterCriterion criterionToEdit = null;
NamedSearchFilter namedSearchFilter = null;

for(FilterCriterion criterion : activeFilter.getFilterCriteria()) {
for(NamedSearchFilter criterion : activeFilter.getNamedSearchFilters()) {
if(criterion.getName().equals(criterionName)) {
criterionToEdit = criterion;
namedSearchFilter = criterion;
break;
}
}

if(criterionToEdit==null) criterionToEdit = filterCriterionRepo.create(submissionListColumnRepo.findByTitle(criterionName));
if(namedSearchFilter==null) namedSearchFilter = filterCriterionRepo.create(submissionListColumnRepo.findByTitle(criterionName));

criterionToEdit.addFilter(filterValue);
namedSearchFilter.addFilter(filterValue, filterGloss);

user.getActiveFilter().addFilterCriterion(criterionToEdit);
user.getActiveFilter().addFilterCriterion(namedSearchFilter);

user = userRepo.save(user);

Expand All @@ -261,24 +226,21 @@ public ApiResponse addFilterCriterion(@ApiCredentials Credentials credentials, @
return new ApiResponse(SUCCESS);
}

@ApiMapping("/remove-filter-criterion")
@ApiMapping("/remove-filter-criterion/{namedSearchFilterName}")
@Auth(role = "MANAGER")
public ApiResponse removeFilterCriterion(@ApiCredentials Credentials credentials, @ApiData JsonNode data) {

String criterionName = data.get("criterionName").asText();
String filterValue = data.get("filterValue").asText();

public ApiResponse removeFilterCriterion(@ApiCredentials Credentials credentials, @ApiVariable String namedSearchFilterName, @ApiModel FilterCriterion filterCriterion) {

User user = userRepo.findByEmail(credentials.getEmail());

NamedSearchFilter activeFilter = user.getActiveFilter();
NamedSearchFilterGroup activeFilter = user.getActiveFilter();

for(FilterCriterion criterion : activeFilter.getFilterCriteria()) {
if(criterion.getName().equals(criterionName)) {
for(String filter : criterion.getFilters()) {
if(filter.equals(filterValue)) {
criterion.removeFilter(filterValue);
if (criterion.getFilters().size() == 0) {
activeFilter.removeFilterCriterion(criterion);
for(NamedSearchFilter namedSearchFilter : activeFilter.getNamedSearchFilters()) {
if(namedSearchFilter.getName().equals(namedSearchFilterName)) {
for(FilterCriterion fc : namedSearchFilter.getFilters()) {
if(fc.getValue().equals(filterCriterion.getValue()) && fc.getGloss().equals(filterCriterion.getGloss())) {
namedSearchFilter.removeFilter(fc);
if (namedSearchFilter.getFilters().size() == 0) {
activeFilter.removeNamedSearchFilter(namedSearchFilter);
}
break;
}
Expand All @@ -300,12 +262,12 @@ public ApiResponse clearFilterCriteria(@ApiCredentials Credentials credentials)

User user = userRepo.findByEmail(credentials.getEmail());

user.getActiveFilter().getFilterCriteria().clear();
user.getActiveFilter().getNamedSearchFilters().clear();

userRepo.save(user);

user.getActiveFilter().getFilterCriteria().forEach(filterCriterion -> {
filterCriterionRepo.delete(filterCriterion);
user.getActiveFilter().getNamedSearchFilters().forEach(namedSearchFilter -> {
filterCriterionRepo.delete(namedSearchFilter);
});

simpMessagingTemplate.convertAndSend("/channel/active-filters/"+user.getActiveFilter().getId(), new ApiResponse(SUCCESS, user.getActiveFilter()));
Expand All @@ -319,10 +281,10 @@ public ApiResponse getAllSaveFilterCriteria(@ApiCredentials Credentials credenti

User user = userRepo.findByEmail(credentials.getEmail());

List<NamedSearchFilter> userSavedFilters = user.getSavedFilters();
List<NamedSearchFilter> publicSavedFilters = namedSearchFilterRepo.findByPublicFlagTrue();
List<NamedSearchFilterGroup> userSavedFilters = user.getSavedFilters();
List<NamedSearchFilterGroup> publicSavedFilters = namedSearchFilterGroupRepo.findByPublicFlagTrue();

List<NamedSearchFilter> allSavedFilters = new ArrayList<NamedSearchFilter>();
List<NamedSearchFilterGroup> allSavedFilters = new ArrayList<NamedSearchFilterGroup>();
allSavedFilters.addAll(userSavedFilters);
allSavedFilters.addAll(publicSavedFilters);

Expand All @@ -332,32 +294,32 @@ public ApiResponse getAllSaveFilterCriteria(@ApiCredentials Credentials credenti

@ApiMapping("/save-filter-criteria")
@Auth(role = "MANAGER")
public ApiResponse saveFilterCriteria(@ApiCredentials Credentials credentials, @ApiValidatedModel NamedSearchFilter namedSearchFilter) {
public ApiResponse saveFilterCriteria(@ApiCredentials Credentials credentials, @ApiValidatedModel NamedSearchFilterGroup namedSearchFilterGroup) {

User user = userRepo.findByEmail(credentials.getEmail());

NamedSearchFilter existingFilter = namedSearchFilterRepo.findByNameAndPublicFlagTrue(namedSearchFilter.getName());
NamedSearchFilterGroup existingFilter = namedSearchFilterGroupRepo.findByNameAndPublicFlagTrue(namedSearchFilterGroup.getName());

if(existingFilter != null) {
existingFilter = namedSearchFilterRepo.clone(existingFilter,namedSearchFilter);
existingFilter = namedSearchFilterGroupRepo.clone(existingFilter,namedSearchFilterGroup);
user = userRepo.findByEmail(credentials.getEmail());

} else {

boolean foundFilter = false;

for(NamedSearchFilter filter : user.getSavedFilters()) {
if(filter.getName().equals(namedSearchFilter.getName())) {
filter.getFilterCriteria().clear();
filter = namedSearchFilterRepo.clone(filter,namedSearchFilter);
for(NamedSearchFilterGroup filter : user.getSavedFilters()) {
if(filter.getName().equals(namedSearchFilterGroup.getName())) {
filter.getNamedSearchFilters().clear();
filter = namedSearchFilterGroupRepo.clone(filter,namedSearchFilterGroup);
foundFilter = true;
break;

}
}

if(!foundFilter) {
user.getSavedFilters().add(namedSearchFilterRepo.createFromFilter(namedSearchFilter));
user.getSavedFilters().add(namedSearchFilterGroupRepo.createFromFilter(namedSearchFilterGroup));
}

}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/org/tdl/vireo/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public ApiResponse updateRole(@ApiValidatedModel User user) {
User persistedUser = userRepo.findOne(user.getId());
if(persistedUser != null) {
user.setPassword(persistedUser.getPassword());
user.setActiveFilter(persistedUser.getActiveFilter());
}

logger.info("Updating role for " + user.getEmail());
Expand Down
Loading