Skip to content
This repository has been archived by the owner on Sep 1, 2024. It is now read-only.

Feature/js develop/interest query controller #218

Merged
11 changes: 11 additions & 0 deletions .idea/jpb-settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions .jpb/jpb-settings.xml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,15 @@
"tr": "Daha fazla ilgi alanı ekleyemezsiniz.",
"hasRegex": false,
"regex": ""
},
{
"code": "F0000000010",
"az": "Dəyər müəyyən edilmiş diapazonda olmalıdır.",
"en": "The value must be within the specified range.",
"ru": "Значение должно находиться в указанном диапазоне.",
"tr": "Değer belirtilen aralıkta olmalıdır.",
"hasRegex": false,
"regex": ""
}

]
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public Optional<InterestRoot> fetchAnyById(InterestCriteria interestCriteria) {
@Override
public List<InterestRoot> fetchAllAnySimpleInterest(InterestCriteria criteria, SimplePageableRequest request) throws InterestOverLimit {
var interestComposeExample = InterestComposeExample.of(criteria);
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request));
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request).changeLimit(request.getSize()+1));

final List<InterestCompose> interestComposes = this.batisRepository.selectByExample(interestComposeExample);
if (!interestComposes.isEmpty()) {
Expand All @@ -71,7 +71,7 @@ public List<InterestRoot> fetchAllAnySimpleInterest(InterestCriteria criteria, S
@Override
public List<InterestRoot> fetchAllAnyInterests(InterestCriteria criteria, SimplePageableRequest request) throws InterestOverLimit {
InterestComposeExample interestComposeExample = InterestComposeExample.of(criteria);
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request));
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request).changeLimit(request.getSize()+1));

final List<InterestCompose> interestComposes = this.batisRepository.selectByExample(interestComposeExample);
if (!interestComposes.isEmpty()) {
Expand Down Expand Up @@ -101,7 +101,7 @@ public Optional<InterestRoot> findMyInterestById(InterestCriteria criteria) {
@Override
public List<InterestRoot> queryAllMyInterests (InterestCriteria criteria, SimplePageableRequest request) throws InterestOverLimit {
InterestComposeExample interestComposeExample = InterestComposeExample.of(criteria);
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request));
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request).changeLimit(request.getSize()+1));

return batisRepository.selectByExample(interestComposeExample)
.stream()
Expand All @@ -116,7 +116,7 @@ public List<InterestRoot> queryAllMyInterests (InterestCriteria criteria, Simple
public List<InterestRoot> queryAllMySimpleInterests (InterestCriteria criteria, SimplePageableRequest request) throws
InterestOverLimit {
InterestComposeExample interestComposeExample = InterestComposeExample.of(criteria);
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request));
interestComposeExample.addPageable(pageableDataAccessMapper.toBatisPageable(request).changeLimit(request.getSize()+1));

return batisRepository.selectByExample(interestComposeExample)
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@
import az.rock.lib.valueObject.SimplePageableResponse;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

