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
e02a3aa9
Commit
e02a3aa9
authored
May 18, 2022
by
Jiri Novotny
Browse files
Add User Entity
parent
cf95dea6
Pipeline
#140834
passed with stage
in 2 minutes and 5 seconds
Changes
9
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
ssa-api/src/main/java/cz/muni/fi/pa165/dto/UserProfileDto.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.dto
;
import
cz.muni.fi.pa165.enums.UserRole
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
UserProfileDto
{
private
Long
id
;
private
String
email
;
private
String
passwordHash
;
private
String
nickName
;
private
AgentNameDto
agent
;
private
UserRole
role
;
}
ssa-api/src/main/java/cz/muni/fi/pa165/enums/UserRole.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.enums
;
public
enum
UserRole
{
ADMIN
,
AGENT
}
ssa-api/src/main/java/cz/muni/fi/pa165/facade/AppUserFacade.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.facade
;
import
cz.muni.fi.pa165.dto.UserProfileDto
;
public
interface
AppUserFacade
{
UserProfileDto
getUser
(
long
userId
);
UserProfileDto
getUserByNickname
(
String
nickname
);
}
ssa-persistence/src/main/java/cz/muni/fi/pa165/entity/AppUser.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.entity
;
import
cz.muni.fi.pa165.enums.UserRole
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
java.util.Objects
;
/**
* @author Jiri Novotny, 485486
*/
@Entity
@Getter
@Setter
public
class
AppUser
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
unique
=
true
)
private
String
email
;
@Column
(
nullable
=
false
)
private
String
passwordHash
;
@Column
(
nullable
=
false
,
unique
=
true
)
private
String
nickname
;
@JoinColumn
(
name
=
"agent_id"
)
@ManyToOne
private
Agent
agent
;
@Enumerated
private
UserRole
role
;
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
AppUser
))
return
false
;
AppUser
appUser
=
(
AppUser
)
o
;
return
getEmail
().
equals
(
appUser
.
getEmail
())
&&
this
.
getNickname
().
equals
(
appUser
.
getNickname
())
&&
getRole
()
==
appUser
.
getRole
();
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
getEmail
(),
this
.
getNickname
(),
getRole
());
}
}
ssa-persistence/src/main/java/cz/muni/fi/pa165/enums/UserRole.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.enums
;
public
enum
UserRole
{
ADMIN
,
AGENT
}
ssa-persistence/src/main/java/cz/muni/fi/pa165/repository/AppUserRepository.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.repository
;
import
cz.muni.fi.pa165.entity.AppUser
;
import
cz.muni.fi.pa165.entity.Skill
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
/**
* @author Jiri Novotny, 485486
*/
public
interface
AppUserRepository
extends
JpaRepository
<
AppUser
,
Long
>
{
@Query
(
"SELECT au FROM AppUser au WHERE au.nickname = :nickname"
)
AppUser
findByNickname
(
String
nickname
);
}
ssa-service/src/main/java/cz/muni/fi/pa165/config/UserProfileMapper.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.config
;
import
cz.muni.fi.pa165.dto.UserProfileDto
;
import
cz.muni.fi.pa165.entity.AppUser
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
UserProfileMapper
{
AppUser
map
(
UserProfileDto
source
);
UserProfileDto
map
(
AppUser
destination
);
}
ssa-service/src/main/java/cz/muni/fi/pa165/facade/AppUserFacadeImpl.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.facade
;
import
cz.muni.fi.pa165.config.UserProfileMapper
;
import
cz.muni.fi.pa165.dto.UserProfileDto
;
import
cz.muni.fi.pa165.entity.AppUser
;
import
cz.muni.fi.pa165.service.AppUserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* @author Jiri Novotny, 485476
*/
@Service
public
class
AppUserFacadeImpl
implements
AppUserFacade
{
private
final
AppUserService
appUserService
;
private
final
UserProfileMapper
userProfileMapper
;
@Autowired
public
AppUserFacadeImpl
(
AppUserService
appUserService
,
UserProfileMapper
userProfileMapper
)
{
this
.
appUserService
=
appUserService
;
this
.
userProfileMapper
=
userProfileMapper
;
}
@Override
public
UserProfileDto
getUser
(
long
userId
)
{
AppUser
appUser
=
appUserService
.
findById
(
userId
);
return
userProfileMapper
.
map
(
appUser
);
}
@Override
public
UserProfileDto
getUserByNickname
(
String
nickname
)
{
AppUser
appUser
=
appUserService
.
findByNickname
(
nickname
);
return
userProfileMapper
.
map
(
appUser
);
}
}
ssa-service/src/main/java/cz/muni/fi/pa165/service/AppUserService.java
0 → 100644
View file @
e02a3aa9
package
cz.muni.fi.pa165.service
;
import
cz.muni.fi.pa165.entity.Agent
;
import
cz.muni.fi.pa165.entity.AppUser
;
import
cz.muni.fi.pa165.entity.Skill
;
import
cz.muni.fi.pa165.entity.Training
;
import
cz.muni.fi.pa165.repository.AppUserRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author Jiri Novotny, 485486
*/
@Service
public
class
AppUserService
{
private
final
AppUserRepository
appUserRepository
;
@Autowired
public
AppUserService
(
AppUserRepository
appUserRepository
)
{
this
.
appUserRepository
=
appUserRepository
;
}
public
AppUser
findById
(
Long
id
)
{
return
appUserRepository
.
findById
(
id
).
orElse
(
null
);
}
public
AppUser
findByNickname
(
String
nickname
)
{
return
appUserRepository
.
findByNickname
(
nickname
);
}
public
Page
<
AppUser
>
findAll
(
Pageable
page
)
{
return
appUserRepository
.
findAll
(
page
);
}
public
List
<
AppUser
>
findAll
()
{
return
appUserRepository
.
findAll
();
}
public
Page
<
AppUser
>
findAllByAgent
(
Agent
agent
,
Pageable
page
)
{
List
<
AppUser
>
agents
=
appUserRepository
.
findAll
();
List
<
AppUser
>
filtered
=
agents
.
stream
()
.
filter
(
appUser
->
appUser
.
getAgent
().
equals
(
agent
))
.
collect
(
Collectors
.
toList
());
return
createPage
(
filtered
,
page
);
}
public
Long
create
(
AppUser
appUser
)
{
return
appUserRepository
.
save
(
appUser
).
getId
();
}
public
void
update
(
AppUser
appUser
)
{
appUserRepository
.
save
(
appUser
);
}
public
void
delete
(
AppUser
appUser
)
{
appUserRepository
.
delete
(
appUser
);
}
public
void
delete
(
Long
id
)
{
appUserRepository
.
deleteById
(
id
);
}
private
Page
<
AppUser
>
createPage
(
List
<
AppUser
>
appUsers
,
Pageable
pageable
)
{
final
int
start
=
(
int
)
pageable
.
getOffset
();
final
int
end
=
Math
.
min
((
start
+
pageable
.
getPageSize
()),
appUsers
.
size
());
return
new
PageImpl
<>(
appUsers
.
subList
(
start
,
end
),
pageable
,
appUsers
.
size
());
}
}
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