package com.ruoyi.device.simulator;
|
|
import java.util.ArrayList;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import com.ruoyi.device.simulator.BtsSimulatorStateStore.CollectorHistoryAppend;
|
import com.ruoyi.device.simulator.BtsSimulatorStateStore.CollectorMeasurementRecord;
|
import com.ruoyi.device.simulator.BtsSimulatorStateStore.RecentRequest;
|
import com.ruoyi.device.simulator.BtsSimulatorStateStore.SimulatorState;
|
|
/** 测试和独立协议合同使用的内存状态存储。 */
|
public final class InMemoryBtsSimulatorStateStore implements BtsSimulatorStateStore
|
{
|
private SimulatorState state;
|
private List<RecentRequest> recentRequests = List.of();
|
private final Map<String, List<CollectorMeasurementRecord>> collectorHistory = new LinkedHashMap<>();
|
|
public InMemoryBtsSimulatorStateStore() { }
|
|
public InMemoryBtsSimulatorStateStore(SimulatorState state)
|
{
|
this.state = state;
|
}
|
|
@Override
|
public synchronized SimulatorState loadOrInitialize(SimulatorState defaultState)
|
{
|
if (state == null) state = defaultState;
|
return state;
|
}
|
|
@Override
|
public synchronized void save(SimulatorState state)
|
{
|
this.state = state;
|
}
|
|
@Override
|
public synchronized void save(SimulatorState state, List<CollectorHistoryAppend> historyAppends)
|
{
|
for (CollectorHistoryAppend append : historyAppends)
|
{
|
List<CollectorMeasurementRecord> records = new ArrayList<>(
|
collectorHistory.getOrDefault(append.collectorCode(), List.of()));
|
records.addAll(append.records());
|
collectorHistory.put(append.collectorCode(), List.copyOf(records));
|
}
|
this.state = state;
|
}
|
|
@Override
|
public synchronized List<CollectorMeasurementRecord> loadCollectorHistory(String collectorCode)
|
{
|
return collectorHistory.getOrDefault(collectorCode, List.of());
|
}
|
|
@Override
|
public synchronized void saveAndDeleteCollectorHistory(SimulatorState state, String collectorCode)
|
{
|
collectorHistory.remove(collectorCode);
|
this.state = state;
|
}
|
|
@Override
|
public synchronized List<RecentRequest> loadRecentRequests()
|
{
|
return recentRequests;
|
}
|
|
@Override
|
public synchronized void saveRecentRequests(List<RecentRequest> requests)
|
{
|
recentRequests = List.copyOf(requests);
|
}
|
|
@Override
|
public synchronized void reset(SimulatorState defaultState)
|
{
|
state = defaultState;
|
recentRequests = List.of();
|
collectorHistory.clear();
|
}
|
}
|