1 46 50 package org.mr.core.protocol; 51 52 53 import java.util.Collections ; 54 import java.util.Comparator ; 55 import java.util.List ; 56 57 import javax.jms.JMSException ; 58 59 import org.mr.api.jms.MantaMessage; 60 61 62 63 71 public class MantaBusMessageUtil { 72 73 public static MantaBusMessage createACKMessage(MantaBusMessage msg){ 74 75 MantaBusMessage result = MantaBusMessage.getInstance(); 76 result.getElements().putAll(msg.getElements()); 77 78 result.setDeliveryMode(msg.getDeliveryMode()); 79 DeadEndRecipient recipient = DeadEndRecipient.createDeadEndRecipient(msg.getSource().getAgentName(), msg.getSource().getDomainName()); 80 result.setRecipient(recipient); 81 result.setMessageType(msg.getMessageType()); 82 result.setPriority(msg.getPriority()); 83 result.setValidUntil(Long.MAX_VALUE); 86 87 return result; 88 } 89 90 94 public static void sortMessagesBySendTime( List tempList){ 95 Collections.sort(tempList, new Comparator (){ 96 97 public int compare(Object o1, Object o2) { 98 MantaBusMessage first = (MantaBusMessage) o1; 99 MantaBusMessage sec = (MantaBusMessage) o2; 100 if(first.getPayload() instanceof MantaMessage && sec.getPayload() instanceof MantaMessage){ 101 MantaMessage m1 = (MantaMessage) first.getPayload(); 102 MantaMessage m2 = (MantaMessage) sec.getPayload(); 103 long m1Time = 0; 104 long m2Time = 0; 105 106 try { 107 m1Time = m1.getJMSTimestamp(); 108 m2Time = m2.getJMSTimestamp(); 109 } catch (JMSException e) { 110 } 111 if(m1Time == m2Time && m2Time != 0){ 112 return (int) (first.getMessageIdAsLong()-sec.getMessageIdAsLong()); 114 } 115 116 return (int)(m1Time-m2Time); 117 } 118 return 0; 119 } 120 121 }); 122 } 123 124 129 public static void sortMessagesByEnqueueTime( List tempList,String headerName){ 130 final String fhn = headerName; 131 Collections.sort(tempList, new Comparator (){ 132 133 public int compare(Object o1, Object o2) { 134 MantaBusMessage first = (MantaBusMessage) o1; 135 MantaBusMessage sec = (MantaBusMessage) o2; 136 if(first.getPayload() instanceof MantaMessage && sec.getPayload() instanceof MantaMessage){ 137 long m1Time = 0; 138 long m2Time = 0; 139 140 m1Time = Long.parseLong(first.getHeader(fhn)); 141 m2Time = Long.parseLong(first.getHeader(fhn)); 142 if(m1Time == m2Time && m2Time != 0){ 143 return (int) (first.getMessageIdAsLong()-sec.getMessageIdAsLong()); 145 } 146 147 return (int)(m1Time-m2Time); 148 } 149 return 0; 150 } 151 152 }); 153 } 154 } 155 | Popular Tags |