Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
Orders
Project
Project
Details
Activity
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Vladimir Trubachoff
Orders
Commits
2386cd22
Commit
2386cd22
authored
Jul 29, 2024
by
Vladimir Trubachoff
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Backend: code refactoring
parent
699282d6
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
41 additions
and
48 deletions
+41
-48
Goods.java
src/main/java/com/example/testj/domain/Goods.java
+4
-4
Order.java
src/main/java/com/example/testj/domain/Order.java
+4
-4
OrderLine.java
src/main/java/com/example/testj/domain/OrderLine.java
+3
-5
ApiError.java
src/main/java/com/example/testj/exception/ApiError.java
+9
-7
ResourceNotFoundException.java
...om/example/testj/exception/ResourceNotFoundException.java
+8
-0
RestResponseEntityExceptionHandler.java
...e/testj/exception/RestResponseEntityExceptionHandler.java
+1
-13
OrderLineService.java
...main/java/com/example/testj/service/OrderLineService.java
+1
-2
OrderLineServiceImpl.java
.../com/example/testj/service/impl/OrderLineServiceImpl.java
+5
-5
OrderMapper.java
...in/java/com/example/testj/service/mapper/OrderMapper.java
+1
-2
OrderLineController.java
.../java/com/example/testj/web/rest/OrderLineController.java
+1
-3
application.properties
src/main/resources/application.properties
+2
-0
OrderLineServiceTest.java
.../java/com/example/testj/service/OrderLineServiceTest.java
+1
-1
OrderLineControllerTest.java
...a/com/example/testj/web/rest/OrderLineControllerTest.java
+1
-2
No files found.
src/main/java/com/example/testj/domain/Goods.java
View file @
2386cd22
...
@@ -8,8 +8,8 @@ import lombok.Getter;
...
@@ -8,8 +8,8 @@ import lombok.Getter;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.Setter
;
import
java.util.
ArrayLis
t
;
import
java.util.
HashSe
t
;
import
java.util.
Lis
t
;
import
java.util.
Se
t
;
@Getter
@Getter
@Setter
@Setter
...
@@ -31,6 +31,6 @@ public class Goods {
...
@@ -31,6 +31,6 @@ public class Goods {
@Column
(
name
=
"price"
)
@Column
(
name
=
"price"
)
private
double
price
;
private
double
price
;
@OneToMany
(
mappedBy
=
"goods"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
ALL
)
@OneToMany
(
mappedBy
=
"goods"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
REMOVE
)
private
List
<
OrderLine
>
orderLines
=
new
ArrayLis
t
<>();
private
Set
<
OrderLine
>
orderLines
=
new
HashSe
t
<>();
}
}
src/main/java/com/example/testj/domain/Order.java
View file @
2386cd22
...
@@ -10,8 +10,8 @@ import lombok.Setter;
...
@@ -10,8 +10,8 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.util.
ArrayLis
t
;
import
java.util.
HashSe
t
;
import
java.util.
Lis
t
;
import
java.util.
Se
t
;
@Getter
@Getter
@Setter
@Setter
...
@@ -38,6 +38,6 @@ public class Order {
...
@@ -38,6 +38,6 @@ public class Order {
@Column
(
name
=
"address"
)
@Column
(
name
=
"address"
)
private
String
address
;
private
String
address
;
@OneToMany
(
mappedBy
=
"order"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
ALL
)
@OneToMany
(
mappedBy
=
"order"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
REMOVE
)
private
List
<
OrderLine
>
orderLines
=
new
ArrayLis
t
<>();
private
Set
<
OrderLine
>
orderLines
=
new
HashSe
t
<>();
}
}
src/main/java/com/example/testj/domain/OrderLine.java
View file @
2386cd22
package
com
.
example
.
testj
.
domain
;
package
com
.
example
.
testj
.
domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
Properties
;
import
jakarta.persistence.*
;
import
jakarta.persistence.*
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -22,13 +21,12 @@ public class OrderLine {
...
@@ -22,13 +21,12 @@ public class OrderLine {
@Column
(
name
=
"id"
)
@Column
(
name
=
"id"
)
private
Long
id
;
private
Long
id
;
@NotNull
@JsonIgnoreProperties
(
value
=
"orderLines"
)
@JsonIgnore
@ManyToOne
@ManyToOne
@JoinColumn
(
name
=
"order_id"
)
@JoinColumn
(
name
=
"order_id"
)
private
Order
order
;
private
Order
order
;
@
NotNull
@
JsonIgnoreProperties
(
value
=
"orderLines"
)
@ManyToOne
@ManyToOne
@JoinColumn
(
name
=
"goods_id"
)
@JoinColumn
(
name
=
"goods_id"
)
private
Goods
goods
;
private
Goods
goods
;
...
...
src/main/java/com/example/testj/exception/ApiError.java
View file @
2386cd22
...
@@ -2,16 +2,18 @@ package com.example.testj.exception;
...
@@ -2,16 +2,18 @@ package com.example.testj.exception;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
Code
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
@Getter
@Getter
@Setter
@Setter
public
class
ApiError
{
public
class
ApiError
{
private
final
Date
timestamp
;
private
final
Date
timestamp
;
private
HttpStatus
status
;
private
HttpStatus
Code
status
;
private
String
message
;
private
String
message
;
private
List
<
Map
<
String
,
String
>>
errors
;
private
List
<
Map
<
String
,
String
>>
errors
;
...
@@ -19,7 +21,7 @@ public class ApiError {
...
@@ -19,7 +21,7 @@ public class ApiError {
timestamp
=
new
Date
();
timestamp
=
new
Date
();
}
}
public
ApiError
(
HttpStatus
status
,
String
message
,
List
<
Map
<
String
,
String
>>
errors
)
{
public
ApiError
(
HttpStatus
Code
status
,
String
message
,
List
<
Map
<
String
,
String
>>
errors
)
{
super
();
super
();
timestamp
=
new
Date
();
timestamp
=
new
Date
();
this
.
status
=
status
;
this
.
status
=
status
;
...
@@ -27,12 +29,11 @@ public class ApiError {
...
@@ -27,12 +29,11 @@ public class ApiError {
this
.
errors
=
errors
;
this
.
errors
=
errors
;
}
}
public
ApiError
(
HttpStatus
status
,
String
message
,
String
error
)
{
public
ApiError
(
HttpStatus
Code
status
,
String
message
,
String
error
)
{
super
();
super
();
timestamp
=
new
Date
();
timestamp
=
new
Date
();
this
.
status
=
status
;
this
.
status
=
status
;
this
.
message
=
message
;
this
.
message
=
message
;
errors
=
new
ArrayList
<>((
Collection
)
Map
.
of
(
"message"
,
error
));
errors
=
List
.
of
(
Map
.
of
(
"message"
,
error
));
}
}
}
}
\ No newline at end of file
src/main/java/com/example/testj/exception/ResourceNotFoundException.java
View file @
2386cd22
...
@@ -5,4 +5,12 @@ import org.springframework.web.bind.annotation.ResponseStatus;
...
@@ -5,4 +5,12 @@ import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus
(
value
=
HttpStatus
.
NOT_FOUND
)
@ResponseStatus
(
value
=
HttpStatus
.
NOT_FOUND
)
public
class
ResourceNotFoundException
extends
RuntimeException
{
public
class
ResourceNotFoundException
extends
RuntimeException
{
private
static
final
String
message
=
"Resource not found"
;
public
ResourceNotFoundException
()
{
super
(
message
);
}
public
ResourceNotFoundException
(
String
message
)
{
super
(
message
);
}
}
}
src/main/java/com/example/testj/exception/RestResponseEntityExceptionHandler.java
View file @
2386cd22
...
@@ -22,18 +22,6 @@ public class RestResponseEntityExceptionHandler
...
@@ -22,18 +22,6 @@ public class RestResponseEntityExceptionHandler
extends
ResponseEntityExceptionHandler
{
extends
ResponseEntityExceptionHandler
{
@ExceptionHandler
({
DateTimeParseException
.
class
})
@ExceptionHandler
({
DateTimeParseException
.
class
})
public
ResponseEntity
<
Object
>
handleDateTimeParseException
(
Exception
ex
,
WebRequest
request
)
{
List
<
Map
<
String
,
String
>>
errors
=
List
.
of
(
Map
.
of
(
"field"
,
"date"
,
"message"
,
ex
.
getMessage
()));
ApiError
body
=
new
ApiError
(
HttpStatus
.
BAD_REQUEST
,
"Date parse error"
,
errors
);
return
new
ResponseEntity
<>(
body
,
new
HttpHeaders
(),
HttpStatus
.
BAD_REQUEST
);
}
// 500
@ExceptionHandler
({
Exception
.
class
})
public
ResponseEntity
<
Object
>
handleAll
(
Exception
ex
,
WebRequest
request
)
{
final
ApiError
apiError
=
new
ApiError
(
HttpStatus
.
INTERNAL_SERVER_ERROR
,
ex
.
getLocalizedMessage
(),
"error occurred"
);
return
new
ResponseEntity
<>(
apiError
,
new
HttpHeaders
(),
apiError
.
getStatus
());
}
protected
ResponseEntity
<
Object
>
handleMethodArgumentNotValid
(
protected
ResponseEntity
<
Object
>
handleMethodArgumentNotValid
(
MethodArgumentNotValidException
ex
,
HttpHeaders
headers
,
HttpStatusCode
status
,
WebRequest
request
)
{
MethodArgumentNotValidException
ex
,
HttpHeaders
headers
,
HttpStatusCode
status
,
WebRequest
request
)
{
...
@@ -43,7 +31,7 @@ public class RestResponseEntityExceptionHandler
...
@@ -43,7 +31,7 @@ public class RestResponseEntityExceptionHandler
.
stream
()
.
stream
()
.
map
(
err
->
Map
.
of
(
"field"
,
err
.
getField
(),
"message"
,
err
.
getDefaultMessage
()))
.
map
(
err
->
Map
.
of
(
"field"
,
err
.
getField
(),
"message"
,
err
.
getDefaultMessage
()))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
ApiError
body
=
new
ApiError
(
HttpStatus
.
BAD_REQUEST
,
ex
.
getBody
().
getDetail
(),
errors
);
ApiError
body
=
new
ApiError
(
status
,
ex
.
getBody
().
getDetail
(),
errors
);
return
handleExceptionInternal
(
ex
,
body
,
headers
,
status
,
request
);
return
handleExceptionInternal
(
ex
,
body
,
headers
,
status
,
request
);
}
}
...
...
src/main/java/com/example/testj/service/OrderLineService.java
View file @
2386cd22
package
com
.
example
.
testj
.
service
;
package
com
.
example
.
testj
.
service
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
...
@@ -10,7 +9,7 @@ public interface OrderLineService {
...
@@ -10,7 +9,7 @@ public interface OrderLineService {
OrderLineDto
createOrderLine
(
OrderLineRequestDto
request
);
OrderLineDto
createOrderLine
(
OrderLineRequestDto
request
);
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
)
;
OrderLineDto
updateOrderLine
Count
(
Long
id
,
int
count
)
throws
ResourceNotFoundException
;
void
deleteOrderLine
(
Long
id
);
void
deleteOrderLine
(
Long
id
);
}
}
src/main/java/com/example/testj/service/impl/OrderLineServiceImpl.java
View file @
2386cd22
...
@@ -28,11 +28,10 @@ public class OrderLineServiceImpl implements OrderLineService {
...
@@ -28,11 +28,10 @@ public class OrderLineServiceImpl implements OrderLineService {
@Override
@Override
public
OrderLineDto
createOrderLine
(
OrderLineRequestDto
request
)
{
public
OrderLineDto
createOrderLine
(
OrderLineRequestDto
request
)
{
Order
order
=
orderMapper
.
toEntity
(
orderService
.
getOrder
(
request
.
getOrderId
()));
Goods
goods
=
goodsMapper
.
toEntity
(
goodsService
.
getGoods
(
request
.
getGoodsId
()));
OrderLine
orderLine
=
new
OrderLine
();
OrderLine
orderLine
=
new
OrderLine
();
Order
order
=
orderMapper
.
toEntity
(
orderService
.
getOrder
(
request
.
getOrderId
()));
orderLine
.
setOrder
(
order
);
orderLine
.
setOrder
(
order
);
Goods
goods
=
goodsMapper
.
toEntity
(
goodsService
.
getGoods
(
request
.
getGoodsId
()));
orderLine
.
setGoods
(
goods
);
orderLine
.
setGoods
(
goods
);
orderLine
.
setCount
(
request
.
getCount
());
orderLine
.
setCount
(
request
.
getCount
());
...
@@ -40,8 +39,9 @@ public class OrderLineServiceImpl implements OrderLineService {
...
@@ -40,8 +39,9 @@ public class OrderLineServiceImpl implements OrderLineService {
}
}
@Override
@Override
public
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
)
{
public
OrderLineDto
updateOrderLineCount
(
Long
id
,
int
count
)
{
orderLineRepository
.
findById
(
orderLine
.
getId
()).
orElseThrow
(
ResourceNotFoundException:
:
new
);
OrderLine
orderLine
=
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderLine
.
setCount
(
count
);
return
orderLineMapper
.
toDto
(
orderLineRepository
.
save
(
orderLine
));
return
orderLineMapper
.
toDto
(
orderLineRepository
.
save
(
orderLine
));
}
}
...
...
src/main/java/com/example/testj/service/mapper/OrderMapper.java
View file @
2386cd22
...
@@ -3,9 +3,8 @@ package com.example.testj.service.mapper;
...
@@ -3,9 +3,8 @@ package com.example.testj.service.mapper;
import
com.example.testj.domain.Order
;
import
com.example.testj.domain.Order
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.service.dto.OrderDto
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
@Mapper
(
componentModel
=
"spring"
)
public
interface
OrderMapper
{
public
interface
OrderMapper
{
OrderDto
toDto
(
Order
order
);
OrderDto
toDto
(
Order
order
);
Order
toEntity
(
OrderDto
orderDto
);
Order
toEntity
(
OrderDto
orderDto
);
...
...
src/main/java/com/example/testj/web/rest/OrderLineController.java
View file @
2386cd22
...
@@ -37,9 +37,7 @@ public class OrderLineController {
...
@@ -37,9 +37,7 @@ public class OrderLineController {
@PutMapping
(
"/{id}"
)
@PutMapping
(
"/{id}"
)
public
OrderLineDto
update
(
@PathVariable
Long
id
,
@Valid
@RequestBody
OrderLineUpdateRequestDto
request
)
{
public
OrderLineDto
update
(
@PathVariable
Long
id
,
@Valid
@RequestBody
OrderLineUpdateRequestDto
request
)
{
OrderLineDto
orderLineDto
=
orderLineService
.
getOrderLine
(
id
);
return
orderLineService
.
updateOrderLineCount
(
id
,
request
.
getCount
());
orderLineDto
.
setCount
(
request
.
getCount
());
return
orderLineService
.
updateOrderLine
(
orderLineMapper
.
toEntity
(
orderLineDto
));
}
}
@DeleteMapping
(
"/{id}"
)
@DeleteMapping
(
"/{id}"
)
...
...
src/main/resources/application.properties
View file @
2386cd22
...
@@ -11,3 +11,5 @@ spring.h2.console.settings.trace=false
...
@@ -11,3 +11,5 @@ spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others
=
false
spring.h2.console.settings.web-allow-others
=
false
logging.level.org.springframework.web
=
INFO
logging.level.org.springframework.web
=
INFO
server.error.include-stacktrace
=
never
src/test/java/com/example/testj/service/OrderLineServiceTest.java
View file @
2386cd22
...
@@ -103,7 +103,7 @@ public class OrderLineServiceTest {
...
@@ -103,7 +103,7 @@ public class OrderLineServiceTest {
// when
// when
when
(
orderLineRepository
.
findById
(
id
)).
thenReturn
(
Optional
.
of
(
orderLine
));
when
(
orderLineRepository
.
findById
(
id
)).
thenReturn
(
Optional
.
of
(
orderLine
));
when
(
orderLineRepository
.
save
(
any
(
OrderLine
.
class
))).
thenReturn
(
result
);
when
(
orderLineRepository
.
save
(
any
(
OrderLine
.
class
))).
thenReturn
(
result
);
OrderLineDto
updatedOrderLine
=
orderLineService
.
updateOrderLine
(
orderLine
);
OrderLineDto
updatedOrderLine
=
orderLineService
.
updateOrderLine
Count
(
id
,
count
);
// then
// then
assertEquals
(
count
,
updatedOrderLine
.
getCount
());
assertEquals
(
count
,
updatedOrderLine
.
getCount
());
verify
(
orderLineRepository
,
times
(
1
)).
save
(
any
(
OrderLine
.
class
));
verify
(
orderLineRepository
,
times
(
1
)).
save
(
any
(
OrderLine
.
class
));
...
...
src/test/java/com/example/testj/web/rest/OrderLineControllerTest.java
View file @
2386cd22
package
com
.
example
.
testj
.
web
.
rest
;
package
com
.
example
.
testj
.
web
.
rest
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.OrderLineService
;
import
com.example.testj.service.OrderLineService
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.service.dto.GoodsDto
;
...
@@ -88,7 +87,7 @@ public class OrderLineControllerTest {
...
@@ -88,7 +87,7 @@ public class OrderLineControllerTest {
String
body
=
new
ObjectMapper
().
writeValueAsString
(
request
);
String
body
=
new
ObjectMapper
().
writeValueAsString
(
request
);
when
(
orderLineService
.
getOrderLine
(
id
)).
thenReturn
(
orderLineDto
);
when
(
orderLineService
.
getOrderLine
(
id
)).
thenReturn
(
orderLineDto
);
when
(
orderLineService
.
updateOrderLine
(
any
(
OrderLine
.
class
))).
thenReturn
(
orderLineDto
);
when
(
orderLineService
.
updateOrderLine
Count
(
id
,
orderLineDto
.
getCount
(
))).
thenReturn
(
orderLineDto
);
mvc
.
perform
(
put
(
"/api/order-line/{id}"
,
id
)
mvc
.
perform
(
put
(
"/api/order-line/{id}"
,
id
)
.
contentType
(
MediaType
.
APPLICATION_JSON
)
.
contentType
(
MediaType
.
APPLICATION_JSON
)
...
...
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