fixing up clight logging
This commit is contained in:
0
log/.gitkeep
Normal file
0
log/.gitkeep
Normal file
@@ -9,17 +9,12 @@ import java.nio.file.StandardOpenOption
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
class MarketOrderClient(
|
class MarketOrderClient(
|
||||||
@Value("\${market.orders.file:market_orders.log}") private val filePath: String
|
@Value("\${market.orders.file:log/market_orders.log}") private val filePath: String
|
||||||
) {
|
) {
|
||||||
private val file: Path = Path.of(filePath)
|
private val file: Path = Path.of(filePath)
|
||||||
|
|
||||||
init {
|
|
||||||
if (!Files.exists(file)) {
|
|
||||||
Files.createFile(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sendOrder(order: MarketOrder) {
|
fun sendOrder(order: MarketOrder) {
|
||||||
|
ensureFileExists()
|
||||||
val line = formatOrder(order)
|
val line = formatOrder(order)
|
||||||
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
|
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
|
||||||
}
|
}
|
||||||
@@ -30,8 +25,17 @@ class MarketOrderClient(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun clear() {
|
fun clear() {
|
||||||
|
if (Files.exists(file)) {
|
||||||
Files.writeString(file, "")
|
Files.writeString(file, "")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ensureFileExists() {
|
||||||
|
if (!Files.exists(file)) {
|
||||||
|
file.parent?.let { Files.createDirectories(it) }
|
||||||
|
Files.createFile(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun formatOrder(order: MarketOrder): String {
|
private fun formatOrder(order: MarketOrder): String {
|
||||||
return "${order.timestamp}|${order.orderId}|${order.groupId}|${order.deliveryStart}|${order.deliveryEnd}|${order.side}|${order.quantity}|${order.price}"
|
return "${order.timestamp}|${order.orderId}|${order.groupId}|${order.deliveryStart}|${order.deliveryEnd}|${order.side}|${order.quantity}|${order.price}"
|
||||||
|
|||||||
@@ -9,17 +9,12 @@ import java.nio.file.StandardOpenOption
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
class SteeringSignalClient(
|
class SteeringSignalClient(
|
||||||
@Value("\${steering.signals.file:steering_signals.log}") private val filePath: String
|
@Value("\${steering.signals.file:log/steering_signals.log}") private val filePath: String
|
||||||
) {
|
) {
|
||||||
private val file: Path = Path.of(filePath)
|
private val file: Path = Path.of(filePath)
|
||||||
|
|
||||||
init {
|
|
||||||
if (!Files.exists(file)) {
|
|
||||||
Files.createFile(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sendSignal(signal: SteeringSignal) {
|
fun sendSignal(signal: SteeringSignal) {
|
||||||
|
ensureFileExists()
|
||||||
val line = formatSignal(signal)
|
val line = formatSignal(signal)
|
||||||
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
|
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
|
||||||
}
|
}
|
||||||
@@ -30,8 +25,17 @@ class SteeringSignalClient(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun clear() {
|
fun clear() {
|
||||||
|
if (Files.exists(file)) {
|
||||||
Files.writeString(file, "")
|
Files.writeString(file, "")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ensureFileExists() {
|
||||||
|
if (!Files.exists(file)) {
|
||||||
|
file.parent?.let { Files.createDirectories(it) }
|
||||||
|
Files.createFile(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun formatSignal(signal: SteeringSignal): String {
|
private fun formatSignal(signal: SteeringSignal): String {
|
||||||
return "${signal.timestamp}|${signal.groupId}|${signal.quarterStart}|${signal.quarterEnd}|${signal.chargePowerMW}"
|
return "${signal.timestamp}|${signal.groupId}|${signal.quarterStart}|${signal.quarterEnd}|${signal.chargePowerMW}"
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.frankenergie.smartasset.service
|
package com.frankenergie.smartasset.service
|
||||||
|
|
||||||
|
import com.frankenergie.smartasset.client.MarketOrderClient
|
||||||
import com.frankenergie.smartasset.domain.OrderBook
|
import com.frankenergie.smartasset.domain.OrderBook
|
||||||
import com.frankenergie.smartasset.model.DeliveryPeriod
|
import com.frankenergie.smartasset.model.DeliveryPeriod
|
||||||
import com.frankenergie.smartasset.model.ExecutedPurchase
|
import com.frankenergie.smartasset.model.ExecutedPurchase
|
||||||
|
import com.frankenergie.smartasset.model.MarketOrder
|
||||||
import com.frankenergie.smartasset.model.MarketOverviewResponse
|
import com.frankenergie.smartasset.model.MarketOverviewResponse
|
||||||
import com.frankenergie.smartasset.model.OrderSide
|
import com.frankenergie.smartasset.model.OrderSide
|
||||||
import com.frankenergie.smartasset.model.OrderUpdateRequest
|
import com.frankenergie.smartasset.model.OrderUpdateRequest
|
||||||
@@ -15,7 +17,8 @@ import java.util.UUID
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class OrderBookService(
|
class OrderBookService(
|
||||||
private val purchaseTrackerService: PurchaseTrackerService
|
private val purchaseTrackerService: PurchaseTrackerService,
|
||||||
|
private val marketOrderClient: MarketOrderClient
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val orderBook = OrderBook()
|
private val orderBook = OrderBook()
|
||||||
@@ -26,6 +29,18 @@ class OrderBookService(
|
|||||||
val period = DeliveryPeriod(request.deliveryStartTime, request.deliveryEndTime)
|
val period = DeliveryPeriod(request.deliveryStartTime, request.deliveryEndTime)
|
||||||
val matchedQuantity = orderBook.processOrder(period, request.orderSide, request.quantity, request.price)
|
val matchedQuantity = orderBook.processOrder(period, request.orderSide, request.quantity, request.price)
|
||||||
|
|
||||||
|
marketOrderClient.sendOrder(
|
||||||
|
MarketOrder(
|
||||||
|
orderId = orderId,
|
||||||
|
groupId = "default",
|
||||||
|
deliveryStart = request.deliveryStartTime,
|
||||||
|
deliveryEnd = request.deliveryEndTime,
|
||||||
|
side = request.orderSide,
|
||||||
|
quantity = request.quantity,
|
||||||
|
price = request.price
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if (matchedQuantity > BigDecimal.ZERO && request.orderSide == OrderSide.BUY) {
|
if (matchedQuantity > BigDecimal.ZERO && request.orderSide == OrderSide.BUY) {
|
||||||
purchaseTrackerService.recordPurchase(
|
purchaseTrackerService.recordPurchase(
|
||||||
ExecutedPurchase(
|
ExecutedPurchase(
|
||||||
|
|||||||
@@ -12,11 +12,13 @@ class OrderBookServiceTest {
|
|||||||
|
|
||||||
private lateinit var service: OrderBookService
|
private lateinit var service: OrderBookService
|
||||||
private lateinit var purchaseTrackerService: PurchaseTrackerService
|
private lateinit var purchaseTrackerService: PurchaseTrackerService
|
||||||
|
private lateinit var marketOrderClient: com.frankenergie.smartasset.client.MarketOrderClient
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
purchaseTrackerService = PurchaseTrackerService()
|
purchaseTrackerService = PurchaseTrackerService()
|
||||||
service = OrderBookService(purchaseTrackerService)
|
marketOrderClient = com.frankenergie.smartasset.client.MarketOrderClient("test_market_orders.log")
|
||||||
|
service = OrderBookService(purchaseTrackerService, marketOrderClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user