package test.tianque.cmcc.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.PriorityBlockingQueue;import org.apache.commons.chain.Context;
import org.apache.commons.chain.impl.ContextBase;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;import com.tianque.sms.dao.MobileShortMessageDAO;
import com.tianque.sms.dao.SMSTablesDAO;
import com.tianque.sms.entity.MobileShortMessage;
import com.tianque.sms.sender.offer.SenderConstants;
import com.tianque.sms.sender.offer.SenderMessageOffer;
import com.tianque.sms.sender.poll.SenderMessagePoll;import test.tianque.base.BaseCMCCTestCase;
import test.tianque.base.MessageHelper;public class SMSTest extends BaseCMCCTestCase{
@Autowired
private MobileShortMessageDAO mobileShortMessageDAO;
@Autowired
@Qualifier("senderQueue")
private PriorityBlockingQueue senderQueue;
private Object NOT_IN_QUEUE_MESSAGE_LISTS;

public void TakeMobileShortMessage() throws Exception{
Context context=new ContextBase();
//取出需发送数据
List<MobileShortMessage> messages2=mobileShortMessageDAO.findReadyMessages();
context.put(SenderConstants.MESSAGE_LISTS,messages2);
List<MobileShortMessage> messages = (List<MobileShortMessage>) context
.get(SenderConstants.MESSAGE_LISTS);
System.out.println("数据库短信数量messages:"+messages.size());

List<MobileShortMessage> canNotEnQueueMessages = new ArrayList();
for (int i = 0; i < messages.size(); ++i) {
if (!senderQueue.offer(messages.get(i))) {
System.out.println("短信无法进入发送队列,短信ID为"+messages.get(i).getId());
}
}
context.put(NOT_IN_QUEUE_MESSAGE_LISTS, canNotEnQueueMessages);
MobileShortMessage message = (MobileShortMessage) senderQueue.poll();
if (message == null) {
System.out.println("队列没有要发送的短信!");
}
System.out.println("目前队列里有"+senderQueue.size()+"条短信待发");
}

@Test
public void test测试(){
//加入测试数据
for(int i=0;i<10;i++){
try {
MobileShortMessage message1 = this.mobileShortMessageDAO
.add(MessageHelper.getAMobileShortMessage());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// SMSTest t=new SMSTest();
// Thread th=new Thread((Runnable) t);   //这里出错 怎么才能每格一断时间调用一次TakeMobileShortMessage() 方法
// th.start();
// th.sleep(1000);
}

}