Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Samuel Dudík
PA165 Winery Management System
Commits
3007ef20
Commit
3007ef20
authored
May 24, 2022
by
Ondřej Pavlica
Browse files
Change seeder order definition to annotations instead of a static list
parent
2d7b36c0
Pipeline
#142392
passed with stages
in 1 minute and 57 seconds
Changes
11
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
winery/webapp/pom.xml
View file @
3007ef20
...
@@ -114,7 +114,7 @@
...
@@ -114,7 +114,7 @@
<dependency>
<dependency>
<groupId>
one.util
</groupId>
<groupId>
one.util
</groupId>
<artifactId>
streamex
</artifactId>
<artifactId>
streamex
</artifactId>
<version>
0.
6.5
</version>
<version>
0.
7.3
</version>
</dependency>
</dependency>
</dependencies>
</dependencies>
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/components/DataSeederComponent.java
View file @
3007ef20
package
cz.muni.fi.pa165.winery.webapp.components
;
package
cz.muni.fi.pa165.winery.webapp.components
;
import
com.fasterxml.jackson.databind.util.ClassUtil
;
import
cz.muni.fi.pa165.winery.webapp.seeders.*
;
import
cz.muni.fi.pa165.winery.webapp.seeders.*
;
import
one.util.streamex.StreamEx
;
import
org.springframework.context.event.ContextRefreshedEvent
;
import
org.springframework.context.event.ContextRefreshedEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ClassUtils
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -12,25 +17,21 @@ import java.util.Map;
...
@@ -12,25 +17,21 @@ import java.util.Map;
@Component
@Component
public
class
DataSeederComponent
implements
DataSeederContext
{
public
class
DataSeederComponent
implements
DataSeederContext
{
// Order-sensitive!
private
final
Collection
<
DataSeeder
>
seeders
;
static
final
List
<
DataSeeder
>
SEEDERS
=
List
.
of
(
new
GrapeDataSeeder
(),
public
DataSeederComponent
(
Collection
<
DataSeeder
>
seeders
)
{
new
HarvestDataSeeder
(),
new
UserDataSeeder
(),
this
.
seeders
=
StreamEx
.
of
(
seeders
.
stream
())
new
UserRoleDataSeeder
(),
.
sortedBy
(
x
->
getSeederOrder
((
Class
<
DataSeeder
>)
x
.
getClass
()))
new
WineTypeDataSeeder
(),
.
toList
();
new
WineBottleDataSeeder
(),
}
new
ProductReviewDataSeeder
(),
new
OrderDataSeeder
(),
new
OrderItemDataSeeder
()
);
private
Map
<
String
,
List
<
Object
>>
seededObjects
=
new
HashMap
<>();
private
Map
<
String
,
List
<
Object
>>
seededObjects
=
new
HashMap
<>();
@EventListener
@EventListener
public
void
handleContextRefresh
(
ContextRefreshedEvent
event
)
{
public
void
handleContextRefresh
(
ContextRefreshedEvent
event
)
{
var
context
=
event
.
getApplicationContext
();
var
context
=
event
.
getApplicationContext
();
for
(
var
seeder
:
SEEDERS
)
{
for
(
var
seeder
:
seeders
)
{
var
dtos
=
seeder
.
seed
(
context
,
this
);
var
dtos
=
seeder
.
seed
(
context
,
this
);
if
(!
dtos
.
isEmpty
())
{
if
(!
dtos
.
isEmpty
())
{
seededObjects
.
put
(
dtos
.
get
(
0
).
getClass
().
getName
(),
dtos
);
seededObjects
.
put
(
dtos
.
get
(
0
).
getClass
().
getName
(),
dtos
);
...
@@ -42,4 +43,13 @@ public class DataSeederComponent implements DataSeederContext {
...
@@ -42,4 +43,13 @@ public class DataSeederComponent implements DataSeederContext {
public
<
T
>
List
<
T
>
getSeededData
(
Class
<
T
>
type
)
{
public
<
T
>
List
<
T
>
getSeededData
(
Class
<
T
>
type
)
{
return
(
List
<
T
>)
seededObjects
.
getOrDefault
(
type
.
getName
(),
null
);
return
(
List
<
T
>)
seededObjects
.
getOrDefault
(
type
.
getName
(),
null
);
}
}
private
long
getSeederOrder
(
Class
<
DataSeeder
>
seederClass
)
{
var
nonProxyClass
=
ClassUtils
.
getUserClass
(
seederClass
);
var
orderAnnotation
=
nonProxyClass
.
getAnnotation
(
Order
.
class
);
if
(
orderAnnotation
==
null
)
{
return
Long
.
MAX_VALUE
;
}
return
orderAnnotation
.
value
();
}
}
}
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/GrapeDataSeeder.java
View file @
3007ef20
...
@@ -4,9 +4,13 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
...
@@ -4,9 +4,13 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
import
cz.muni.fi.pa165.winery.services.PersistenceService
;
import
cz.muni.fi.pa165.winery.services.PersistenceService
;
import
cz.muni.fi.pa165.winery.services.wine.GrapeService
;
import
cz.muni.fi.pa165.winery.services.wine.GrapeService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
@Component
@Order
(
0
)
public
class
GrapeDataSeeder
extends
DataSeederBase
<
GrapeDto
,
GrapeService
>
{
public
class
GrapeDataSeeder
extends
DataSeederBase
<
GrapeDto
,
GrapeService
>
{
@Override
@Override
protected
Class
<
GrapeService
>
getPersistenceServiceClass
()
{
protected
Class
<
GrapeService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/HarvestDataSeeder.java
View file @
3007ef20
...
@@ -4,10 +4,14 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
...
@@ -4,10 +4,14 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
import
cz.muni.fi.pa165.winery.dto.wine.HarvestDto
;
import
cz.muni.fi.pa165.winery.dto.wine.HarvestDto
;
import
cz.muni.fi.pa165.winery.services.wine.HarvestService
;
import
cz.muni.fi.pa165.winery.services.wine.HarvestService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
@Component
@Order
(
1
)
public
class
HarvestDataSeeder
extends
DataSeederBase
<
HarvestDto
,
HarvestService
>
{
public
class
HarvestDataSeeder
extends
DataSeederBase
<
HarvestDto
,
HarvestService
>
{
@Override
@Override
protected
Class
<
HarvestService
>
getPersistenceServiceClass
()
{
protected
Class
<
HarvestService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/OrderDataSeeder.java
View file @
3007ef20
...
@@ -6,6 +6,8 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
...
@@ -6,6 +6,8 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
import
cz.muni.fi.pa165.winery.dto.wine.GrapeDto
;
import
cz.muni.fi.pa165.winery.dto.wine.GrapeDto
;
import
cz.muni.fi.pa165.winery.services.order.OrderService
;
import
cz.muni.fi.pa165.winery.services.order.OrderService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Collections
;
import
java.util.Collections
;
...
@@ -13,6 +15,8 @@ import java.util.HashSet;
...
@@ -13,6 +15,8 @@ import java.util.HashSet;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
@Component
@Order
(
7
)
public
class
OrderDataSeeder
extends
DataSeederBase
<
OrderDto
,
OrderService
>
{
public
class
OrderDataSeeder
extends
DataSeederBase
<
OrderDto
,
OrderService
>
{
@Override
@Override
protected
Class
<
OrderService
>
getPersistenceServiceClass
()
{
protected
Class
<
OrderService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/OrderItemDataSeeder.java
View file @
3007ef20
...
@@ -8,11 +8,15 @@ import cz.muni.fi.pa165.winery.dto.wine.WineBottleDto;
...
@@ -8,11 +8,15 @@ import cz.muni.fi.pa165.winery.dto.wine.WineBottleDto;
import
cz.muni.fi.pa165.winery.services.order.OrderItemService
;
import
cz.muni.fi.pa165.winery.services.order.OrderItemService
;
import
cz.muni.fi.pa165.winery.services.wine.HarvestService
;
import
cz.muni.fi.pa165.winery.services.wine.HarvestService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
@Component
@Order
(
8
)
public
class
OrderItemDataSeeder
extends
DataSeederBase
<
OrderItemDto
,
OrderItemService
>
{
public
class
OrderItemDataSeeder
extends
DataSeederBase
<
OrderItemDto
,
OrderItemService
>
{
@Override
@Override
protected
Class
<
OrderItemService
>
getPersistenceServiceClass
()
{
protected
Class
<
OrderItemService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/ProductReviewDataSeeder.java
View file @
3007ef20
...
@@ -5,12 +5,16 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
...
@@ -5,12 +5,16 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
import
cz.muni.fi.pa165.winery.dto.wine.WineBottleDto
;
import
cz.muni.fi.pa165.winery.dto.wine.WineBottleDto
;
import
cz.muni.fi.pa165.winery.services.review.ProductReviewService
;
import
cz.muni.fi.pa165.winery.services.review.ProductReviewService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* @author Michaela Korenkova
* @author Michaela Korenkova
*/
*/
@Component
@Order
(
6
)
public
class
ProductReviewDataSeeder
extends
DataSeederBase
<
ProductReviewDto
,
ProductReviewService
>{
public
class
ProductReviewDataSeeder
extends
DataSeederBase
<
ProductReviewDto
,
ProductReviewService
>{
@Override
@Override
protected
Class
<
ProductReviewService
>
getPersistenceServiceClass
()
{
protected
Class
<
ProductReviewService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/UserDataSeeder.java
View file @
3007ef20
...
@@ -4,10 +4,14 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
...
@@ -4,10 +4,14 @@ import cz.muni.fi.pa165.winery.dto.user.UserDto;
import
cz.muni.fi.pa165.winery.enums.UserRoleType
;
import
cz.muni.fi.pa165.winery.enums.UserRoleType
;
import
cz.muni.fi.pa165.winery.services.user.UserService
;
import
cz.muni.fi.pa165.winery.services.user.UserService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
@Component
@Order
(
2
)
public
class
UserDataSeeder
extends
DataSeederBase
<
UserDto
,
UserService
>
{
public
class
UserDataSeeder
extends
DataSeederBase
<
UserDto
,
UserService
>
{
@Override
@Override
protected
Class
<
UserService
>
getPersistenceServiceClass
()
{
protected
Class
<
UserService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/UserRoleDataSeeder.java
View file @
3007ef20
...
@@ -5,9 +5,13 @@ import cz.muni.fi.pa165.winery.dto.user.UserRoleDto;
...
@@ -5,9 +5,13 @@ import cz.muni.fi.pa165.winery.dto.user.UserRoleDto;
import
cz.muni.fi.pa165.winery.enums.UserRoleType
;
import
cz.muni.fi.pa165.winery.enums.UserRoleType
;
import
cz.muni.fi.pa165.winery.services.user.UserRoleService
;
import
cz.muni.fi.pa165.winery.services.user.UserRoleService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
@Component
@Order
(
3
)
public
class
UserRoleDataSeeder
extends
DataSeederBase
<
UserRoleDto
,
UserRoleService
>
{
public
class
UserRoleDataSeeder
extends
DataSeederBase
<
UserRoleDto
,
UserRoleService
>
{
@Override
@Override
protected
Class
<
UserRoleService
>
getPersistenceServiceClass
()
{
protected
Class
<
UserRoleService
>
getPersistenceServiceClass
()
{
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/WineBottleDataSeeder.java
View file @
3007ef20
...
@@ -5,6 +5,8 @@ import cz.muni.fi.pa165.winery.dto.wine.WineBottleDto;
...
@@ -5,6 +5,8 @@ import cz.muni.fi.pa165.winery.dto.wine.WineBottleDto;
import
cz.muni.fi.pa165.winery.dto.wine.WineTypeDto
;
import
cz.muni.fi.pa165.winery.dto.wine.WineTypeDto
;
import
cz.muni.fi.pa165.winery.services.wine.WineBottleService
;
import
cz.muni.fi.pa165.winery.services.wine.WineBottleService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
...
@@ -12,6 +14,8 @@ import java.util.List;
...
@@ -12,6 +14,8 @@ import java.util.List;
/**
/**
* @author Michaela Korenkova
* @author Michaela Korenkova
*/
*/
@Component
@Order
(
5
)
public
class
WineBottleDataSeeder
extends
DataSeederBase
<
WineBottleDto
,
WineBottleService
>{
public
class
WineBottleDataSeeder
extends
DataSeederBase
<
WineBottleDto
,
WineBottleService
>{
@Override
@Override
...
...
winery/webapp/src/main/java/cz/muni/fi/pa165/winery/webapp/seeders/WineTypeDataSeeder.java
View file @
3007ef20
...
@@ -4,12 +4,16 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
...
@@ -4,12 +4,16 @@ import cz.muni.fi.pa165.winery.dto.wine.GrapeDto;
import
cz.muni.fi.pa165.winery.dto.wine.WineTypeDto
;
import
cz.muni.fi.pa165.winery.dto.wine.WineTypeDto
;
import
cz.muni.fi.pa165.winery.services.wine.WineTypeService
;
import
cz.muni.fi.pa165.winery.services.wine.WineTypeService
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* @author Michaela Korenkova
* @author Michaela Korenkova
*/
*/
@Component
@Order
(
4
)
public
class
WineTypeDataSeeder
extends
DataSeederBase
<
WineTypeDto
,
WineTypeService
>{
public
class
WineTypeDataSeeder
extends
DataSeederBase
<
WineTypeDto
,
WineTypeService
>{
@Override
@Override
protected
Class
<
WineTypeService
>
getPersistenceServiceClass
()
{
protected
Class
<
WineTypeService
>
getPersistenceServiceClass
()
{
...
...
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