Code review 1 - service
konradin23
java
02/18/2026 5:33 PM
2.5 KB
15
Indexable
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
@Service
public class OrderService {
private OrderRepository orderRepository;
private AuditService auditService;
private DiscoutCalculator discoutCalculator;
public void setOrderRepository(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}
public void setAuditService(AuditService auditService) {
this.auditService = auditService;
}
public void setDiscountCalculator(DiscoutCalculator discoutCalculator) {
this.discoutCalculator = discoutCalculator;
}
public void processOrder(String orderId) {
try {
Order order = findOrder(orderId);
applyDiscount(order);
saveOrder(order);
auditService.audit("Order processed: " + orderId);
} catch (Exception e) {
throw new RuntimeException("Failed to process order: " + orderId);
}
}
public Order findOrder(String orderId) {
try {
return orderRepository.findById(orderId)
.orElseThrow(() -> new IllegalArgumentException("Order not found"));
} catch (Exception e) {
return null;
}
}
@Transactional
public void saveOrder(Order order) {
try {
orderRepository.save(order);
} catch (Exception e) {
System.out.println("Error while saving order: " + e.getMessage());
throw new IllegalStateException("Save failed");
}
}
private void applyDiscount(Order order) {
if(order.getUser().getType().equals("PREMIUM_USER")) {
double discout = discoutCalculator.calculateDiscout(order);
order.setDiscount(discout);
}
}
}Editor is loading...
Leave a Comment