Guest User

Client

a guest
Jul 31st, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.40 KB | None | 0 0
  1. /*
  2. * Copyright 2013 heroandtn3 (heroandtn3 [at] gmail.com)
  3. *
  4. * This file is part of MGWTCellListDemo.
  5. * MGWTCellListDemo is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9.  
  10. * MGWTCellListDemo is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14.  
  15. * You should have received a copy of the GNU General Public License
  16. * along with MGWTCellListDemo. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18.  
  19. /**
  20. *
  21. */
  22. package com.airit.mobile.client.local;
  23.  
  24. import java.util.ArrayList;
  25. import java.util.Date;
  26. import java.util.HashMap;
  27.  
  28. import javax.inject.Inject;
  29. import javax.inject.Singleton;
  30.  
  31. import org.jboss.errai.bus.client.ErraiBus;
  32. import org.jboss.errai.bus.client.api.base.MessageBuilder;
  33. import org.jboss.errai.bus.client.api.messaging.Message;
  34. import org.jboss.errai.bus.client.api.messaging.MessageBus;
  35. import org.jboss.errai.bus.client.api.messaging.MessageCallback;
  36. import org.jboss.errai.bus.client.api.messaging.RequestDispatcher;
  37. import org.jboss.errai.common.client.util.LogUtil;
  38.  
  39. import com.airit.mobile.client.local.activity.chart.ChartView;
  40. import com.airit.mobile.client.local.activity.chart.ChartViewGwtImp;
  41. import com.airit.mobile.client.local.activity.detail.FlightDetailActivity;
  42. import com.airit.mobile.client.local.activity.detail.FlightDetailView;
  43. import com.airit.mobile.client.local.activity.detail.FlightDetailViewGwtImp;
  44. import com.airit.mobile.client.local.activity.filter.FilterView;
  45. import com.airit.mobile.client.local.activity.filter.FilterViewGwtImp;
  46. import com.airit.mobile.client.local.activity.home.HomeActivity;
  47. import com.airit.mobile.client.local.activity.home.HomePlace;
  48. import com.airit.mobile.client.local.activity.home.HomeView;
  49. import com.airit.mobile.client.local.activity.home.HomeViewGwtImpl;
  50. import com.airit.mobile.client.local.activity.location.LocationView;
  51. import com.airit.mobile.client.local.activity.location.LocationViewGwtImpl;
  52. import com.airit.mobile.client.shared.ClientMessage;
  53. import com.airit.mobile.client.shared.Flight;
  54. import com.airit.mobile.client.shared.FlightQuery;
  55. import com.airit.mobile.client.shared.ServerMessage;
  56. import com.google.gwt.i18n.client.DateTimeFormat;
  57. import com.google.gwt.place.shared.PlaceController;
  58. import com.google.web.bindery.event.shared.EventBus;
  59. import com.google.web.bindery.event.shared.SimpleEventBus;
  60. import com.googlecode.gwtphonegap.client.PhoneGap;
  61. //import com.googlecode.gwtphonegap.client.notification.Notification;
  62.  
  63. /**
  64. * @author heroandtn3
  65. *
  66. */
  67. @Singleton
  68. public class ClientFactoryImpl implements ClientFactory {
  69.  
  70. private HomeViewGwtImpl homeView = null;
  71. private EventBus eventBus;
  72. private PlaceController placeController;
  73. private FlightDetailView personView;
  74. private FilterView sortView;
  75. private ChartView chartView;
  76. private LocationView locationView;
  77. private HashMap<Long,Flight> flightMap;
  78. private ArrayList<String> spotsList;
  79. private ArrayList<String> airportsList;
  80. private ArrayList<String> airlinesList;
  81. private FlightQuery filterQuery;
  82. private FlightQuery noFilterQuery;
  83. private MessageBus bus = ErraiBus.get();
  84. private RequestDispatcher dispatcher = ErraiBus.getDispatcher();
  85. private String sessionId;
  86. private HomeActivity homeActivity;
  87. private FlightDetailActivity flightDetailActivity;
  88. private PhoneGap phoneGap;
  89. private App app;
  90. // @Inject
  91. //private Notification notification;
  92.  
  93.  
  94.  
  95.  
  96. //@Inject Provider<HomeActivity> ;
  97. /**
  98. *
  99. */
  100. @Inject
  101. public ClientFactoryImpl() {
  102.  
  103.  
  104. }
  105.  
  106. public void initMessagingSystem(){
  107. getBus().subscribe("FlightClientReceiver", new MessageCallback() {
  108. @Override
  109. public void callback(Message message) {
  110. // TODO Auto-generated method stub
  111. ClientMessage clientMessage = message.get(ClientMessage.class, "clientMessage");
  112. String type = clientMessage.getType();
  113. if(type != null){
  114. LogUtil.log("Client received new message TYPE:"+type);
  115. if(type.equals(ClientMessage.INIT_SESSION_MESSAGE_TYPE)){
  116. LogUtil.log("Client received new message SESSION iD:"+clientMessage.getSessionId());
  117. boolean isFirstLoad = sessionId == null;
  118. boolean isSessionActive = false;
  119. if(!isFirstLoad ){
  120. LogUtil.log("##CURRENT SESSION ID::"+sessionId);
  121. LogUtil.log("##NEW SESSION ID::"+clientMessage.getSessionId());
  122. if(clientMessage.getSessionId() != null && clientMessage.getSessionId().equals(sessionId)){
  123. isSessionActive = true;
  124. }
  125. }
  126. sessionId = clientMessage.getSessionId();
  127. if(isFirstLoad){
  128. app.loadApp();
  129. }else if(isSessionActive){
  130. requestOfflineMessages();
  131. }else{
  132. getPlaceController().goTo(new HomePlace(true));
  133. }
  134.  
  135. }else if(type.equals(ClientMessage.FLIGHT_UPDATE_MESSAGE_TYPE)){
  136. sendAckMessageReceived(clientMessage.getMessageId(),message);
  137. if(getHomeActivity()!=null){
  138. getHomeActivity().onFlightLoaded(clientMessage);
  139. }
  140. if(getFlightDetailActivity()!=null){
  141. getFlightDetailActivity().onFlightLoaded(clientMessage);
  142. }
  143.  
  144. }
  145. }
  146. }
  147. });
  148. requestSessionId();
  149. }
  150. @Override
  151. public void requestSessionId(){
  152. MessageBuilder.createMessage()
  153. .toSubject("FlightUpdateService") // (1)
  154. .signalling() // (2)
  155. .with("serverMessage", new ServerMessage(ServerMessage.SESSION_ID_REQUEST))
  156. .noErrorHandling() // (3)
  157. .sendNowWith(dispatcher); // (4)
  158.  
  159. }
  160. private void requestOfflineMessages() {
  161. MessageBuilder.createMessage()
  162. .toSubject("FlightUpdateService") // (1)
  163. .signalling() // (2)
  164. .with("serverMessage", new ServerMessage(ServerMessage.REQ_OFFLINE_MESSAGES,sessionId))
  165. .noErrorHandling() // (3)
  166. .sendNowWith(dispatcher); // (4)
  167.  
  168. }
  169. private void sendAckMessageReceived(String messageId,Message message) {
  170. LogUtil.log("##Sending ACK MEssage:"+messageId);
  171. MessageBuilder.createConversation(message)
  172. .toSubject("FlightUpdateService") // (1)
  173. .signalling() // (2)
  174. .with("serverMessage", new ServerMessage(ServerMessage.ACK_MESSAGE_RECEIVED,sessionId,messageId))
  175. .noErrorHandling() // (3)
  176. .sendNowWith(dispatcher); // (4)
  177.  
  178. }
  179. @Override
  180. public EventBus getEventBus() {
  181. if (eventBus == null) {
  182. eventBus = new SimpleEventBus();
  183. }
  184. return eventBus;
  185. }
  186.  
  187. @Override
  188. public PlaceController getPlaceController() {
  189. if (placeController == null) {
  190. placeController = new PlaceController(getEventBus());
  191. }
  192. return placeController;
  193. }
  194.  
  195. @Override
  196. public HomeView getHomeView() {
  197. if (homeView == null) {
  198. homeView = new HomeViewGwtImpl();
  199. }
  200. return homeView;
  201. }
  202.  
  203. @Override
  204. public FlightDetailView getPersonDetailView() {
  205. if (personView == null) {
  206. personView = new FlightDetailViewGwtImp();
  207. }
  208. return personView;
  209. }
  210.  
  211. @Override
  212. public FilterView getSortView() {
  213. if (sortView == null) {
  214. sortView = new FilterViewGwtImp();
  215. }
  216. return sortView;
  217. }
  218.  
  219. @Override
  220. public ChartView getChartView() {
  221. if (chartView == null) {
  222. chartView = new ChartViewGwtImp();
  223. }
  224. return chartView;
  225. }
  226.  
  227.  
  228. @Override
  229. public HomeActivity getHomeActivity() {
  230. return homeActivity;
  231. }
  232.  
  233. public FlightDetailActivity getFlightDetailActivity() {
  234. return flightDetailActivity;
  235. }
  236.  
  237. public void setFlightDetailActivity(FlightDetailActivity flightDetailActivity) {
  238. this.flightDetailActivity = flightDetailActivity;
  239. }
  240.  
  241. public void setHomeActivity(HomeActivity homeActivity) {
  242. this.homeActivity = homeActivity;
  243. }
  244.  
  245. @Override
  246. public LocationView getLocationView() {
  247. if (locationView == null) {
  248. locationView = new LocationViewGwtImpl();
  249. }
  250. return locationView;
  251. }
  252.  
  253. public HashMap<Long,Flight> getFlightMap(){
  254. return flightMap;
  255. }
  256.  
  257. public void setFlightMap(HashMap<Long, Flight> flightMap) {
  258. this.flightMap = flightMap;
  259. }
  260.  
  261. public ArrayList<String> getSpotsList() {
  262. return spotsList;
  263. }
  264.  
  265. public void setSpotsList(ArrayList<String> spotsList) {
  266. this.spotsList = spotsList;
  267. }
  268.  
  269. public ArrayList<String> getAirportsList() {
  270. return airportsList;
  271. }
  272.  
  273. public void setAirportsList(ArrayList<String> airportsList) {
  274. this.airportsList = airportsList;
  275. }
  276.  
  277. public ArrayList<String> getAirlinesList() {
  278. return airlinesList;
  279. }
  280.  
  281. public void setAirlinesList(ArrayList<String> airlinesList) {
  282. this.airlinesList = airlinesList;
  283. }
  284.  
  285. public void setFilterQuery(FlightQuery filterQuery){
  286. this.filterQuery = filterQuery;
  287.  
  288. }
  289.  
  290. public FlightQuery getFilterQuery(){
  291. if(filterQuery!=null){
  292. filterQuery .setSessionId(sessionId);
  293. }
  294. return filterQuery;
  295. }
  296.  
  297. public MessageBus getBus() {
  298. return bus;
  299. }
  300. public PhoneGap getPhoneGap() {
  301. return phoneGap;
  302. }
  303.  
  304. public void setPhoneGap(PhoneGap phoneGap) {
  305. this.phoneGap = phoneGap;
  306. }
  307.  
  308. public String getSessionId() {
  309. return sessionId;
  310. }
  311.  
  312.  
  313. public FlightQuery getNoFilterQuery(){
  314. if(noFilterQuery == null){
  315. Long hoursInMillis = 60L * 60L * 1000L;
  316. Date now = new Date();
  317. Date startDate = new Date(now.getTime() - (3L * hoursInMillis));
  318. Date endDate = new Date(now.getTime() + (3L * hoursInMillis));
  319. DateTimeFormat format = DateTimeFormat.getFormat("MM/dd/yyyy HH:mm");
  320. noFilterQuery = new FlightQuery();
  321. noFilterQuery.setStartDate(format.format(startDate));
  322. noFilterQuery.setEndDate(format.format(endDate));
  323. }
  324. noFilterQuery.setSessionId(sessionId);
  325. return noFilterQuery;
  326. }
  327.  
  328. public App getApp() {
  329. return app;
  330. }
  331.  
  332. public void setApp(App app) {
  333. this.app = app;
  334. }
  335.  
  336. public void createNotification (String message){
  337. if(this.getPhoneGap() != null){
  338. getPhoneGap().getNotification().alert(message);
  339. }
  340. // String message = "Flight "+fm.getFlight().getFlightMessage()+ " Has Been "+fm.getActionDisplay();
  341. // notification.alert(message);
  342. }
  343. @Override
  344. public void setOfflineMode(){
  345. if(getHomeActivity() != null){
  346. getHomeActivity().setOffline();
  347. }
  348. createNotification("The application is now in offline mode.");
  349. }
  350. }
Advertisement
Add Comment
Please, Sign In to add comment