@Component
public class InterestQueryHandler implements AbstractInterestQueryHandler {
private final List<AccessModifier> modifierList = List.of(AccessModifier.values());

private final AbstractSecurityContextHolder contextHolder;
private final AbstractInterestQueryRepositoryAdapter interestQueryRepositoryAdapter;

Expand All @@ -36,27 +37,23 @@ public InterestQueryHandler(AbstractSecurityContextHolder contextHolder,
public SimplePageableResponse<AnyInterestResponseModel> findAllAnyInterests(UUID targetResumeId, SimplePageableRequest pageableRequest) throws Exception {
final InterestCriteria criteria = toCriteria(ResumeID.of(targetResumeId), null, modifierList);
var allAnyInterestsRoot = this.interestQueryRepositoryAdapter.fetchAllAnyInterests(criteria, pageableRequest);
if (!allAnyInterestsRoot.isEmpty()) {
var allAnyInterest = allAnyInterestsRoot.stream()
.map(AnyInterestResponseModel::of)
.toList();
return SimplePageableResponse.ofNoMore(pageableRequest.getSize(), pageableRequest.getPage(), allAnyInterest);
} else throw new InterestNotFound();
var allAnyInterest = allAnyInterestsRoot.stream()
.map(AnyInterestResponseModel::of)
.collect(Collectors.toList());
return convertResponse(allAnyInterest, pageableRequest);

}


@Override
public SimplePageableResponse<SimpleAnyInterestResponseModel> findAllAnySimpleInterest(UUID targetResumeId, SimplePageableRequest pageableRequest) throws Exception {
final InterestCriteria criteria = toCriteria(ResumeID.of(targetResumeId), null, modifierList);
var allAnySimpleInterest = this.interestQueryRepositoryAdapter.fetchAllAnySimpleInterest(criteria, pageableRequest);
if (!allAnySimpleInterest.isEmpty()) {
var allAnyInterest = allAnySimpleInterest.stream()
.map(SimpleAnyInterestResponseModel::of)
.toList();

return SimplePageableResponse.ofNoMore(pageableRequest.getSize(), pageableRequest.getPage(), allAnyInterest);
.collect(Collectors.toList());
return convertResponse(allAnyInterest, pageableRequest);

} else throw new InterestNotFound();
}

@Override
Expand All @@ -83,9 +80,8 @@ public SimplePageableResponse<MyInterestResponseModel> queryAllMyInterests(Simpl
var resumeID = this.contextHolder.availableResumeID();
var interestCriteria = toCriteria(resumeID, null, null);
var myInterest = this.interestQueryRepositoryAdapter.queryAllMyInterests(interestCriteria, pageableRequest).stream()
.map(MyInterestResponseModel::of)
.toList();
return SimplePageableResponse.of(pageableRequest.getSize(), pageableRequest.getPage(), null, myInterest);
.map(MyInterestResponseModel::of).collect(Collectors.toList());
return convertResponse(myInterest, pageableRequest);
}

@Override
Expand All @@ -94,8 +90,8 @@ public SimplePageableResponse<SimpleMyInterestResponseModel> queryAllMySimpleInt
var interestCriteria = toCriteria(resumeID, null, null);
var myInterest = this.interestQueryRepositoryAdapter.queryAllMySimpleInterests(interestCriteria, pageableRequest).stream()
.map(SimpleMyInterestResponseModel::of)
.toList();
return SimplePageableResponse.of(pageableRequest.getSize(), pageableRequest.getPage(), null, myInterest);
.collect(Collectors.toList());
return convertResponse(myInterest, pageableRequest);
}


Expand All @@ -109,6 +105,14 @@ public InterestCriteria toCriteria(ResumeID resumeId, UUID id, List<AccessModifi
.accessModifier(modifier)
.build();

}

public SimplePageableResponse convertResponse(List list, SimplePageableRequest pageableRequest) {
boolean hasMore = list.size() > pageableRequest.getSize();
if (hasMore){
list.remove(list.size()-1);
}
return SimplePageableResponse.of(pageableRequest.getSize(), pageableRequest.getPage(), hasMore, list);

}
}
6 changes: 6 additions & 0 deletions library/rock-domain/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.intellibucket.ws</groupId>
<artifactId>validator4j</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package az.rock.lib.valueObject;


import com.intellibucket.ws.validation.annotation.Interval;

public class SimplePageableRequest {
private int page;
@Interval(min = 1,max = 100)
private int size;

public SimplePageableRequest(int page, int size) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.intellibucket.ws.validation.annotation;

import com.intellibucket.ws.validation.concretes.IntervalValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

@Documented
@Constraint(validatedBy = IntervalValidator.class)
@Target( { ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface Interval {
String message() default "F0000000010";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int min() default Integer.MIN_VALUE;
int max() default Integer.MAX_VALUE;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.intellibucket.ws.validation.concretes;

import com.intellibucket.ws.validation.annotation.Interval;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.util.Optional;

public class IntervalValidator implements ConstraintValidator<Interval, Integer> {
private int min;
private int max;

@Override
public void initialize(Interval constraintAnnotation) {
min = constraintAnnotation.min();
max = constraintAnnotation.max();
}

@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
return Optional.ofNullable(value)
.map(v -> v >= min && v <= max)
.orElse(true);
}
}
Loading