package com.fzzy.igds.camera; import com.fzzy.igds.constant.CameraPlayType; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * 视频接口管理,用于管理不同播放方式的协议接口,业务通过当前管理调用不同的实现 */ @Component(ApiCameraManager.BEAN_ID) public class ApiCameraManager implements ApplicationContextAware { public static final String BEAN_ID = "core.apiCameraManager"; public static Map remoteMap = new HashMap<>(); @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map grainMap = applicationContext.getBeansOfType(ApiCameraService.class); for (String key : grainMap.keySet()) { remoteMap.put(grainMap.get(key).getType(), grainMap.get(key)); } } /** * 根据类型标签封装不同的接口实现, * * @param type 可以是playType,可以是snapType,可以是ptzType * @return 接口实现 */ public ApiCameraService getApiCameraService(String type) { ApiCameraService apiCameraService = remoteMap.get(type); if (null == apiCameraService) { apiCameraService = remoteMap.get(CameraPlayType.PLAY_TYPE_DEFAULT.getCode()); } return apiCameraService; } }