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
Show 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;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.util.
ArrayLis
t
;
import
java.util.
Lis
t
;
import
java.util.
HashSe
t
;
import
java.util.
Se
t
;
@Getter
@Setter
...
...
@@ -31,6 +31,6 @@ public class Goods {
@Column
(
name
=
"price"
)
private
double
price
;
@OneToMany
(
mappedBy
=
"goods"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
ALL
)
private
List
<
OrderLine
>
orderLines
=
new
ArrayLis
t
<>();
@OneToMany
(
mappedBy
=
"goods"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
REMOVE
)
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;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDate
;
import
java.util.
ArrayLis
t
;
import
java.util.
Lis
t
;
import
java.util.
HashSe
t
;
import
java.util.
Se
t
;
@Getter
@Setter
...
...
@@ -38,6 +38,6 @@ public class Order {
@Column
(
name
=
"address"
)
private
String
address
;
@OneToMany
(
mappedBy
=
"order"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
ALL
)
private
List
<
OrderLine
>
orderLines
=
new
ArrayLis
t
<>();
@OneToMany
(
mappedBy
=
"order"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
REMOVE
)
private
Set
<
OrderLine
>
orderLines
=
new
HashSe
t
<>();
}
src/main/java/com/example/testj/domain/OrderLine.java
View file @
2386cd22
package
com
.
example
.
testj
.
domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
Properties
;
import
jakarta.persistence.*
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
...
...
@@ -22,13 +21,12 @@ public class OrderLine {
@Column
(
name
=
"id"
)
private
Long
id
;
@NotNull
@JsonIgnore
@JsonIgnoreProperties
(
value
=
"orderLines"
)
@ManyToOne
@JoinColumn
(
name
=
"order_id"
)
private
Order
order
;
@
NotNull
@
JsonIgnoreProperties
(
value
=
"orderLines"
)
@ManyToOne
@JoinColumn
(
name
=
"goods_id"
)
private
Goods
goods
;
...
...
src/main/java/com/example/testj/exception/ApiError.java
View file @
2386cd22
...
...
@@ -2,16 +2,18 @@ package com.example.testj.exception;
import
lombok.Getter
;
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
@Setter
public
class
ApiError
{
private
final
Date
timestamp
;
private
HttpStatus
status
;
private
HttpStatus
Code
status
;
private
String
message
;
private
List
<
Map
<
String
,
String
>>
errors
;
...
...
@@ -19,7 +21,7 @@ public class ApiError {
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
();
timestamp
=
new
Date
();
this
.
status
=
status
;
...
...
@@ -27,12 +29,11 @@ public class ApiError {
this
.
errors
=
errors
;
}
public
ApiError
(
HttpStatus
status
,
String
message
,
String
error
)
{
public
ApiError
(
HttpStatus
Code
status
,
String
message
,
String
error
)
{
super
();
timestamp
=
new
Date
();
this
.
status
=
status
;
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;
@ResponseStatus
(
value
=
HttpStatus
.
NOT_FOUND
)
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
extends
ResponseEntityExceptionHandler
{
@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
(
MethodArgumentNotValidException
ex
,
HttpHeaders
headers
,
HttpStatusCode
status
,
WebRequest
request
)
{
...
...
@@ -43,7 +31,7 @@ public class RestResponseEntityExceptionHandler
.
stream
()
.
map
(
err
->
Map
.
of
(
"field"
,
err
.
getField
(),
"message"
,
err
.
getDefaultMessage
()))
.
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
);
}
...
...
src/main/java/com/example/testj/service/OrderLineService.java
View file @
2386cd22
package
com
.
example
.
testj
.
service
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
...
...
@@ -10,7 +9,7 @@ public interface OrderLineService {
OrderLineDto
createOrderLine
(
OrderLineRequestDto
request
);
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
)
;
OrderLineDto
updateOrderLine
Count
(
Long
id
,
int
count
)
throws
ResourceNotFoundException
;
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 {
@Override
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
();
Order
order
=
orderMapper
.
toEntity
(
orderService
.
getOrder
(
request
.
getOrderId
()));
orderLine
.
setOrder
(
order
);
Goods
goods
=
goodsMapper
.
toEntity
(
goodsService
.
getGoods
(
request
.
getGoodsId
()));
orderLine
.
setGoods
(
goods
);
orderLine
.
setCount
(
request
.
getCount
());
...
...
@@ -40,8 +39,9 @@ public class OrderLineServiceImpl implements OrderLineService {
}
@Override
public
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
)
{
orderLineRepository
.
findById
(
orderLine
.
getId
()).
orElseThrow
(
ResourceNotFoundException:
:
new
);
public
OrderLineDto
updateOrderLineCount
(
Long
id
,
int
count
)
{
OrderLine
orderLine
=
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderLine
.
setCount
(
count
);
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;
import
com.example.testj.domain.Order
;
import
com.example.testj.service.dto.OrderDto
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
@Mapper
(
componentModel
=
"spring"
)
public
interface
OrderMapper
{
OrderDto
toDto
(
Order
order
);
Order
toEntity
(
OrderDto
orderDto
);
...
...
src/main/java/com/example/testj/web/rest/OrderLineController.java
View file @
2386cd22
...
...
@@ -37,9 +37,7 @@ public class OrderLineController {
@PutMapping
(
"/{id}"
)
public
OrderLineDto
update
(
@PathVariable
Long
id
,
@Valid
@RequestBody
OrderLineUpdateRequestDto
request
)
{
OrderLineDto
orderLineDto
=
orderLineService
.
getOrderLine
(
id
);
orderLineDto
.
setCount
(
request
.
getCount
());
return
orderLineService
.
updateOrderLine
(
orderLineMapper
.
toEntity
(
orderLineDto
));
return
orderLineService
.
updateOrderLineCount
(
id
,
request
.
getCount
());
}
@DeleteMapping
(
"/{id}"
)
...
...
src/main/resources/application.properties
View file @
2386cd22
...
...
@@ -11,3 +11,5 @@ spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others
=
false
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 {
// when
when
(
orderLineRepository
.
findById
(
id
)).
thenReturn
(
Optional
.
of
(
orderLine
));
when
(
orderLineRepository
.
save
(
any
(
OrderLine
.
class
))).
thenReturn
(
result
);
OrderLineDto
updatedOrderLine
=
orderLineService
.
updateOrderLine
(
orderLine
);
OrderLineDto
updatedOrderLine
=
orderLineService
.
updateOrderLine
Count
(
id
,
count
);
// then
assertEquals
(
count
,
updatedOrderLine
.
getCount
());
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
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.OrderLineService
;
import
com.example.testj.service.dto.GoodsDto
;
...
...
@@ -88,7 +87,7 @@ public class OrderLineControllerTest {
String
body
=
new
ObjectMapper
().
writeValueAsString
(
request
);
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
)
.
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