Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright 2013 heroandtn3 (heroandtn3 [at] gmail.com)
- *
- * This file is part of MGWTCellListDemo.
- * MGWTCellListDemo is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * MGWTCellListDemo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with MGWTCellListDemo. If not, see <http://www.gnu.org/licenses/>.
- */
- /**
- *
- */
- package com.airit.mobile.client.local;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import javax.inject.Inject;
- import javax.inject.Singleton;
- import org.jboss.errai.bus.client.ErraiBus;
- import org.jboss.errai.bus.client.api.base.MessageBuilder;
- import org.jboss.errai.bus.client.api.messaging.Message;
- import org.jboss.errai.bus.client.api.messaging.MessageBus;
- import org.jboss.errai.bus.client.api.messaging.MessageCallback;
- import org.jboss.errai.bus.client.api.messaging.RequestDispatcher;
- import org.jboss.errai.common.client.util.LogUtil;
- import com.airit.mobile.client.local.activity.chart.ChartView;
- import com.airit.mobile.client.local.activity.chart.ChartViewGwtImp;
- import com.airit.mobile.client.local.activity.detail.FlightDetailActivity;
- import com.airit.mobile.client.local.activity.detail.FlightDetailView;
- import com.airit.mobile.client.local.activity.detail.FlightDetailViewGwtImp;
- import com.airit.mobile.client.local.activity.filter.FilterView;
- import com.airit.mobile.client.local.activity.filter.FilterViewGwtImp;
- import com.airit.mobile.client.local.activity.home.HomeActivity;
- import com.airit.mobile.client.local.activity.home.HomePlace;
- import com.airit.mobile.client.local.activity.home.HomeView;
- import com.airit.mobile.client.local.activity.home.HomeViewGwtImpl;
- import com.airit.mobile.client.local.activity.location.LocationView;
- import com.airit.mobile.client.local.activity.location.LocationViewGwtImpl;
- import com.airit.mobile.client.shared.ClientMessage;
- import com.airit.mobile.client.shared.Flight;
- import com.airit.mobile.client.shared.FlightQuery;
- import com.airit.mobile.client.shared.ServerMessage;
- import com.google.gwt.i18n.client.DateTimeFormat;
- import com.google.gwt.place.shared.PlaceController;
- import com.google.web.bindery.event.shared.EventBus;
- import com.google.web.bindery.event.shared.SimpleEventBus;
- import com.googlecode.gwtphonegap.client.PhoneGap;
- //import com.googlecode.gwtphonegap.client.notification.Notification;
- /**
- * @author heroandtn3
- *
- */
- @Singleton
- public class ClientFactoryImpl implements ClientFactory {
- private HomeViewGwtImpl homeView = null;
- private EventBus eventBus;
- private PlaceController placeController;
- private FlightDetailView personView;
- private FilterView sortView;
- private ChartView chartView;
- private LocationView locationView;
- private HashMap<Long,Flight> flightMap;
- private ArrayList<String> spotsList;
- private ArrayList<String> airportsList;
- private ArrayList<String> airlinesList;
- private FlightQuery filterQuery;
- private FlightQuery noFilterQuery;
- private MessageBus bus = ErraiBus.get();
- private RequestDispatcher dispatcher = ErraiBus.getDispatcher();
- private String sessionId;
- private HomeActivity homeActivity;
- private FlightDetailActivity flightDetailActivity;
- private PhoneGap phoneGap;
- private App app;
- // @Inject
- //private Notification notification;
- //@Inject Provider<HomeActivity> ;
- /**
- *
- */
- @Inject
- public ClientFactoryImpl() {
- }
- public void initMessagingSystem(){
- getBus().subscribe("FlightClientReceiver", new MessageCallback() {
- @Override
- public void callback(Message message) {
- // TODO Auto-generated method stub
- ClientMessage clientMessage = message.get(ClientMessage.class, "clientMessage");
- String type = clientMessage.getType();
- if(type != null){
- LogUtil.log("Client received new message TYPE:"+type);
- if(type.equals(ClientMessage.INIT_SESSION_MESSAGE_TYPE)){
- LogUtil.log("Client received new message SESSION iD:"+clientMessage.getSessionId());
- boolean isFirstLoad = sessionId == null;
- boolean isSessionActive = false;
- if(!isFirstLoad ){
- LogUtil.log("##CURRENT SESSION ID::"+sessionId);
- LogUtil.log("##NEW SESSION ID::"+clientMessage.getSessionId());
- if(clientMessage.getSessionId() != null && clientMessage.getSessionId().equals(sessionId)){
- isSessionActive = true;
- }
- }
- sessionId = clientMessage.getSessionId();
- if(isFirstLoad){
- app.loadApp();
- }else if(isSessionActive){
- requestOfflineMessages();
- }else{
- getPlaceController().goTo(new HomePlace(true));
- }
- }else if(type.equals(ClientMessage.FLIGHT_UPDATE_MESSAGE_TYPE)){
- sendAckMessageReceived(clientMessage.getMessageId(),message);
- if(getHomeActivity()!=null){
- getHomeActivity().onFlightLoaded(clientMessage);
- }
- if(getFlightDetailActivity()!=null){
- getFlightDetailActivity().onFlightLoaded(clientMessage);
- }
- }
- }
- }
- });
- requestSessionId();
- }
- @Override
- public void requestSessionId(){
- MessageBuilder.createMessage()
- .toSubject("FlightUpdateService") // (1)
- .signalling() // (2)
- .with("serverMessage", new ServerMessage(ServerMessage.SESSION_ID_REQUEST))
- .noErrorHandling() // (3)
- .sendNowWith(dispatcher); // (4)
- }
- private void requestOfflineMessages() {
- MessageBuilder.createMessage()
- .toSubject("FlightUpdateService") // (1)
- .signalling() // (2)
- .with("serverMessage", new ServerMessage(ServerMessage.REQ_OFFLINE_MESSAGES,sessionId))
- .noErrorHandling() // (3)
- .sendNowWith(dispatcher); // (4)
- }
- private void sendAckMessageReceived(String messageId,Message message) {
- LogUtil.log("##Sending ACK MEssage:"+messageId);
- MessageBuilder.createConversation(message)
- .toSubject("FlightUpdateService") // (1)
- .signalling() // (2)
- .with("serverMessage", new ServerMessage(ServerMessage.ACK_MESSAGE_RECEIVED,sessionId,messageId))
- .noErrorHandling() // (3)
- .sendNowWith(dispatcher); // (4)
- }
- @Override
- public EventBus getEventBus() {
- if (eventBus == null) {
- eventBus = new SimpleEventBus();
- }
- return eventBus;
- }
- @Override
- public PlaceController getPlaceController() {
- if (placeController == null) {
- placeController = new PlaceController(getEventBus());
- }
- return placeController;
- }
- @Override
- public HomeView getHomeView() {
- if (homeView == null) {
- homeView = new HomeViewGwtImpl();
- }
- return homeView;
- }
- @Override
- public FlightDetailView getPersonDetailView() {
- if (personView == null) {
- personView = new FlightDetailViewGwtImp();
- }
- return personView;
- }
- @Override
- public FilterView getSortView() {
- if (sortView == null) {
- sortView = new FilterViewGwtImp();
- }
- return sortView;
- }
- @Override
- public ChartView getChartView() {
- if (chartView == null) {
- chartView = new ChartViewGwtImp();
- }
- return chartView;
- }
- @Override
- public HomeActivity getHomeActivity() {
- return homeActivity;
- }
- public FlightDetailActivity getFlightDetailActivity() {
- return flightDetailActivity;
- }
- public void setFlightDetailActivity(FlightDetailActivity flightDetailActivity) {
- this.flightDetailActivity = flightDetailActivity;
- }
- public void setHomeActivity(HomeActivity homeActivity) {
- this.homeActivity = homeActivity;
- }
- @Override
- public LocationView getLocationView() {
- if (locationView == null) {
- locationView = new LocationViewGwtImpl();
- }
- return locationView;
- }
- public HashMap<Long,Flight> getFlightMap(){
- return flightMap;
- }
- public void setFlightMap(HashMap<Long, Flight> flightMap) {
- this.flightMap = flightMap;
- }
- public ArrayList<String> getSpotsList() {
- return spotsList;
- }
- public void setSpotsList(ArrayList<String> spotsList) {
- this.spotsList = spotsList;
- }
- public ArrayList<String> getAirportsList() {
- return airportsList;
- }
- public void setAirportsList(ArrayList<String> airportsList) {
- this.airportsList = airportsList;
- }
- public ArrayList<String> getAirlinesList() {
- return airlinesList;
- }
- public void setAirlinesList(ArrayList<String> airlinesList) {
- this.airlinesList = airlinesList;
- }
- public void setFilterQuery(FlightQuery filterQuery){
- this.filterQuery = filterQuery;
- }
- public FlightQuery getFilterQuery(){
- if(filterQuery!=null){
- filterQuery .setSessionId(sessionId);
- }
- return filterQuery;
- }
- public MessageBus getBus() {
- return bus;
- }
- public PhoneGap getPhoneGap() {
- return phoneGap;
- }
- public void setPhoneGap(PhoneGap phoneGap) {
- this.phoneGap = phoneGap;
- }
- public String getSessionId() {
- return sessionId;
- }
- public FlightQuery getNoFilterQuery(){
- if(noFilterQuery == null){
- Long hoursInMillis = 60L * 60L * 1000L;
- Date now = new Date();
- Date startDate = new Date(now.getTime() - (3L * hoursInMillis));
- Date endDate = new Date(now.getTime() + (3L * hoursInMillis));
- DateTimeFormat format = DateTimeFormat.getFormat("MM/dd/yyyy HH:mm");
- noFilterQuery = new FlightQuery();
- noFilterQuery.setStartDate(format.format(startDate));
- noFilterQuery.setEndDate(format.format(endDate));
- }
- noFilterQuery.setSessionId(sessionId);
- return noFilterQuery;
- }
- public App getApp() {
- return app;
- }
- public void setApp(App app) {
- this.app = app;
- }
- public void createNotification (String message){
- if(this.getPhoneGap() != null){
- getPhoneGap().getNotification().alert(message);
- }
- // String message = "Flight "+fm.getFlight().getFlightMessage()+ " Has Been "+fm.getActionDisplay();
- // notification.alert(message);
- }
- @Override
- public void setOfflineMode(){
- if(getHomeActivity() != null){
- getHomeActivity().setOffline();
- }
- createNotification("The application is now in offline mode.");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment