Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Samuel Kulíšek
pa165-secret-service-archive
Commits
cf5ffaa5
Commit
cf5ffaa5
authored
May 17, 2022
by
Samuel Kulisek
Browse files
Add findByAgentId to AgentMissionAssignment repository, Update facade and service
parent
5ee39d5d
Pipeline
#140655
passed with stage
in 1 minute and 28 seconds
Changes
4
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
ssa-persistence/src/main/java/cz/muni/fi/pa165/repository/AgentMissionAssignmentRepository.java
View file @
cf5ffaa5
package
cz.muni.fi.pa165.repository
;
import
cz.muni.fi.pa165.entity.AgentMissionAssignment
;
import
cz.muni.fi.pa165.entity.Skill
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
public
interface
AgentMissionAssignmentRepository
extends
JpaRepository
<
AgentMissionAssignment
,
Long
>
{
@Query
(
"SELECT ama FROM AgentMissionAssignment ama WHERE ama.mission = :mission"
)
Page
<
AgentMissionAssignment
>
findByMissionId
(
Long
mission
,
Pageable
page
);
@Query
(
"SELECT ama FROM AgentMissionAssignment ama WHERE ama.agent = :agent"
)
Page
<
AgentMissionAssignment
>
findByAgentId
(
Long
agent
,
Pageable
page
);
}
ssa-service/src/main/java/cz/muni/fi/pa165/facade/MissionFacadeImpl.java
View file @
cf5ffaa5
...
...
@@ -5,7 +5,9 @@ import cz.muni.fi.pa165.config.MissionListMapper;
import
cz.muni.fi.pa165.dto.MissionDetailDto
;
import
cz.muni.fi.pa165.dto.MissionListDto
;
import
cz.muni.fi.pa165.entity.Agent
;
import
cz.muni.fi.pa165.entity.AgentMissionAssignment
;
import
cz.muni.fi.pa165.entity.Mission
;
import
cz.muni.fi.pa165.service.AgentMissionAssignmentService
;
import
cz.muni.fi.pa165.service.MissionService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
...
...
@@ -23,40 +25,30 @@ import java.util.stream.Collectors;
@Service
public
class
MissionFacadeImpl
implements
MissionFacade
{
private
final
MissionService
missionService
;
private
final
AgentMissionAssignmentService
agentMissionAssignmentService
;
private
final
MissionListMapper
missionListMapper
;
private
final
MissionDetailMapper
missionDetailMapper
;
@Autowired
public
MissionFacadeImpl
(
MissionService
missionService
,
MissionListMapper
missionListMapper
,
MissionDetailMapper
missionDetailMapper
)
{
public
MissionFacadeImpl
(
MissionService
missionService
,
AgentMissionAssignmentService
agentMissionAssignmentService
,
MissionListMapper
missionListMapper
,
MissionDetailMapper
missionDetailMapper
)
{
this
.
missionService
=
missionService
;
this
.
agentMissionAssignmentService
=
agentMissionAssignmentService
;
this
.
missionListMapper
=
missionListMapper
;
this
.
missionDetailMapper
=
missionDetailMapper
;
}
@Override
public
Page
<
MissionListDto
>
getAgentMissions
(
Long
agentId
,
int
page
,
int
pageSize
)
{
List
<
Mission
>
missions
=
missionService
.
findAll
();
List
<
MissionListDto
>
filtered
=
missions
Pageable
pageable
=
PageRequest
.
of
(
page
,
pageSize
);
Page
<
AgentMissionAssignment
>
assignments
=
agentMissionAssignmentService
.
findByAgentId
(
agentId
,
pageable
);
List
<
MissionListDto
>
missionListDtos
=
assignments
.
map
(
e
->
missionListMapper
.
map
(
e
.
getMission
()))
.
stream
()
.
filter
(
mission
->
{
List
<
Long
>
agentIds
=
mission
.
getAssignments
()
.
stream
()
.
map
(
agentMissionAssignment
->
agentMissionAssignment
.
getAgent
().
getId
())
.
collect
(
Collectors
.
toList
());
return
agentIds
.
contains
(
agentId
);
})
.
map
(
missionListMapper:
:
map
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
Pageable
pageable
=
PageRequest
.
of
(
page
,
pageSize
);
final
int
start
=
(
int
)
pageable
.
getOffset
();
final
int
end
=
Math
.
min
((
start
+
pageable
.
getPageSize
()),
filtered
.
size
());
return
new
PageImpl
<>(
filtered
.
subList
(
start
,
end
),
pageable
,
filtered
.
size
());
return
new
PageImpl
<
MissionListDto
>(
missionListDtos
);
}
@Override
...
...
ssa-service/src/main/java/cz/muni/fi/pa165/service/AgentMissionAssignmentService.java
View file @
cf5ffaa5
...
...
@@ -27,6 +27,14 @@ public class AgentMissionAssignmentService {
return
agentMissionAssignmentRepository
.
findAll
(
page
);
}
public
Page
<
AgentMissionAssignment
>
findByMissionId
(
Long
missionId
,
Pageable
page
)
{
return
agentMissionAssignmentRepository
.
findByMissionId
(
missionId
,
page
);
}
public
Page
<
AgentMissionAssignment
>
findByAgentId
(
Long
agentId
,
Pageable
page
)
{
return
agentMissionAssignmentRepository
.
findByAgentId
(
agentId
,
page
);
}
public
Long
create
(
AgentMissionAssignment
agentMissionAssignment
)
{
return
agentMissionAssignmentRepository
.
save
(
agentMissionAssignment
).
getId
();
}
...
...
ssa-service/src/test/java/cz/muni/fi/pa165/facade/MissionFacadeTest.java
View file @
cf5ffaa5
...
...
@@ -12,17 +12,22 @@ import cz.muni.fi.pa165.entity.AgentMissionAssignment;
import
cz.muni.fi.pa165.entity.Country
;
import
cz.muni.fi.pa165.entity.Mission
;
import
cz.muni.fi.pa165.enums.Continent
;
import
cz.muni.fi.pa165.service.AgentMissionAssignmentService
;
import
cz.muni.fi.pa165.service.MissionService
;
import
org.junit.jupiter.api.Assertions
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.extension.ExtendWith
;
import
org.mapstruct.factory.Mappers
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.junit.jupiter.MockitoExtension
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.mock.mockito.MockBean
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
java.sql.Date
;
import
java.time.LocalDate
;
...
...
@@ -38,6 +43,8 @@ public class MissionFacadeTest {
@MockBean
private
MissionService
missionService
;
@MockBean
private
AgentMissionAssignmentService
agentMissionAssignmentService
;
private
final
MissionDetailMapper
missionDetailMapper
=
Mappers
.
getMapper
(
MissionDetailMapper
.
class
);
private
final
MissionListMapper
missionListMapper
=
Mappers
.
getMapper
(
MissionListMapper
.
class
);
...
...
@@ -124,6 +131,9 @@ public class MissionFacadeTest {
missions
.
add
(
mission2
);
Mockito
.
when
(
missionService
.
findAll
()).
thenReturn
(
missions
);
Page
<
AgentMissionAssignment
>
assignments
=
new
PageImpl
<
AgentMissionAssignment
>(
List
.
of
(
assignment1
,
assignment2
));
Mockito
.
when
(
agentMissionAssignmentService
.
findByAgentId
(
cassette
.
getId
(),
PageRequest
.
of
(
0
,
10
))).
thenReturn
(
assignments
);
List
<
MissionListDto
>
missionsDtos
=
new
ArrayList
<>();
MissionListDto
missionListDto1
=
new
MissionListDto
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment