修改代码结构
This commit is contained in:
parent
ef057bb526
commit
092043895c
|
|
@ -1,6 +1,6 @@
|
||||||
package com.tuoheng.machine.demo;
|
package com.tuoheng.machine.demo;
|
||||||
|
|
||||||
import com.tuoheng.machine.manager.AirportSystemManager;
|
import com.tuoheng.machine.manager.ISystemManager;
|
||||||
import com.tuoheng.machine.manager.factory.AirportSystemManagerFactory;
|
import com.tuoheng.machine.manager.factory.AirportSystemManagerFactory;
|
||||||
import com.tuoheng.machine.platform.factory.PlatformStrategyFactory;
|
import com.tuoheng.machine.platform.factory.PlatformStrategyFactory;
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
|
@ -34,7 +34,7 @@ public class MultiPlatformDemo {
|
||||||
|
|
||||||
System.out.println("1. DJI机巢上线: " + djiAirport);
|
System.out.println("1. DJI机巢上线: " + djiAirport);
|
||||||
System.out.println(" 平台类型: " + strategyFactory.getPlatformType(djiAirport).getName());
|
System.out.println(" 平台类型: " + strategyFactory.getPlatformType(djiAirport).getName());
|
||||||
AirportSystemManager djiManager = managerFactory.getManager(djiAirport);
|
ISystemManager djiManager = managerFactory.getManager(djiAirport);
|
||||||
djiManager.airportOnline(djiAirport);
|
djiManager.airportOnline(djiAirport);
|
||||||
System.out.println(" " + djiManager.getFullStatus(djiAirport));
|
System.out.println(" " + djiManager.getFullStatus(djiAirport));
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji;
|
package com.tuoheng.machine.impl.dji;
|
||||||
|
|
||||||
|
|
||||||
import com.tuoheng.machine.events.AirportEvent;
|
import com.tuoheng.machine.events.AirportEvent;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.airport.*;
|
import com.tuoheng.machine.impl.dji.action.airport.*;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.airport.*;
|
import com.tuoheng.machine.impl.dji.guard.airport.*;
|
||||||
import com.tuoheng.machine.platform.impl.dji.listener.DjiAirportListener;
|
import com.tuoheng.machine.impl.dji.listener.DjiAirportListener;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.platform.strategy.AirportPlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.AirportPlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji;
|
package com.tuoheng.machine.impl.dji;
|
||||||
|
|
||||||
import com.tuoheng.machine.events.AirportEvent;
|
import com.tuoheng.machine.events.AirportEvent;
|
||||||
import com.tuoheng.machine.events.CoverEvent;
|
import com.tuoheng.machine.events.CoverEvent;
|
||||||
|
|
||||||
import com.tuoheng.machine.manager.AbstractAirportSystemManager;
|
import com.tuoheng.machine.manager.AbsSystemManager;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.status.AirportState;
|
import com.tuoheng.machine.status.AirportState;
|
||||||
import com.tuoheng.machine.status.CoverState;
|
import com.tuoheng.machine.status.CoverState;
|
||||||
|
|
@ -15,7 +15,7 @@ import org.springframework.stereotype.Component;
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DjiAirportSystemManager extends AbstractAirportSystemManager {
|
public class DjiAirportSystemManager extends AbsSystemManager {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlatformType getPlatformType() {
|
public PlatformType getPlatformType() {
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji;
|
package com.tuoheng.machine.impl.dji;
|
||||||
|
|
||||||
|
|
||||||
import com.tuoheng.machine.events.CoverEvent;
|
import com.tuoheng.machine.events.CoverEvent;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.cover.*;
|
import com.tuoheng.machine.impl.dji.action.cover.*;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.cover.DjiCanCloseCoverGuard;
|
import com.tuoheng.machine.impl.dji.guard.cover.DjiCanCloseCoverGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.cover.DjiCanOpenCoverGuard;
|
import com.tuoheng.machine.impl.dji.guard.cover.DjiCanOpenCoverGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.cover.DjiIsCoverClosedGuard;
|
import com.tuoheng.machine.impl.dji.guard.cover.DjiIsCoverClosedGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.cover.DjiIsCoverOpenedGuard;
|
import com.tuoheng.machine.impl.dji.guard.cover.DjiIsCoverOpenedGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.listener.DjiCoverListener;
|
import com.tuoheng.machine.impl.dji.listener.DjiCoverListener;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.platform.strategy.CoverPlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.CoverPlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji;
|
package com.tuoheng.machine.impl.dji;
|
||||||
|
|
||||||
import com.tuoheng.machine.events.DrcEvent;
|
import com.tuoheng.machine.events.DrcEvent;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.drc.DjiEnterAction;
|
import com.tuoheng.machine.impl.dji.action.drc.DjiEnterAction;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.drc.DjiEnteredAction;
|
import com.tuoheng.machine.impl.dji.action.drc.DjiEnteredAction;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.drc.DjiExitAction;
|
import com.tuoheng.machine.impl.dji.action.drc.DjiExitAction;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.drc.DjiExitedAction;
|
import com.tuoheng.machine.impl.dji.action.drc.DjiExitedAction;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.drc.DjiCanEnterGuard;
|
import com.tuoheng.machine.impl.dji.guard.drc.DjiCanEnterGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.drc.DjiCanExitGuard;
|
import com.tuoheng.machine.impl.dji.guard.drc.DjiCanExitGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.listener.DjiDrcListener;
|
import com.tuoheng.machine.impl.dji.listener.DjiDrcListener;
|
||||||
import com.tuoheng.machine.platform.strategy.DrcPlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.DrcPlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformGuard;
|
import com.tuoheng.machine.platform.strategy.PlatformGuard;
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji;
|
package com.tuoheng.machine.impl.dji;
|
||||||
|
|
||||||
|
|
||||||
import com.tuoheng.machine.events.DroneEvent;
|
import com.tuoheng.machine.events.DroneEvent;
|
||||||
|
import com.tuoheng.machine.impl.dji.action.drone.*;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.platform.impl.dji.action.drone.*;
|
import com.tuoheng.machine.impl.dji.guard.drone.DjiCanPointGuard;
|
||||||
import com.tuoheng.machine.platform.impl.dji.guard.drone.DjiCanPointGuard;
|
import com.tuoheng.machine.impl.dji.listener.DjiDroneListener;
|
||||||
import com.tuoheng.machine.platform.impl.dji.listener.DjiDroneListener;
|
|
||||||
import com.tuoheng.machine.platform.strategy.DronePlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.DronePlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
import com.tuoheng.machine.platform.strategy.PlatformAction;
|
||||||
import com.tuoheng.machine.platform.strategy.PlatformGuard;
|
import com.tuoheng.machine.platform.strategy.PlatformGuard;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.airport;
|
package com.tuoheng.machine.impl.dji.action.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.cover;
|
package com.tuoheng.machine.impl.dji.action.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drc;
|
package com.tuoheng.machine.impl.dji.action.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drc;
|
package com.tuoheng.machine.impl.dji.action.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drc;
|
package com.tuoheng.machine.impl.dji.action.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drc;
|
package com.tuoheng.machine.impl.dji.action.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.action.drone;
|
package com.tuoheng.machine.impl.dji.action.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.airport;
|
package com.tuoheng.machine.impl.dji.guard.airport;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.cover;
|
package com.tuoheng.machine.impl.dji.guard.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.cover;
|
package com.tuoheng.machine.impl.dji.guard.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.cover;
|
package com.tuoheng.machine.impl.dji.guard.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.cover;
|
package com.tuoheng.machine.impl.dji.guard.cover;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.drc;
|
package com.tuoheng.machine.impl.dji.guard.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.drc;
|
package com.tuoheng.machine.impl.dji.guard.drc;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.guard.drone;
|
package com.tuoheng.machine.impl.dji.guard.drone;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.listener;
|
package com.tuoheng.machine.impl.dji.listener;
|
||||||
|
|
||||||
import com.tuoheng.machine.listener.DefaultAirportListener;
|
import com.tuoheng.machine.listener.DefaultAirportListener;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.listener;
|
package com.tuoheng.machine.impl.dji.listener;
|
||||||
|
|
||||||
import com.tuoheng.machine.listener.DefaultCoverListener;
|
import com.tuoheng.machine.listener.DefaultCoverListener;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.listener;
|
package com.tuoheng.machine.impl.dji.listener;
|
||||||
|
|
||||||
import com.tuoheng.machine.listener.DefaultDrcListener;
|
import com.tuoheng.machine.listener.DefaultDrcListener;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tuoheng.machine.platform.impl.dji.listener;
|
package com.tuoheng.machine.impl.dji.listener;
|
||||||
|
|
||||||
import com.tuoheng.machine.listener.DefaultDroneListener;
|
import com.tuoheng.machine.listener.DefaultDroneListener;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -22,7 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
* 提供通用的业务编排能力,具体实现可按需扩展
|
* 提供通用的业务编排能力,具体实现可按需扩展
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class AbstractAirportSystemManager implements AirportSystemManager {
|
public abstract class AbsSystemManager implements ISystemManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 子类需要声明自己支持的平台类型
|
* 子类需要声明自己支持的平台类型
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package com.tuoheng.machine.manager;
|
package com.tuoheng.machine.manager;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import com.tuoheng.machine.events.AirportEvent;
|
import com.tuoheng.machine.events.AirportEvent;
|
||||||
import com.tuoheng.machine.events.CoverEvent;
|
import com.tuoheng.machine.events.CoverEvent;
|
||||||
import com.tuoheng.machine.events.DroneEvent;
|
import com.tuoheng.machine.events.DroneEvent;
|
||||||
|
|
@ -16,7 +14,7 @@ import com.tuoheng.machine.status.DrcState;
|
||||||
* 机巢系统管理器接口
|
* 机巢系统管理器接口
|
||||||
* 抽象对外能力,便于后续扩展不同实现
|
* 抽象对外能力,便于后续扩展不同实现
|
||||||
*/
|
*/
|
||||||
public interface AirportSystemManager {
|
public interface ISystemManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 该Manager对应的平台类型
|
* 该Manager对应的平台类型
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.tuoheng.machine.manager.factory;
|
package com.tuoheng.machine.manager.factory;
|
||||||
|
|
||||||
import com.tuoheng.machine.manager.AirportSystemManager;
|
import com.tuoheng.machine.manager.ISystemManager;
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.repository.AirportPlatformRepository;
|
import com.tuoheng.machine.repository.MachinePlatTypeRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -20,22 +20,22 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
public class AirportSystemManagerFactory {
|
public class AirportSystemManagerFactory {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AirportPlatformRepository airportPlatformRepository;
|
private MachinePlatTypeRepository machinePlatTypeRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储所有平台的系统管理器实现
|
* 存储所有平台的系统管理器实现
|
||||||
* Key: PlatformType
|
* Key: PlatformType
|
||||||
* Value: AirportSystemManager实现
|
* Value: AirportSystemManager实现
|
||||||
*/
|
*/
|
||||||
private final Map<PlatformType, AirportSystemManager> managerMap = new ConcurrentHashMap<>();
|
private final Map<PlatformType, ISystemManager> managerMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册所有系统管理器
|
* 注册所有系统管理器
|
||||||
* Spring会自动注入所有实现了AirportSystemManager的Bean
|
* Spring会自动注入所有实现了AirportSystemManager的Bean
|
||||||
*/
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
public void registerManagers(List<AirportSystemManager> managers) {
|
public void registerManagers(List<ISystemManager> managers) {
|
||||||
for (AirportSystemManager manager : managers) {
|
for (ISystemManager manager : managers) {
|
||||||
managerMap.put(manager.getPlatformType(), manager);
|
managerMap.put(manager.getPlatformType(), manager);
|
||||||
log.info("注册系统管理器: {} -> {}",
|
log.info("注册系统管理器: {} -> {}",
|
||||||
manager.getPlatformType().getName(), manager.getClass().getSimpleName());
|
manager.getPlatformType().getName(), manager.getClass().getSimpleName());
|
||||||
|
|
@ -49,15 +49,15 @@ public class AirportSystemManagerFactory {
|
||||||
* @return 对应平台的AirportSystemManager实现
|
* @return 对应平台的AirportSystemManager实现
|
||||||
* @throws IllegalArgumentException 如果机巢未注册或系统管理器不存在
|
* @throws IllegalArgumentException 如果机巢未注册或系统管理器不存在
|
||||||
*/
|
*/
|
||||||
public AirportSystemManager getManager(String airportSn) {
|
public ISystemManager getManager(String airportSn) {
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(airportSn);
|
PlatformType platformType = machinePlatTypeRepository.getPlatformType(airportSn);
|
||||||
|
|
||||||
if (platformType == null) {
|
if (platformType == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
String.format("机巢未注册或平台类型未配置: %s", airportSn));
|
String.format("机巢未注册或平台类型未配置: %s", airportSn));
|
||||||
}
|
}
|
||||||
|
|
||||||
AirportSystemManager manager = managerMap.get(platformType);
|
ISystemManager manager = managerMap.get(platformType);
|
||||||
|
|
||||||
if (manager == null) {
|
if (manager == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
@ -73,7 +73,7 @@ public class AirportSystemManagerFactory {
|
||||||
* @param platformType 平台类型
|
* @param platformType 平台类型
|
||||||
* @return 对应平台的AirportSystemManager实现
|
* @return 对应平台的AirportSystemManager实现
|
||||||
*/
|
*/
|
||||||
public AirportSystemManager getManagerByType(PlatformType platformType) {
|
public ISystemManager getManagerByType(PlatformType platformType) {
|
||||||
return managerMap.get(platformType);
|
return managerMap.get(platformType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.tuoheng.machine.platform.factory;
|
package com.tuoheng.machine.platform.factory;
|
||||||
|
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.repository.AirportPlatformRepository;
|
import com.tuoheng.machine.repository.MachinePlatTypeRepository;
|
||||||
import com.tuoheng.machine.platform.strategy.AirportPlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.AirportPlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.CoverPlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.CoverPlatformStrategy;
|
||||||
import com.tuoheng.machine.platform.strategy.DronePlatformStrategy;
|
import com.tuoheng.machine.platform.strategy.DronePlatformStrategy;
|
||||||
|
|
@ -23,7 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
public class PlatformStrategyFactory {
|
public class PlatformStrategyFactory {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AirportPlatformRepository airportPlatformRepository;
|
private MachinePlatTypeRepository machinePlatTypeRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储所有机巢平台策略实现
|
* 存储所有机巢平台策略实现
|
||||||
|
|
@ -102,7 +102,7 @@ public class PlatformStrategyFactory {
|
||||||
*/
|
*/
|
||||||
public AirportPlatformStrategy getAirportStrategy(String airportSn) {
|
public AirportPlatformStrategy getAirportStrategy(String airportSn) {
|
||||||
// 从数据库查询平台类型
|
// 从数据库查询平台类型
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(airportSn);
|
PlatformType platformType = machinePlatTypeRepository.getPlatformType(airportSn);
|
||||||
|
|
||||||
if (platformType == null) {
|
if (platformType == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
@ -128,7 +128,7 @@ public class PlatformStrategyFactory {
|
||||||
*/
|
*/
|
||||||
public CoverPlatformStrategy getCoverStrategy(String airportSn) {
|
public CoverPlatformStrategy getCoverStrategy(String airportSn) {
|
||||||
// 从数据库查询平台类型
|
// 从数据库查询平台类型
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(airportSn);
|
PlatformType platformType = machinePlatTypeRepository.getPlatformType(airportSn);
|
||||||
|
|
||||||
if (platformType == null) {
|
if (platformType == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
@ -175,7 +175,7 @@ public class PlatformStrategyFactory {
|
||||||
*/
|
*/
|
||||||
public DronePlatformStrategy getDroneStrategy(String droneSn) {
|
public DronePlatformStrategy getDroneStrategy(String droneSn) {
|
||||||
// 从数据库查询平台类型
|
// 从数据库查询平台类型
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(droneSn);
|
PlatformType platformType = machinePlatTypeRepository.getPlatformType(droneSn);
|
||||||
|
|
||||||
if (platformType == null) {
|
if (platformType == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
@ -211,7 +211,7 @@ public class PlatformStrategyFactory {
|
||||||
*/
|
*/
|
||||||
public DrcPlatformStrategy getDrcStrategy(String airportSn) {
|
public DrcPlatformStrategy getDrcStrategy(String airportSn) {
|
||||||
// 从数据库查询平台类型
|
// 从数据库查询平台类型
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(airportSn);
|
PlatformType platformType = machinePlatTypeRepository.getPlatformType(airportSn);
|
||||||
|
|
||||||
if (platformType == null) {
|
if (platformType == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
@ -245,6 +245,6 @@ public class PlatformStrategyFactory {
|
||||||
* @return 平台类型
|
* @return 平台类型
|
||||||
*/
|
*/
|
||||||
public PlatformType getPlatformType(String airportSn) {
|
public PlatformType getPlatformType(String airportSn) {
|
||||||
return airportPlatformRepository.getPlatformType(airportSn);
|
return machinePlatTypeRepository.getPlatformType(airportSn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Repository
|
@Repository
|
||||||
public class AirportPlatformRepository {
|
public class MachinePlatTypeRepository {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模拟数据库存储
|
* 模拟数据库存储
|
||||||
|
|
@ -25,7 +25,7 @@ public class AirportPlatformRepository {
|
||||||
/**
|
/**
|
||||||
* 初始化一些测试数据
|
* 初始化一些测试数据
|
||||||
*/
|
*/
|
||||||
public AirportPlatformRepository() {
|
public MachinePlatTypeRepository() {
|
||||||
// 模拟数据库中的数据
|
// 模拟数据库中的数据
|
||||||
airportPlatformMap.put("airport-001", PlatformType.DJI);
|
airportPlatformMap.put("airport-001", PlatformType.DJI);
|
||||||
airportPlatformMap.put("airport-002", PlatformType.DJI);
|
airportPlatformMap.put("airport-002", PlatformType.DJI);
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
package com.tuoheng.machine;
|
package com.tuoheng.machine;
|
||||||
|
|
||||||
import com.tuoheng.machine.events.DrcEvent;
|
|
||||||
import com.tuoheng.machine.platform.PlatformType;
|
import com.tuoheng.machine.platform.PlatformType;
|
||||||
import com.tuoheng.machine.platform.factory.PlatformStrategyFactory;
|
import com.tuoheng.machine.platform.factory.PlatformStrategyFactory;
|
||||||
import com.tuoheng.machine.repository.AirportPlatformRepository;
|
import com.tuoheng.machine.repository.MachinePlatTypeRepository;
|
||||||
import com.tuoheng.machine.service.DrcMachineService;
|
import com.tuoheng.machine.service.DrcMachineService;
|
||||||
import com.tuoheng.machine.status.DrcState;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
@ -20,6 +19,7 @@ import static org.mockito.Mockito.when;
|
||||||
* 测试DRC模式的完整状态转换流程
|
* 测试DRC模式的完整状态转换流程
|
||||||
*/
|
*/
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
|
@Slf4j
|
||||||
public class DrcStateMachineTest {
|
public class DrcStateMachineTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -29,7 +29,7 @@ public class DrcStateMachineTest {
|
||||||
private PlatformStrategyFactory platformStrategyFactory;
|
private PlatformStrategyFactory platformStrategyFactory;
|
||||||
|
|
||||||
@MockBean
|
@MockBean
|
||||||
private AirportPlatformRepository airportPlatformRepository;
|
private MachinePlatTypeRepository machinePlatTypeRepository;
|
||||||
|
|
||||||
private static final String TEST_AIRPORT_SN = "test-airport-001";
|
private static final String TEST_AIRPORT_SN = "test-airport-001";
|
||||||
|
|
||||||
|
|
@ -38,347 +38,15 @@ public class DrcStateMachineTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testAutowiredInjection() {
|
public void testAutowiredInjection() {
|
||||||
System.out.println("\n========== 测试依赖注入 ==========");
|
|
||||||
|
|
||||||
// 验证 PlatformStrategyFactory 是否成功注入
|
// 验证 PlatformStrategyFactory 是否成功注入
|
||||||
assertNotNull(platformStrategyFactory, "PlatformStrategyFactory 应该被成功注入");
|
assertNotNull(platformStrategyFactory, "PlatformStrategyFactory 应该被成功注入");
|
||||||
System.out.println("✓ PlatformStrategyFactory 注入成功: " + platformStrategyFactory.getClass().getName());
|
|
||||||
|
|
||||||
// 验证 DrcMachineService 是否成功注入
|
// 验证 DrcMachineService 是否成功注入
|
||||||
assertNotNull(drcMachineService, "DrcMachineService 应该被成功注入");
|
assertNotNull(drcMachineService, "DrcMachineService 应该被成功注入");
|
||||||
System.out.println("✓ DrcMachineService 注入成功: " + drcMachineService.getClass().getName());
|
|
||||||
|
|
||||||
// 验证 AirportPlatformRepository Mock 是否成功
|
// 验证 AirportPlatformRepository Mock 是否成功
|
||||||
assertNotNull(airportPlatformRepository, "AirportPlatformRepository Mock 应该被成功创建");
|
assertNotNull(machinePlatTypeRepository, "AirportPlatformRepository Mock 应该被成功创建");
|
||||||
System.out.println("✓ AirportPlatformRepository Mock 创建成功");
|
|
||||||
|
|
||||||
// 配置 Mock 行为
|
|
||||||
when(airportPlatformRepository.getPlatformType(anyString())).thenReturn(PlatformType.DJI);
|
|
||||||
|
|
||||||
// 测试 Mock 是否工作
|
|
||||||
PlatformType platformType = airportPlatformRepository.getPlatformType(TEST_AIRPORT_SN);
|
|
||||||
assertEquals(PlatformType.DJI, platformType, "Mock 应该返回 DJI 平台类型");
|
|
||||||
System.out.println("✓ Mock 行为配置成功,返回平台类型: " + platformType.getName());
|
|
||||||
|
|
||||||
System.out.println("\n========== 依赖注入测试通过 ✓ ==========\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private DrcMachineService drcMachineService;
|
|
||||||
// private PlatformStrategyFactory platformStrategyFactory;
|
|
||||||
// private AnnotationConfigApplicationContext context;
|
|
||||||
//
|
|
||||||
// private static final String TEST_AIRPORT_SN = "test-airport-001";
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试配置类
|
|
||||||
// */
|
|
||||||
// @Configuration
|
|
||||||
// static class TestConfig {
|
|
||||||
// @Bean
|
|
||||||
// public RedisStateStore redisStateStore() {
|
|
||||||
// return new RedisStateStore();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiCanEnterGuard djiCanEnterGuard() {
|
|
||||||
// return new DjiCanEnterGuard();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiCanExitGuard djiCanExitGuard() {
|
|
||||||
// return new DjiCanExitGuard();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiEnterAction djiEnterAction() {
|
|
||||||
// return new DjiEnterAction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiEnteredAction djiEnteredAction() {
|
|
||||||
// return new DjiEnteredAction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiExitAction djiExitAction() {
|
|
||||||
// return new DjiExitAction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiExitedAction djiExitedAction() {
|
|
||||||
// return new DjiExitedAction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiDrcListener djiDrcListener() {
|
|
||||||
// return new DjiDrcListener();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DjiDrcPlatformStrategy djiDrcPlatformStrategy() {
|
|
||||||
// return new DjiDrcPlatformStrategy();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public AirportPlatformRepository airportPlatformRepository() {
|
|
||||||
// // Mock实现,返回DJI平台类型
|
|
||||||
// return new AirportPlatformRepository() {
|
|
||||||
// @Override
|
|
||||||
// public PlatformType getPlatformType(String sn) {
|
|
||||||
// return PlatformType.DJI;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void registerAirport(String sn, PlatformType platformType) {
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public PlatformStrategyFactory platformStrategyFactory() {
|
|
||||||
// return new PlatformStrategyFactory();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DrcMachineConfig drcMachineConfig() {
|
|
||||||
// return new DrcMachineConfig();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Bean
|
|
||||||
// public DrcMachineService drcMachineService() {
|
|
||||||
// return new DrcMachineService();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// protected void setUp() throws Exception {
|
|
||||||
// super.setUp();
|
|
||||||
// System.out.println("========== 开始DRC状态机测试 ==========");
|
|
||||||
//
|
|
||||||
// // 初始化Spring上下文
|
|
||||||
// context = new AnnotationConfigApplicationContext(TestConfig.class);
|
|
||||||
// drcMachineService = context.getBean(DrcMachineService.class);
|
|
||||||
// platformStrategyFactory = context.getBean(PlatformStrategyFactory.class);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// protected void tearDown() throws Exception {
|
|
||||||
// if (context != null) {
|
|
||||||
// context.close();
|
|
||||||
// }
|
|
||||||
// super.tearDown();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试DRC状态机的完整流程:
|
|
||||||
// * UNKNOWN -> EXITED -> ENTERING -> ENTERED -> EXITING -> EXITED
|
|
||||||
// */
|
|
||||||
// @Test
|
|
||||||
// public void testDrcCompleteFlow() {
|
|
||||||
// System.out.println("\n========== 测试DRC完整流程 ==========");
|
|
||||||
//
|
|
||||||
// // 1. 初始状态应该是 UNKNOWN
|
|
||||||
// DrcState initialState = drcMachineService.getCurrentState(TEST_AIRPORT_SN);
|
|
||||||
// assertNotNull("状态机应该已创建", initialState);
|
|
||||||
// assertEquals("初始状态应该是UNKNOWN", DrcState.UNKNOWN, initialState);
|
|
||||||
// System.out.println("✓ 步骤1: 初始状态验证通过 - UNKNOWN");
|
|
||||||
//
|
|
||||||
// // 2. 从 UNKNOWN 同步到 EXITED(退出状态)
|
|
||||||
// boolean syncResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertTrue("同步到EXITED应该成功", syncResult);
|
|
||||||
// assertEquals("当前状态应该是EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 步骤2: UNKNOWN -> EXITED 转换成功");
|
|
||||||
//
|
|
||||||
// // 3. 进入DRC模式:EXITED -> ENTERING
|
|
||||||
// boolean enterResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTER);
|
|
||||||
// assertTrue("进入DRC模式应该成功", enterResult);
|
|
||||||
// assertEquals("当前状态应该是ENTERING", DrcState.ENTERING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 步骤3: EXITED -> ENTERING 转换成功");
|
|
||||||
//
|
|
||||||
// // 4. 进入完成:ENTERING -> ENTERED
|
|
||||||
// boolean enteredResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTERED);
|
|
||||||
// assertTrue("进入完成应该成功", enteredResult);
|
|
||||||
// assertEquals("当前状态应该是ENTERED", DrcState.ENTERED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 步骤4: ENTERING -> ENTERED 转换成功");
|
|
||||||
//
|
|
||||||
// // 5. 退出DRC模式:ENTERED -> EXITING
|
|
||||||
// boolean exitResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXIT);
|
|
||||||
// assertTrue("退出DRC模式应该成功", exitResult);
|
|
||||||
// assertEquals("当前状态应该是EXITING", DrcState.EXITING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 步骤5: ENTERED -> EXITING 转换成功");
|
|
||||||
//
|
|
||||||
// // 6. 退出完成:EXITING -> EXITED
|
|
||||||
// boolean exitedResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertTrue("退出完成应该成功", exitedResult);
|
|
||||||
// assertEquals("当前状态应该是EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 步骤6: EXITING -> EXITED 转换成功");
|
|
||||||
//
|
|
||||||
// System.out.println("\n========== DRC完整流程测试通过 ✓ ==========\n");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试DRC状态机的循环流程:
|
|
||||||
// * 可以多次进入和退出DRC模式
|
|
||||||
// */
|
|
||||||
// @Test
|
|
||||||
// public void testDrcCycleFlow() {
|
|
||||||
// System.out.println("\n========== 测试DRC循环流程 ==========");
|
|
||||||
//
|
|
||||||
// // 初始化到EXITED状态
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertEquals("初始状态应该是EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// // 第一次循环:进入 -> 退出
|
|
||||||
// System.out.println("\n--- 第一次循环 ---");
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTER);
|
|
||||||
// assertEquals("应该进入ENTERING状态", DrcState.ENTERING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTERED);
|
|
||||||
// assertEquals("应该进入ENTERED状态", DrcState.ENTERED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXIT);
|
|
||||||
// assertEquals("应该进入EXITING状态", DrcState.EXITING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertEquals("应该回到EXITED状态", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 第一次循环完成");
|
|
||||||
//
|
|
||||||
// // 第二次循环:再次进入 -> 退出
|
|
||||||
// System.out.println("\n--- 第二次循环 ---");
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTER);
|
|
||||||
// assertEquals("应该再次进入ENTERING状态", DrcState.ENTERING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTERED);
|
|
||||||
// assertEquals("应该再次进入ENTERED状态", DrcState.ENTERED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXIT);
|
|
||||||
// assertEquals("应该再次进入EXITING状态", DrcState.EXITING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertEquals("应该再次回到EXITED状态", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 第二次循环完成");
|
|
||||||
//
|
|
||||||
// System.out.println("\n========== DRC循环流程测试通过 ✓ ==========\n");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试非法状态转换
|
|
||||||
// * 验证状态机会拒绝不合法的状态转换
|
|
||||||
// */
|
|
||||||
// @Test
|
|
||||||
// public void testInvalidStateTransitions() {
|
|
||||||
// System.out.println("\n========== 测试非法状态转换 ==========");
|
|
||||||
//
|
|
||||||
// // 初始化到EXITED状态
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
// assertEquals("初始状态应该是EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// // 尝试从EXITED直接到ENTERED(应该失败)
|
|
||||||
// boolean invalidResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTERED);
|
|
||||||
// assertFalse("从EXITED直接到ENTERED应该失败", invalidResult);
|
|
||||||
// assertEquals("状态应该保持EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 非法转换被正确拒绝: EXITED -X-> ENTERED");
|
|
||||||
//
|
|
||||||
// // 进入ENTERING状态
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.ENTER);
|
|
||||||
// assertEquals("应该进入ENTERING状态", DrcState.ENTERING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
//
|
|
||||||
// // 尝试从ENTERING直接到EXITING(应该失败)
|
|
||||||
// invalidResult = drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXIT);
|
|
||||||
// assertFalse("从ENTERING直接到EXITING应该失败", invalidResult);
|
|
||||||
// assertEquals("状态应该保持ENTERING", DrcState.ENTERING,
|
|
||||||
// drcMachineService.getCurrentState(TEST_AIRPORT_SN));
|
|
||||||
// System.out.println("✓ 非法转换被正确拒绝: ENTERING -X-> EXITING");
|
|
||||||
//
|
|
||||||
// System.out.println("\n========== 非法状态转换测试通过 ✓ ==========\n");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试状态机的状态查询功能
|
|
||||||
// */
|
|
||||||
// @Test
|
|
||||||
// public void testStateQuery() {
|
|
||||||
// System.out.println("\n========== 测试状态查询功能 ==========");
|
|
||||||
//
|
|
||||||
// // 初始化到EXITED状态
|
|
||||||
// drcMachineService.sendEvent(TEST_AIRPORT_SN, DrcEvent.EXITED);
|
|
||||||
//
|
|
||||||
// // 测试getCurrentState
|
|
||||||
// DrcState currentState = drcMachineService.getCurrentState(TEST_AIRPORT_SN);
|
|
||||||
// assertNotNull("当前状态不应该为null", currentState);
|
|
||||||
// assertEquals("当前状态应该是EXITED", DrcState.EXITED, currentState);
|
|
||||||
// System.out.println("✓ getCurrentState() 工作正常");
|
|
||||||
//
|
|
||||||
// // 测试getCurrentStates(获取状态字符串)
|
|
||||||
// String statesString = drcMachineService.getCurrentStates(TEST_AIRPORT_SN);
|
|
||||||
// assertNotNull("状态字符串不应该为null", statesString);
|
|
||||||
// assertTrue("状态字符串应该包含EXITED", statesString.contains("EXITED"));
|
|
||||||
// System.out.println("✓ getCurrentStates() 工作正常: " + statesString);
|
|
||||||
//
|
|
||||||
// // 测试isInState
|
|
||||||
// boolean isInExited = drcMachineService.isInState(TEST_AIRPORT_SN, DrcState.EXITED);
|
|
||||||
// assertTrue("应该处于EXITED状态", isInExited);
|
|
||||||
// System.out.println("✓ isInState() 工作正常");
|
|
||||||
//
|
|
||||||
// boolean isInEntered = drcMachineService.isInState(TEST_AIRPORT_SN, DrcState.ENTERED);
|
|
||||||
// assertFalse("不应该处于ENTERED状态", isInEntered);
|
|
||||||
// System.out.println("✓ isInState() 负面测试通过");
|
|
||||||
//
|
|
||||||
// System.out.println("\n========== 状态查询功能测试通过 ✓ ==========\n");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 测试状态机管理功能
|
|
||||||
// */
|
|
||||||
// @Test
|
|
||||||
// public void testStateMachineManagement() {
|
|
||||||
// System.out.println("\n========== 测试状态机管理功能 ==========");
|
|
||||||
//
|
|
||||||
// String testAirport = "test-airport-mgmt";
|
|
||||||
//
|
|
||||||
// // 测试状态机创建
|
|
||||||
// assertFalse("状态机应该不存在", drcMachineService.hasStateMachine(testAirport));
|
|
||||||
// drcMachineService.getOrCreateStateMachine(testAirport);
|
|
||||||
// assertTrue("状态机应该已创建", drcMachineService.hasStateMachine(testAirport));
|
|
||||||
// System.out.println("✓ 状态机创建成功");
|
|
||||||
//
|
|
||||||
// // 测试状态机计数
|
|
||||||
// int count = drcMachineService.getStateMachineCount();
|
|
||||||
// assertTrue("状态机数量应该大于0", count > 0);
|
|
||||||
// System.out.println("✓ 状态机计数: " + count);
|
|
||||||
//
|
|
||||||
// // 测试状态机重启
|
|
||||||
// drcMachineService.sendEvent(testAirport, DrcEvent.EXITED);
|
|
||||||
// assertEquals("状态应该是EXITED", DrcState.EXITED,
|
|
||||||
// drcMachineService.getCurrentState(testAirport));
|
|
||||||
//
|
|
||||||
// drcMachineService.restartStateMachine(testAirport);
|
|
||||||
// assertEquals("重启后状态应该回到UNKNOWN", DrcState.UNKNOWN,
|
|
||||||
// drcMachineService.getCurrentState(testAirport));
|
|
||||||
// System.out.println("✓ 状态机重启成功");
|
|
||||||
//
|
|
||||||
// // 测试状态机移除
|
|
||||||
// drcMachineService.removeStateMachine(testAirport);
|
|
||||||
// assertFalse("状态机应该已移除", drcMachineService.hasStateMachine(testAirport));
|
|
||||||
// System.out.println("✓ 状态机移除成功");
|
|
||||||
//
|
|
||||||
// System.out.println("\n========== 状态机管理功能测试通过 ✓ ==========\n");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue