Advertisement
azgal93

orange

Apr 8th, 2016
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.57 KB | None | 0 0
  1. /**
  2. * $RCSfile: SmsWorkOutOrange.java,v $
  3. * $Revision: 1.3 $
  4. * $Date: 2015/02/10 14:33:36 $
  5. * $Source: /CVS/java/io2/src/pl/com/altar/io2/common/sms/type/SmsWorkOutOrange.java,v $
  6. * $Author: kuba $
  7. */
  8. package pl.com.altar.io2.common.sms.type;
  9.  
  10. import java.rmi.RemoteException;
  11. import java.sql.Timestamp;
  12. import java.util.Arrays;
  13. import java.util.Calendar;
  14. import java.util.Collection;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. import java.util.Iterator;
  18.  
  19. import pl.com.altar.io2.common.Const;
  20. import pl.com.altar.io2.common.Env;
  21. import pl.com.altar.io2.common.Stat;
  22. import pl.com.altar.io2.common.Util;
  23. import pl.com.altar.io2.common.sms.ConfigAPI;
  24. import pl.com.altar.io2.common.thread.SmsWorkThreadOut;
  25. import pl.com.altar.io2.factory.SmsFactory;
  26. import pl.com.altar.io2.value.SmsValue;
  27. import pl.com.altar.io2.webservice.client.OrangeSMSC.SMSSender;
  28. import pl.com.altar.io2.webservice.client.OrangeSMSC.gen.SubmitException;
  29. import pl.com.altar.util.database.DBSQLException;
  30. import pl.com.altar.util.database.FinderException;
  31. import pl.com.altar.util.database.InconsistencyException;
  32. import pl.com.altar.util.database.StatementParameters;
  33.  
  34. public class SmsWorkOutOrange extends SmsWorkThreadOut {
  35.  
  36. protected void sendSms() {
  37. final int MAX_GET = 100;
  38. log.info("SmsWorkThreadOut sendSms START [max=" + MAX_GET + "]");
  39. SmsValue[] smsTAB;
  40. Collection<SmsValue> smsColl;
  41. HashMap<Integer, SmsValue> mapa;
  42. SmsFactory sf = new SmsFactory();
  43.  
  44. //szukamy smsow do wyslania
  45. try {
  46. SmsValue query = new SmsValue();
  47. query.setKierunek(Const.SMS_OUT);
  48. query.setStatus(Const.SMS_STATE_NEW);
  49. StatementParameters statementParameters = new StatementParameters();
  50. statementParameters.setMaxRows(MAX_GET);
  51. smsColl = sf.findSmsQuery(query, statementParameters);
  52. if (smsColl == null || smsColl.size() == 0) {
  53. log.info("SmsWorkThreadOut sendSms STOP (Brak zadan)");
  54. return;
  55. }
  56. // jesli pobralismy max ilosc to od razu odpalamy drugi watek
  57. if (smsColl.size() == MAX_GET)
  58. Stat.addSmsOutWork(SmsWorkThreadOut.newInstance());
  59.  
  60. smsTAB = smsColl.toArray(new SmsValue[smsColl.size()]);
  61. mapa = new HashMap<Integer, SmsValue>();
  62. for (int i = 0; i < smsTAB.length; i++) {
  63. mapa.put(smsTAB[i].getId(), smsTAB[i]);
  64. }
  65. }
  66. catch (DBSQLException ex) {
  67. logSmsException(ex, "Blad SQL");
  68. return;
  69. }
  70. catch (Exception ex) {
  71. logSmsException(ex, "Blad SQL");
  72. return;
  73. }
  74.  
  75. //wysylamy kolekcje smsow, ustawiamy statusy
  76. try {
  77. sendSmses(smsColl);
  78. }
  79. catch (RemoteException ex) {
  80. logSmsException(ex, "Blad inicjowania wysylania SMS");
  81. return;
  82. }
  83.  
  84. //aktualizujemy w bazie po wyslaniu
  85. for (Iterator<SmsValue> iterator = smsColl.iterator(); iterator.hasNext();) {
  86. SmsValue smsValue = (SmsValue)iterator.next();
  87. try {
  88. if (!smsValue.getStatus().equals(Const.SMS_STATE_NEW))
  89. sf.updateSms(smsValue);
  90. }
  91. catch (FinderException ex) {
  92. logSmsException(ex, "Blad");
  93. return;
  94. }
  95. catch (InconsistencyException ex) {
  96. logSmsException(ex, "Blad");
  97. return;
  98. }
  99. catch (DBSQLException ex) {
  100. logSmsException(ex, "Blad SQL");
  101. return;
  102. }
  103. catch (Exception ex) {
  104. logSmsException(ex, "Blad");
  105. return;
  106. }
  107.  
  108. }
  109. log.info(String.format("SmsWorkThreadOut STOP [%d]", smsColl.size()));
  110. }
  111.  
  112. private void logSmsException(Exception ex, String errmsg) {
  113. log.error(String.format("%s: %s", errmsg, ex.getMessage()));
  114. log.info("SmsWorkThreadOut sendSms STOP");
  115. }
  116.  
  117.  
  118.  
  119. /*
  120. * Odszukuje LA po numerze nadawcy.
  121. * Numer nadawcy mo¿e byæ albo = LA
  122. * albo mo¿e byæ pod tym LA w liœcie numerów do prezentacji
  123. */
  124.  
  125.  
  126. private String findLA(String senderAddress) {
  127. String la = null, numbersConf = null;
  128. String[] numbers;
  129. for (int ii = Const.MIN_LA_N; ii <= Const.MAX_LA_N; ii++) {
  130. la = Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N, ii), false);
  131. if (la == null)
  132. continue;
  133. else if (la.equals(senderAddress))
  134. return la;
  135. else {
  136. numbersConf = Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N_NUMBERS, ii), false);
  137. numbers = ConfigAPI.numbers2Array(numbersConf);
  138. if (Arrays.asList(numbers).contains(senderAddress))
  139. return la;
  140. }
  141. }
  142. return la;
  143. }
  144.  
  145. private String findUsername(String LA) {
  146. String la;
  147. for (int ii = Const.MIN_LA_N; ii <= Const.MAX_LA_N; ii++) {
  148. la = Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N, ii), false);
  149. if (la == null)
  150. continue;
  151. else if (la.equals(LA))
  152. return Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N_USERNAME, ii), true);
  153. }
  154. return null;
  155. }
  156.  
  157. private String findPassword(String LA) {
  158. String la;
  159. for (int ii = Const.MIN_LA_N; ii <= Const.MAX_LA_N; ii++) {
  160. la = Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N, ii), false);
  161. if (la == null)
  162. continue;
  163. else if (la.equals(LA))
  164. return Env.getConfParameterValue(String.format(Const.CONF_SMS_ORANGESMSC_LA_N_PASSWORD, ii), true);
  165. }
  166. return null;
  167. }
  168.  
  169. private void sendSmses(Collection<SmsValue> smsColl) throws RemoteException {
  170. String url = Env.getConfParameterValue(Const.CONF_SMS_ORANGESMSC_URL, true);
  171. String auth = Env.getConfParameterValue(Const.CONF_SMS_ORANGESMSC_AUTHORIZATION_BASIC, false);
  172. String LA, user, pass;
  173. SMSSender sender = null;
  174. HashMap<String, SMSSender> senders = new HashMap<String, SMSSender>();
  175.  
  176. for (Iterator<SmsValue> iterator = smsColl.iterator(); iterator.hasNext();) {
  177. SmsValue smsValue = (SmsValue)iterator.next();
  178. Calendar expiryDate = null;
  179. Timestamp waznosc = smsValue.getWaznosc();
  180. if (waznosc != null) {
  181. expiryDate = Calendar.getInstance();
  182. expiryDate.setTimeInMillis(waznosc.getTime());
  183. }
  184. try {
  185. boolean czyPotwierdzac;
  186. String deliveryStatus;
  187. if (smsValue.getPotwierdzenie() == 0) {
  188. czyPotwierdzac = false;
  189. deliveryStatus = Const.SMS_STATE_DELIVERED;
  190. }
  191. else {
  192. czyPotwierdzac = true;
  193. deliveryStatus = Const.SMS_OUT_STATE_WAIT_DELIVERY;
  194. }
  195.  
  196. LA = findLA(smsValue.getNadawca());
  197. if (LA == null) {
  198. log.error("Blad wyslania smsa: brak skonfigurowanego LA dla nadawcy:" + smsValue.getNadawca());
  199. continue;
  200. }
  201. user = findUsername(LA);
  202. if (user == null) {
  203. log.error("Blad wyslania smsa: brak skonfigurowanego user dla LA:" + LA);
  204. continue;
  205. }
  206.  
  207. pass = findPassword(LA);
  208. if (pass == null) {
  209. log.error("Blad wyslania smsa: brak skonfigurowanego pass dla LA:" + LA);
  210. continue;
  211. }
  212.  
  213. log.debug(String.format("LA='%s' user='%s' pass='%s'", LA, user, pass));
  214.  
  215. if (auth == null || auth.equals("0")) {
  216. if (sender == null) sender = new SMSSender(url);
  217. }
  218. else {
  219. sender = senders.get(LA);
  220. if (sender == null) {
  221. String login = String.format("%s+%s", LA, user);
  222. sender = new SMSSender(url, login, pass);
  223. senders.put(LA, sender);
  224. }
  225.  
  226. }
  227.  
  228. String idSmsc = sender.sendSMS(smsValue.getTresc(), smsValue.getOdbiorca(), LA, pass, user, smsValue.getNadawca(), expiryDate, czyPotwierdzac);
  229.  
  230. smsValue.setIdSmsc(idSmsc);
  231. smsValue.setStatus(deliveryStatus);
  232. Date date = new java.util.Date();
  233. smsValue.setData(new Timestamp(date.getTime()));
  234. }
  235. catch (RemoteException ex) {
  236. log.error("Blad wyslania smsow:" + ex.getMessage());
  237. log.error(Util.getStackTraceWriter(ex));
  238. return;
  239. }
  240. catch (SubmitException ex) {
  241. log.error("Blad wyslania smsow:" + ex.getMessage());
  242. log.error(Util.getStackTraceWriter(ex));
  243. return;
  244. }
  245. }
  246. }
  247.  
  248. @Override
  249. protected void receiveDelivery() {
  250. // TODO Auto-generated method stub
  251. }
  252.  
  253. public static void main(String[] args) {
  254. String numbers = "aaaaa , bbbb,cccc, ddddd,";
  255. System.out.println(Arrays.asList(ConfigAPI.numbers2Array(numbers)));
  256. /*
  257. SmsWorkOutOrange swoo = new SmsWorkOutOrange();
  258. swoo.sendSms();
  259. */
  260.  
  261. }
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement