| 
					
				 | 
			
			
				@@ -4,72 +4,60 @@ import com.beanit.its.C2CAuthenticatedMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.beanit.its.PDUs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.beanit.its.Reject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.beanit.its.RejectType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.app.common.utils.NettyUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.rota.server.common.SpringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.its.rota.server.dto.CenterDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.rota.server.process.dbms.DbmsDataProcess; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import io.netty.channel.ChannelHandlerContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.rota.server.repository.ApplicationRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.MDC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class RejectResponse implements ItsAsnResponse { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private CenterDto obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ChannelHandlerContext ctx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private CenterDto center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private C2CAuthenticatedMessage c2c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private DbmsDataProcess dbmsDataProcess; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public RejectResponse(CenterDto obj, ChannelHandlerContext ctx, C2CAuthenticatedMessage c2c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.obj = obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.ctx = ctx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public RejectResponse(CenterDto center, C2CAuthenticatedMessage c2c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.center = center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.c2c = c2c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.dbmsDataProcess = SpringUtils.getBean(DbmsDataProcess.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public boolean response() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String ipAddress = NettyUtils.getRemoteIpAddress(this.ctx.channel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("RejectResponse.response: {}", ipAddress); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PDUs pdus = this.c2c.getPdu(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Reject reject = pdus.getReject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (reject == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("RejectResponse.response: {}, reject data null", ipAddress); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean result = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MDC.put("id", this.center.getLogKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("RejectResponse.response: [{}, {}]. Will be closed.", this.center.getLogKey(), this.center.getIpAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            PDUs pdus = this.c2c.getPdu(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Reject reject = pdus.getReject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (reject == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("RejectResponse.response: [{}, {}]. reject data null", this.center.getLogKey(), this.center.getIpAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long dataPacketNmbr = c2c.getDatexDataPacketNumber().value.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long  rejectPacketNmbr = reject.getDatexRejectPacketNbr().value.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RejectType rejectType = reject.getDatexRejectType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int rejectCode = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (rejectType.getDatexRejectLoginCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rejectCode = rejectType.getDatexRejectLoginCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("RejectResponse.response: [{}, {}]. RejectLoginCd: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (rejectType.getDatexRejectSubscriptionCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rejectCode = rejectType.getDatexRejectSubscriptionCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("RejectResponse.response: [{}, {}]. RejectSubscription: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (rejectType.getDatexRejectPublicationCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rejectCode = rejectType.getDatexRejectPublicationCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("RejectResponse.response: [{}, {}]. RejectPublication: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ApplicationRepository.closeChannel(this.center, this.center.getNetState().getChannel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        long dataPacketNmbr = c2c.getDatexDataPacketNumber().value.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Long  rejectPacketNmbr = reject.getDatexRejectPacketNbr().value.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RejectType rejectType = reject.getDatexRejectType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        TbRseCtrlHs command = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int rejectCode = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (rejectType.getDatexRejectLoginCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rejectCode = rejectType.getDatexRejectLoginCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("RejectResponse.response: {}. RejectLoginCd: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // TODO: 클라이언트와의 연결을 종료한다. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //ItsAsnServerIdleStatePacketHandler.disconnectChannel(this.obj, this.ctx.channel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("RejectResponse.response: [{}, {}]. Packet send Exception. will be closed. {}", this.center.getLogKey(), this.center.getIpAddress(), e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else if (rejectType.getDatexRejectSubscriptionCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rejectCode = rejectType.getDatexRejectSubscriptionCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("RejectResponse.response: {}. RejectSubscription: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            this.obj.removeRegisteredCommands(rejectPacketNmbr, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            command = this.obj.getUserCommands(rejectPacketNmbr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MDC.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else if (rejectType.getDatexRejectPublicationCd() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rejectCode = rejectType.getDatexRejectPublicationCd().value.intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("RejectResponse.response: {}. RejectPublication: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            this.obj.removeRegisteredCommands(rejectPacketNmbr, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            command = this.obj.getUserCommands(rejectPacketNmbr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        if (command != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            log.error("RejectResponse.response: {}. Reject User Command: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-////            this.obj.removeUserCommands(rejectPacketNmbr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-////            // TODO: 제어명령 전송정보 전송(실패) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-////            command.setRspsType("4");  // 명령 실패(REJECT)로 설정 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-////            RseCtlrMapper mapper = (RseCtlrMapper) AppUtils.getBean(RseCtlrMapper.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-////            mapper.updateRseCtrlHs(command); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |