Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
userRoleHandler
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Aleksey
userRoleHandler
Commits
fa0f6142
Commit
fa0f6142
authored
Oct 24, 2020
by
Alex
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add showing and deleting users functional
parent
5fc4f4eb
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
374 additions
and
22 deletions
+374
-22
pom.xml
pom.xml
+11
-6
UserRoleHandlerApplication.java
src/main/java/com/yagudza/UserRoleHandlerApplication.java
+7
-0
UserController.java
src/main/java/com/yagudza/controller/UserController.java
+35
-0
Role.java
src/main/java/com/yagudza/domain/Role.java
+7
-5
User.java
src/main/java/com/yagudza/domain/User.java
+87
-0
UserDto.java
src/main/java/com/yagudza/dto/UserDto.java
+46
-0
UsersDto.java
src/main/java/com/yagudza/dto/UsersDto.java
+32
-0
ControllerExceptionHandler.java
...va/com/yagudza/exceptions/ControllerExceptionHandler.java
+20
-0
UserNotFoundException.java
...in/java/com/yagudza/exceptions/UserNotFoundException.java
+4
-0
RoleRepository.java
src/main/java/com/yagudza/repository/RoleRepository.java
+8
-0
UserRepository.java
src/main/java/com/yagudza/repository/UserRepository.java
+18
-0
RoleService.java
src/main/java/com/yagudza/servise/RoleService.java
+7
-0
RoleServiceImpl.java
src/main/java/com/yagudza/servise/RoleServiceImpl.java
+4
-0
UserService.java
src/main/java/com/yagudza/servise/UserService.java
+16
-0
UserServiceImpl.java
src/main/java/com/yagudza/servise/UserServiceImpl.java
+46
-0
application.properties
src/main/resources/application.properties
+11
-11
data.sql
src/main/resources/data.sql
+15
-0
No files found.
pom.xml
View file @
fa0f6142
...
...
@@ -28,15 +28,20 @@
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
com.h2database
</groupId>
<artifactId>
h2
</artifactId>
<scope>
runtime
</scope>
</dependency>
<!-- <dependency>-->
<!--
<groupId>com.h2database
</groupId>-->
<!--
<artifactId>h2
</artifactId>-->
<!--
<scope>runtime</scope
>-->
<!--
<groupId>mysql
</groupId>-->
<!--
<artifactId>mysql-connector-java
</artifactId>-->
<!--
<version>8.0.21</version
>-->
<!-- </dependency>-->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.21
</version>
<groupId>
org.modelmapper
</groupId>
<artifactId>
modelmapper
</artifactId>
<version>
0.7.5
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
...
...
src/main/java/com/yagudza/UserRoleHandlerApplication.java
View file @
fa0f6142
package
com
.
yagudza
;
import
org.modelmapper.ModelMapper
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.annotation.Bean
;
@SpringBootApplication
public
class
UserRoleHandlerApplication
{
...
...
@@ -9,4 +11,9 @@ public class UserRoleHandlerApplication {
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
UserRoleHandlerApplication
.
class
,
args
);
}
@Bean
public
ModelMapper
modelMapper
()
{
return
new
ModelMapper
();
}
}
src/main/java/com/yagudza/controller/UserController.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
controller
;
import
com.yagudza.dto.UserDto
;
import
com.yagudza.dto.UsersDto
;
import
com.yagudza.servise.UserService
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
@RestController
public
class
UserController
{
private
final
UserService
userService
;
public
UserController
(
UserService
userService
)
{
this
.
userService
=
userService
;
}
@GetMapping
(
"/showUsers"
)
public
ResponseEntity
<
Iterable
<
UsersDto
>>
showUsers
()
{
return
ResponseEntity
.
ok
(
userService
.
findAll
());
}
@GetMapping
(
"/show/{login}"
)
public
ResponseEntity
<
UserDto
>
showUserByLogin
(
@PathVariable
(
"login"
)
String
login
)
{
return
ResponseEntity
.
ok
(
userService
.
findById
(
login
));
}
@DeleteMapping
(
"/delete/{login}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
void
deleteUserByLogin
(
@PathVariable
(
"login"
)
String
login
)
{
userService
.
deleteById
(
login
);
}
}
src/main/java/com/yagudza/domain/Role
s
.java
→
src/main/java/com/yagudza/domain/Role.java
View file @
fa0f6142
package
com
.
yagudza
.
domain
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.*
;
import
java.util.HashSet
;
import
java.util.Set
;
@Entity
public
class
Role
s
{
public
class
Role
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
long
id
;
String
name
;
@ManyToMany
(
mappedBy
=
"roles"
,
fetch
=
FetchType
.
LAZY
)
Set
<
User
>
userSet
=
new
HashSet
<>();
public
long
getId
()
{
return
id
;
}
...
...
src/main/java/com/yagudza/domain/User
s
.java
→
src/main/java/com/yagudza/domain/User.java
View file @
fa0f6142
package
com
.
yagudza
.
domain
;
import
javax.persistence.*
;
import
java.util.List
;
import
java.util.HashSet
;
import
java.util.Objects
;
import
java.util.Set
;
@Entity
public
class
Users
{
public
class
User
{
@Column
(
nullable
=
false
)
private
String
name
;
@Id
@Column
(
nullable
=
false
)
private
String
login
;
@Column
(
nullable
=
false
)
private
String
password
;
@ManyToMany
(
cascade
=
CascadeType
.
ALL
,
fetch
=
FetchType
.
EAGER
)
@JoinTable
(
name
=
"user_roles"
,
@ManyToMany
(
cascade
=
CascadeType
.
MERGE
,
fetch
=
FetchType
.
LAZY
)
@JoinTable
(
name
=
"user_role"
,
uniqueConstraints
=
{
@UniqueConstraint
(
columnNames
=
{
"user_login"
,
"role_id"
})},
joinColumns
=
{
@JoinColumn
(
name
=
"user_login"
,
referencedColumnName
=
"login"
)}
,
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)
})
private
List
<
Roles
>
roles
;
private
Set
<
Role
>
roles
;
// = new HashSet<>();
public
List
<
Roles
>
getRoles
()
{
public
Set
<
Role
>
getRoles
()
{
return
roles
;
}
public
void
setRoles
(
List
<
Roles
>
roles
)
{
public
void
setRoles
(
Set
<
Role
>
roles
)
{
this
.
roles
=
roles
;
}
public
String
getName
()
{
return
name
;
}
...
...
@@ -54,4 +58,30 @@ public class Users {
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
@Override
public
String
toString
()
{
return
"User{"
+
"name='"
+
name
+
'\''
+
", login='"
+
login
+
'\''
+
", password='"
+
password
+
'\''
+
", roles="
+
roles
+
'}'
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
User
user
=
(
User
)
o
;
return
Objects
.
equals
(
name
,
user
.
name
)
&&
Objects
.
equals
(
login
,
user
.
login
)
&&
Objects
.
equals
(
password
,
user
.
password
)
&&
Objects
.
equals
(
roles
,
user
.
roles
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
name
,
login
,
password
,
roles
);
}
}
src/main/java/com/yagudza/dto/UserDto.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
dto
;
import
com.yagudza.domain.Role
;
import
javax.persistence.*
;
import
java.util.Set
;
public
class
UserDto
{
private
String
name
;
private
String
login
;
private
String
password
;
private
Set
<
Role
>
roles
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getLogin
()
{
return
login
;
}
public
void
setLogin
(
String
login
)
{
this
.
login
=
login
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
Set
<
Role
>
getRoles
()
{
return
roles
;
}
public
void
setRoles
(
Set
<
Role
>
roles
)
{
this
.
roles
=
roles
;
}
}
src/main/java/com/yagudza/dto/UsersDto.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
dto
;
public
class
UsersDto
{
private
String
name
;
private
String
login
;
private
String
password
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getLogin
()
{
return
login
;
}
public
void
setLogin
(
String
login
)
{
this
.
login
=
login
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
}
src/main/java/com/yagudza/exceptions/ControllerExceptionHandler.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
exceptions
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.converter.HttpMessageNotReadableException
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
@ControllerAdvice
public
class
ControllerExceptionHandler
{
private
final
String
NO_USER
=
"There is no such user"
;
@ExceptionHandler
(
UserNotFoundException
.
class
)
public
ResponseEntity
<
String
>
userNotFound
()
{
return
new
ResponseEntity
<>(
NO_USER
,
new
HttpHeaders
(),
HttpStatus
.
NO_CONTENT
);
}
}
src/main/java/com/yagudza/exceptions/UserNotFoundException.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
exceptions
;
public
class
UserNotFoundException
extends
RuntimeException
{
}
src/main/java/com/yagudza/repository/RoleRepository.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
repository
;
import
com.yagudza.domain.Role
;
import
org.springframework.data.repository.CrudRepository
;
public
interface
RoleRepository
extends
CrudRepository
<
Role
,
Long
>
{
}
src/main/java/com/yagudza/repository/UserRepository.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
repository
;
import
com.yagudza.domain.User
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.CrudRepository
;
import
java.util.Optional
;
public
interface
UserRepository
extends
CrudRepository
<
User
,
String
>
{
@Query
(
nativeQuery
=
true
,
value
=
"select u.login, u.name, u.password from User u "
)
Iterable
<
User
>
findAll
();
@Query
(
nativeQuery
=
true
,
value
=
"select u.login, u.name, u.password from User u where u.login = ?1"
)
Optional
<
User
>
findById
(
String
var
);
}
src/main/java/com/yagudza/servise/RoleService.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
servise
;
import
org.springframework.stereotype.Service
;
@Service
public
interface
RoleService
{
}
src/main/java/com/yagudza/servise/RoleServiceImpl.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
servise
;
public
class
RoleServiceImpl
{
}
src/main/java/com/yagudza/servise/UserService.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
servise
;
import
com.yagudza.dto.UserDto
;
import
com.yagudza.dto.UsersDto
;
import
org.springframework.stereotype.Service
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedList
;
@Service
public
interface
UserService
{
Iterable
<
UsersDto
>
findAll
();
UserDto
findById
(
String
login
);
void
deleteById
(
String
login
);
}
src/main/java/com/yagudza/servise/UserServiceImpl.java
0 → 100644
View file @
fa0f6142
package
com
.
yagudza
.
servise
;
import
com.yagudza.domain.User
;
import
com.yagudza.dto.UserDto
;
import
com.yagudza.dto.UsersDto
;
import
com.yagudza.exceptions.UserNotFoundException
;
import
com.yagudza.repository.UserRepository
;
import
org.modelmapper.ModelMapper
;
import
org.springframework.stereotype.Service
;
import
java.util.stream.Collectors
;
import
java.util.stream.StreamSupport
;
@Service
public
class
UserServiceImpl
implements
UserService
{
private
final
UserRepository
userRepository
;
private
final
ModelMapper
modelMapper
;
public
UserServiceImpl
(
UserRepository
userRepository
,
ModelMapper
modelMapper
)
{
this
.
userRepository
=
userRepository
;
this
.
modelMapper
=
modelMapper
;
}
@Override
public
Iterable
<
UsersDto
>
findAll
()
{
Iterable
<
User
>
usersIterable
=
userRepository
.
findAll
();
return
StreamSupport
.
stream
(
usersIterable
.
spliterator
(),
false
)
.
map
(
user
->
modelMapper
.
map
(
user
,
UsersDto
.
class
))
.
collect
(
Collectors
.
toList
());
}
@Override
public
UserDto
findById
(
String
login
)
{
Object
user
=
userRepository
.
findById
(
login
).
orElseThrow
(
UserNotFoundException:
:
new
);
return
modelMapper
.
map
(
user
,
UserDto
.
class
);
}
@Override
public
void
deleteById
(
String
login
)
{
if
(!
userRepository
.
existsById
(
login
))
{
throw
new
UserNotFoundException
();
}
userRepository
.
deleteById
(
login
);
}
}
src/main/resources/application.properties
View file @
fa0f6142
#
spring.datasource.url=jdbc:h2:mem:testdb
#
spring.datasource.driverClassName=org.h2.Driver
#
spring.datasource.username=sa
#
spring.datasource.password=
#
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.datasource.url
=
jdbc:h2:mem:testdb
spring.datasource.driverClassName
=
org.h2.Driver
spring.datasource.username
=
sa
spring.datasource.password
=
spring.jpa.properties.hibernate.dialect
=
org.hibernate.dialect.H2Dialect
spring.datasource.url
=
jdbc:mysql://localhost:3306/role?serverTimezone=UTC
spring.datasource.driver-class-name
=
com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect
=
org.hibernate.dialect.MySQL8Dialect
spring.datasource.username
=
root
spring.datasource.password
=
root
#
spring.datasource.url=jdbc:mysql://localhost:3306/role?serverTimezone=UTC
#
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
#
spring.datasource.username=root
#
spring.datasource.password=root
spring.jpa.show-sql
=
true
spring.jpa.hibernate.ddl-auto
=
cre
ate
spring.jpa.hibernate.ddl-auto
=
upd
ate
spring.h2.console.enabled
=
true
\ No newline at end of file
src/main/resources/data.sql
0 → 100644
View file @
fa0f6142
INSERT
INTO
role
(
name
)
VALUES
(
'admin'
),
(
'tester'
),
(
'developer'
),
(
'boss'
);
INSERT
INTO
user
(
login
,
name
,
password
)
VALUES
(
'login 1'
,
'name 1'
,
'password 1'
),
(
'login 2'
,
'name 2'
,
'password 2'
),
(
'login 3'
,
'name 3'
,
'password 3'
);
INSERT
INTO
user_role
(
user_login
,
role_id
)
VALUES
(
'login 1'
,
1
),
(
'login 1'
,
3
),
(
'login 3'
,
2
);
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