Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
templateService
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bazarbay Tulenov
templateService
Commits
f0ef0f59
Commit
f0ef0f59
authored
Jan 31, 2024
by
aimagambetov_an
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
issue-23 refactor tempalate/getAll
parent
8d1241ec
Pipeline
#380
failed with stage
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
62 additions
and
98 deletions
+62
-98
src/main/java/kz/project/printedFormsService/config/SecurityContextUtils.java
...ject/printedFormsService/config/SecurityContextUtils.java
+28
-18
src/main/java/kz/project/printedFormsService/controller/TemplateController.java
...ct/printedFormsService/controller/TemplateController.java
+2
-1
src/main/java/kz/project/printedFormsService/data/dto/TemplateShortDto.java
...roject/printedFormsService/data/dto/TemplateShortDto.java
+15
-6
src/main/java/kz/project/printedFormsService/data/repository/TemplateJdbcRepository.java
...dFormsService/data/repository/TemplateJdbcRepository.java
+0
-61
src/main/java/kz/project/printedFormsService/data/repository/TemplateRepository.java
...intedFormsService/data/repository/TemplateRepository.java
+4
-0
src/main/java/kz/project/printedFormsService/service/TemplateService.java
.../project/printedFormsService/service/TemplateService.java
+1
-0
src/main/java/kz/project/printedFormsService/service/impl/TemplateServiceImpl.java
...printedFormsService/service/impl/TemplateServiceImpl.java
+12
-12
No files found.
src/main/java/kz/project/printedFormsService/config/SecurityContextUtils.java
View file @
f0ef0f59
...
...
@@ -2,8 +2,10 @@ package kz.project.printedFormsService.config;
import
kz.project.printedFormsService.exception.AccessDeniedException
;
import
lombok.experimental.UtilityClass
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.oauth2.jwt.Jwt
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -34,25 +36,33 @@ public class SecurityContextUtils {
}
public
static
Map
<
String
,
List
<
String
>>
getProjectRoleMap
()
{
Authentication
authentication
=
SecurityContextHolder
.
getContext
().
getAuthentication
();
return
SecurityContextHolder
.
getContext
()
.
getAuthentication
()
.
getAuthorities
()
.
stream
()
.
map
(
GrantedAuthority:
:
getAuthority
)
.
map
(
role
->
role
.
replace
(
"ROLE_"
,
""
))
.
filter
(
role
->
role
.
contains
(
PROJECT_ROLE_SPLITTER
))
.
filter
(
role
->
!
role
.
contains
(
"gitlab_"
))
.
collect
(
Collectors
.
toMap
(
role
->
role
.
split
(
PROJECT_ROLE_SPLITTER
)[
0
],
role
->
new
ArrayList
<>(
List
.
of
(
role
.
split
(
PROJECT_ROLE_SPLITTER
)[
1
])),
(
existing
,
addition
)
->
{
existing
.
addAll
(
addition
);
return
existing
;
}
)
);
if
(
authentication
!=
null
&&
authentication
.
getPrincipal
()
instanceof
Jwt
jwt
)
{
// Access resource_access claims
Map
<
String
,
Object
>
resourceAccess
=
jwt
.
getClaim
(
"resource_access"
);
// Extract roles or permissions from resource_access
if
(
resourceAccess
!=
null
&&
resourceAccess
.
containsKey
(
"print_form"
))
{
Map
<
String
,
Object
>
yourResourceAccess
=
(
Map
<
String
,
Object
>)
resourceAccess
.
get
(
"print_form"
);
// Extract roles from yourResourceAccess
if
(
yourResourceAccess
!=
null
&&
yourResourceAccess
.
containsKey
(
"roles"
))
{
List
<
String
>
roles
=
(
List
<
String
>)
yourResourceAccess
.
get
(
"roles"
);
return
roles
.
stream
().
collect
(
Collectors
.
toMap
(
role
->
role
.
split
(
PROJECT_ROLE_SPLITTER
)[
0
],
role
->
new
ArrayList
<>(
List
.
of
(
role
.
split
(
PROJECT_ROLE_SPLITTER
)[
1
])),
(
existing
,
addition
)
->
{
existing
.
addAll
(
addition
);
return
existing
;
}
)
);
}
}
}
return
null
;
}
public
static
String
getGitlabProjectBranchFromRole
()
{
...
...
src/main/java/kz/project/printedFormsService/controller/TemplateController.java
View file @
f0ef0f59
...
...
@@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -275,7 +276,7 @@ public class TemplateController {
try
{
processLogger
.
start
(
TemplateController
.
class
,
new
Throwable
().
getStackTrace
()[
0
].
getMethodName
(),
"Получение списка шаблонов"
);
Page
<
TemplateShortDto
>
allTemplates
=
service
.
getAllTemplate
(
isActive
,
PageRequest
.
of
(
page
,
size
),
search
);
Page
<
TemplateShortDto
>
allTemplates
=
service
.
getAllTemplate
(
isActive
,
PageRequest
.
of
(
page
,
size
,
Sort
.
Direction
.
ASC
,
"id"
),
search
);
processLogger
.
finish
(
TemplateController
.
class
,
new
Throwable
().
getStackTrace
()[
0
].
getMethodName
(),
"Получение списка шаблонов"
);
return
ResponseEntity
.
ok
(
allTemplates
);
}
catch
(
Exception
e
)
{
...
...
src/main/java/kz/project/printedFormsService/data/dto/TemplateShortDto.java
View file @
f0ef0f59
...
...
@@ -10,9 +10,11 @@ import lombok.NoArgsConstructor;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@Data
@Builder
...
...
@@ -43,7 +45,11 @@ public class TemplateShortDto {
@Schema
(
name
=
"version"
,
description
=
"Версия активности"
)
private
Integer
version
;
public
static
TemplateShortDto
toDto
(
TemplateEntity
te
)
{
@NotBlank
@Schema
(
name
=
"rights"
,
description
=
"Права в проекте"
)
private
List
<
String
>
rights
;
public
static
TemplateShortDto
toDto
(
TemplateEntity
te
,
List
<
String
>
projectRoleMap
)
{
return
TemplateShortDto
.
builder
()
.
templateId
(
te
.
getId
())
.
name
(
te
.
getName
())
...
...
@@ -52,15 +58,18 @@ public class TemplateShortDto {
.
project
(
te
.
getProject
())
.
type
(
te
.
getType
().
getCode
())
.
version
(
te
.
getVersion
())
.
rights
(
projectRoleMap
)
.
build
();
}
public
static
Page
<
TemplateShortDto
>
toDtoList
(
Page
<
TemplateEntity
>
all
)
{
if
(
all
.
getContent
()==
null
)
return
null
;
public
static
Page
<
TemplateShortDto
>
toDtoList
(
Page
<
TemplateEntity
>
all
,
Map
<
String
,
List
<
String
>>
projectRoleMap
)
{
List
<
TemplateShortDto
>
dtos
=
new
ArrayList
<>();
for
(
TemplateEntity
te:
all
.
getContent
())
{
dtos
.
add
(
TemplateShortDto
.
toDto
(
te
));
if
(
all
!=
null
)
{
for
(
TemplateEntity
te
:
all
.
getContent
())
{
dtos
.
add
(
TemplateShortDto
.
toDto
(
te
,
projectRoleMap
.
get
(
te
.
getProject
())));
}
all
.
getTotalElements
();
}
return
new
PageImpl
<>(
dtos
,
PageRequest
.
of
(
all
.
getNumber
(),
all
.
getSize
()),
all
.
getTotalElements
());
return
new
PageImpl
<>(
dtos
,
all
.
getPageable
(),
all
.
getTotalElements
());
}
}
src/main/java/kz/project/printedFormsService/data/repository/TemplateJdbcRepository.java
deleted
100644 → 0
View file @
8d1241ec
package
kz.project.printedFormsService.data.repository
;
import
kz.project.printedFormsService.data.entity.TemplateEntity
;
import
kz.project.printedFormsService.data.entity.dict.DTemplateType
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
@RequiredArgsConstructor
public
class
TemplateJdbcRepository
{
private
final
JdbcTemplate
jdbcTemplate
;
public
Page
<
TemplateEntity
>
findAllByStatusAndFilter
(
Boolean
isActive
,
Pageable
pageable
,
String
search
,
List
<
String
>
projects
)
{
StringBuilder
inClause
=
new
StringBuilder
(
"t.project IN (?"
);
inClause
.
append
(
", ?"
.
repeat
(
Math
.
max
(
0
,
projects
.
size
()
-
1
)));
inClause
.
append
(
")"
);
String
sql
=
"SELECT t.*, type.id as typeId, type.code as typeCode, type.name as typeName FROM template_schema.template t "
+
"INNER JOIN template_schema.d_template_type type ON t.type_id = type.id "
+
"WHERE "
+
inClause
;
if
(
isActive
!=
null
)
{
sql
+=
" AND t.status = "
+
isActive
;
}
if
(
search
!=
null
)
{
sql
+=
" AND (t.code = '"
+
search
+
"' OR t.name = '"
+
search
+
"')"
;
}
sql
+=
" LIMIT ? OFFSET ?"
;
Object
[]
queryParams
=
projects
.
toArray
();
Object
[]
additionalParams
=
{
pageable
.
getPageSize
(),
pageable
.
getOffset
()};
Object
[]
allParams
=
ArrayUtils
.
addAll
(
queryParams
,
additionalParams
);
List
<
TemplateEntity
>
result
=
jdbcTemplate
.
query
(
sql
,
allParams
,
(
rs
,
rowNum
)
->
{
DTemplateType
type
=
new
DTemplateType
();
type
.
setId
(
rs
.
getLong
(
"typeId"
));
type
.
setCode
(
rs
.
getString
(
"typeCode"
));
type
.
setName
(
rs
.
getString
(
"typeName"
));
TemplateEntity
templateEntity
=
new
TemplateEntity
();
templateEntity
.
setId
(
rs
.
getLong
(
"id"
));
templateEntity
.
setCode
(
rs
.
getString
(
"code"
));
templateEntity
.
setName
(
rs
.
getString
(
"name"
));
templateEntity
.
setStatus
(
rs
.
getBoolean
(
"status"
));
templateEntity
.
setProject
(
rs
.
getString
(
"project"
));
templateEntity
.
setVersion
(
rs
.
getInt
(
"version"
));
templateEntity
.
setType
(
type
);
return
templateEntity
;
});
return
new
PageImpl
<>(
result
,
pageable
,
100L
);
}
}
src/main/java/kz/project/printedFormsService/data/repository/TemplateRepository.java
View file @
f0ef0f59
...
...
@@ -6,12 +6,16 @@ import org.springframework.data.domain.Pageable;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Optional
;
@Repository
public
interface
TemplateRepository
extends
JpaRepository
<
TemplateEntity
,
Long
>
{
Optional
<
TemplateEntity
>
findByCode
(
String
code
);
Page
<
TemplateEntity
>
findByCodeContainingIgnoreCaseOrNameContainingIgnoreCaseAndStatusAndProjectIsIn
(
String
code
,
String
name
,
Boolean
status
,
List
<
String
>
projects
,
Pageable
pageable
);
Page
<
TemplateEntity
>
findByStatusAndProjectIsIn
(
Boolean
status
,
List
<
String
>
projects
,
Pageable
pageable
);
Page
<
TemplateEntity
>
findAllByStatusTrue
(
Pageable
pageable
);
Page
<
TemplateEntity
>
findAllByStatusFalse
(
Pageable
pageable
);
...
...
src/main/java/kz/project/printedFormsService/service/TemplateService.java
View file @
f0ef0f59
...
...
@@ -7,6 +7,7 @@ import kz.project.printedFormsService.data.dto.TemplateShortDto;
import
kz.project.printedFormsService.data.entity.TemplateEntity
;
import
kz.project.printedFormsService.exception.ValidationException
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
src/main/java/kz/project/printedFormsService/service/impl/TemplateServiceImpl.java
View file @
f0ef0f59
...
...
@@ -24,14 +24,10 @@ import org.springframework.web.multipart.MultipartFile;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
public
class
TemplateServiceImpl
implements
TemplateService
{
private
final
TemplateRepository
repository
;
private
final
TemplateJdbcRepository
templateJdbcRepository
;
private
final
TemplateVersionRepository
versionRepository
;
private
final
DTemplateTypeRepository
dTemplateTypeRepository
;
...
...
@@ -40,14 +36,12 @@ public class TemplateServiceImpl implements TemplateService {
private
ProcessLogger
processLogger
;
public
TemplateServiceImpl
(
TemplateRepository
repository
,
TemplateJdbcRepository
templateJdbcRepository
,
TemplateVersionRepository
versionRepository
,
DTemplateTypeRepository
dTemplateTypeRepository
,
TemplateFileInfoRepository
fileInfoRepository
,
DocumentRepository
documentRepository
,
ProcessLogger
processLogger
)
{
this
.
repository
=
repository
;
this
.
templateJdbcRepository
=
templateJdbcRepository
;
this
.
versionRepository
=
versionRepository
;
this
.
dTemplateTypeRepository
=
dTemplateTypeRepository
;
this
.
fileInfoRepository
=
fileInfoRepository
;
...
...
@@ -134,12 +128,18 @@ public class TemplateServiceImpl implements TemplateService {
public
Page
<
TemplateShortDto
>
getAllTemplate
(
Boolean
isActive
,
Pageable
pageable
,
String
search
)
{
Map
<
String
,
List
<
String
>>
projectRoleMap
=
SecurityContextUtils
.
getProjectRoleMap
();
List
<
String
>
valuesToCheck
=
Arrays
.
asList
(
"creator"
,
"editor"
,
"delete"
,
"admin"
);
List
<
String
>
projects
=
projectRoleMap
.
entrySet
()
.
stream
()
.
filter
(
entry
->
valuesToCheck
.
stream
().
anyMatch
(
entry
.
getValue
()::
contains
))
.
map
(
Map
.
Entry
::
getKey
)
.
toList
();
return
TemplateShortDto
.
toDtoList
(
templateJdbcRepository
.
findAllByStatusAndFilter
(
isActive
,
pageable
,
search
,
projects
));
List
<
String
>
projects
=
new
ArrayList
<>();
if
(
projectRoleMap
!=
null
)
{
projects
=
projectRoleMap
.
entrySet
()
.
stream
()
.
filter
(
entry
->
valuesToCheck
.
stream
().
anyMatch
(
entry
.
getValue
()::
contains
))
.
map
(
Map
.
Entry
::
getKey
)
.
toList
();
}
if
(
search
!=
null
)
{
return
TemplateShortDto
.
toDtoList
(
repository
.
findByCodeContainingIgnoreCaseOrNameContainingIgnoreCaseAndStatusAndProjectIsIn
(
search
,
search
,
isActive
,
projects
,
pageable
),
projectRoleMap
);
}
return
TemplateShortDto
.
toDtoList
(
repository
.
findByStatusAndProjectIsIn
(
isActive
,
projects
,
pageable
),
projectRoleMap
);
}
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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