| 
					
				 | 
			
			
				@@ -1,8 +1,73 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.nokia.sms.blacklist.message; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Arrays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.nokia.sms.blacklist.BlacklistTcpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.nokia.sms.blacklist.exception.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.nokia.sms.blacklist.exception.PhoneNumberCanNotBeNullException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.nokia.sms.blacklist.message.entity.CommandId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.nokia.sms.blacklist.message.entity.DelBlkBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * SMIT_DELBLK	0x00000003	解除黑名单请求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@SuppressWarnings("unused") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class SmitDelblkMessage { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final MessageHeader header; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private DelBlkBody delBlkBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static BlacklistTcpClient CLIENT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public SmitDelblkMessage(BlacklistTcpClient client) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 初始化header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        header = new MessageHeader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // header 12 + body 21 + 1 + 1 + 1 所以是36字节 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        header.setMessageLength(36); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        header.setCommandId(CommandId.SMIT_DELBLK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 从客户端获取下一个序号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        header.setSequenceNumber(client.getNextSequence()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SmitDelblkMessage.CLIENT = client; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        delBlkBody = new DelBlkBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setBlkNum(String phoneNumber) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        delBlkBody.setBlkNum(phoneNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public byte[] toByteArray() throws PhoneNumberCanNotBeNullException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        byte[] message = new byte[header.getMessageLength()]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 填充header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.arraycopy(header.toByteArray(), 0, message, 0, 12); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 填充 blk_Num 21字节 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (delBlkBody.getBlkNum() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new PhoneNumberCanNotBeNullException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        byte[] blkNumByteArray = delBlkBody.getBlkNum().getBytes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.arraycopy(blkNumByteArray, 0, message, 12, blkNumByteArray.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 填充 block_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message[33] = delBlkBody.getBlock_type(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message[34] = delBlkBody.getBlk_type(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message[35] = delBlkBody.getProvince_code(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return message; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public DelBlkBody parse(byte[] message) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MessageHeader header = MessageHeader.parse(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 判断消息类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CommandId.SMIT_DELBLK.equals(header.getCommandId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DelBlkBody delBlkBody = new DelBlkBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // blkNum 在 12-33字节 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delBlkBody.setBlkNum(new String(Arrays.copyOfRange(message, 12, 33)).trim()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delBlkBody.setBlock_type(message[33]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delBlkBody.setBlk_type(message[34]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delBlkBody.setProvince_code(message[35]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return delBlkBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (ParseException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |