Beispiel #1
0
        public void fireAllSyncNotifications(boolean bFinish, int nErrCode, String strError, String strServerError)
        {
            if (getSync().getState() == SyncEngine.esExit)
            {
                return;
            }

            if (nErrCode != RhoAppAdapter.ERR_NONE)
            {
                if (!getSync().isSearch())
                {
                    String strMessage = RhoAppAdapter.getMessageText("sync_failed_for") + "all.";

                    reportSyncStatus(strMessage, nErrCode, strError);
                }
            }

            lock (m_mxSyncNotifications)
            {
                SyncNotification pSN = getSyncNotifyBySrc(null);
                if (pSN != null)
                {
                    doFireSyncNotification(null, bFinish, nErrCode, strError, "", strServerError);
                }
            }
        }
Beispiel #2
0
        public void reportSyncStatus(String status, int error, String strDetails)
        {
            lock (m_mxSyncNotifications)
            {
                if (m_syncStatusListener != null && (isReportingEnabled() || error == RhoAppAdapter.ERR_SYNCVERSION))
                {
                    if (error == RhoAppAdapter.ERR_SYNCVERSION)
                    {
                        status = RhoAppAdapter.getErrorText(error);
                    }
                    else
                    {
                        if (strDetails.length() == 0)
                        {
                            strDetails = RhoAppAdapter.getErrorText(error);
                        }
                        status += (strDetails.length() > 0 ? RhoAppAdapter.getMessageText("details") + strDetails: "");
                    }

                    LOG.INFO("Status: " + status);

                    m_syncStatusListener.reportStatus(status, error);
                }
            }
        }
Beispiel #3
0
 public static void doSyncSourceByName(String strSrcName, boolean bShowStatus)
 {
     if (bShowStatus && (m_statusListener != null))
     {
         m_statusListener.createStatusPopup(RhoAppAdapter.getMessageText("syncronizing_data"));
     }
     getInstance().addQueueCommand(new SyncCommand(SyncThread.scSyncOne, strSrcName, (int)0, bShowStatus));
 }
Beispiel #4
0
        void checkShowStatus(SyncCommand oSyncCmd)
        {
            boolean bShowStatus = oSyncCmd.m_bShowStatus && !this.isNoThreadedMode();

            m_oSyncEngine.getNotify().enableReporting(bShowStatus);
            if (m_oSyncEngine.getNotify().isReportingEnabled())
            {
                m_statusListener.createStatusPopup(RhoAppAdapter.getMessageText("syncronizing_data"));
            }
        }
Beispiel #5
0
        void syncAllSources(String strQueryParams)
        {
//	        boolean bError = false;

//	        int nStartSrc = getStartSource();
//	        if ( nStartSrc >= 0 )
//	            bError = !syncOneSource(nStartSrc);

            //TODO: do not stop on error source
            for (int i = 0; i < (int)m_sources.size() && isContinueSync(); i++)
            {
                /*bError = !*/ syncOneSource(i, strQueryParams);
            }

            if (!isSchemaChanged() && getState() != SyncEngine.esStop)
            {
                getNotify().fireSyncNotification(null, true, RhoAppAdapter.ERR_NONE, RhoAppAdapter.getMessageText("sync_completed"));
            }
        }
Beispiel #6
0
        public void fireBulkSyncNotification(boolean bFinish, String status, String partition, int nErrCode)
        {
            if (getSync().getState() == SyncEngine.esExit)
            {
                return;
            }

            if (nErrCode != RhoAppAdapter.ERR_NONE)
            {
                String strMessage = RhoAppAdapter.getMessageText("sync_failed_for") + "bulk.";
                reportSyncStatus(strMessage, nErrCode, "");
            }

            String strParams = "";

            strParams += "partition=" + partition;
            strParams += "&bulk_status=" + status;
            strParams += "&sync_type=bulk";

            doFireSyncNotification(null, bFinish, nErrCode, "", strParams, "");
        }
Beispiel #7
0
        public void fireSyncNotification(SyncSource src, boolean bFinish, int nErrCode, String strMessage)
        {
            if (getSync().getState() == SyncEngine.esExit)
            {
                return;
            }

            if (strMessage.length() > 0 || nErrCode != RhoAppAdapter.ERR_NONE)
            {
                if (!getSync().isSearch())
                {
                    if (src != null && (strMessage == null || strMessage.length() == 0))
                    {
                        strMessage = RhoAppAdapter.getMessageText("sync_failed_for") + src.getName() + ".";
                    }

                    reportSyncStatus(strMessage, nErrCode, src != null?src.m_strError:"");
                }
            }

            doFireSyncNotification(src, bFinish, nErrCode, "", "", "");
        }
Beispiel #8
0
        void syncAllSources()
        {
            boolean bError = false;

            int nStartSrc = getStartSource();

            if (nStartSrc >= 0)
            {
                bError = !syncOneSource(nStartSrc);
            }

            //TODO: do not stop on error source
            for (int i = 0; i < (int)m_sources.size() && isContinueSync(); i++)
            {
                bError = !syncOneSource(i);
            }

            if (!bError && !isSchemaChanged())
            {
                getNotify().fireSyncNotification(null, true, RhoAppAdapter.ERR_NONE, RhoAppAdapter.getMessageText("sync_completed"));
            }
        }
Beispiel #9
0
        public void sync()
        {
            getNotify().reportSyncStatus(RhoAppAdapter.getMessageText("syncronizing") + getName() + "...", m_nErrCode, m_strError);

            TimeInterval startTime = TimeInterval.getCurrentTime();

            //m_bIsSearch = false;

            try{
                if (isTokenFromDB() && getToken() > 1)
                {
                    syncServerChanges();      //sync only server changes, which was paused before
                }
                else
                {
                    if (isEmptyToken())
                    {
                        processToken(1);
                    }

                    boolean bSyncedServer = syncClientChanges();
                    if (!bSyncedServer)
                    {
                        syncServerChanges();
                    }
                }
            }catch (Exception exc)
            {
                getSync().stopSync();
                throw exc;
            }finally{
                TimeInterval endTime = TimeInterval.getCurrentTime();
                getDB().executeSQL("UPDATE sources set last_updated=?,last_inserted_size=?,last_deleted_size=?, " +
                                   "last_sync_duration=?,last_sync_success=?, backend_refresh_time=? WHERE source_id=?",
                                   endTime.toULong() / 1000, getInsertedCount(), getDeletedCount(),
                                   endTime.minus(startTime).toULong(),
                                   m_bGetAtLeastOnePage?1:0, m_nRefreshTime, getID());
            }
        }
Beispiel #10
0
        public void doSyncSource(SourceID oSrcID, String strQueryParams)
        {
            SyncSource src = null;

            try
            {
                prepareSync(esSyncSource, oSrcID);

                if (isContinueSync())
                {
                    src = findSource(oSrcID);
                    if (src != null)
                    {
                        LOG.INFO("Started synchronization of the data source: " + src.getName());

                        src.m_strQueryParams = strQueryParams;
                        src.sync();

                        getNotify().fireSyncNotification(src, true, src.m_nErrCode, src.m_nErrCode == RhoAppAdapter.ERR_NONE ? RhoAppAdapter.getMessageText("sync_completed") : "");
                    }
                    else
                    {
                        //                    LOG.ERROR( "Sync one source : Unknown Source " + oSrcID.toString() );

                        src = new SyncSource(this, getUserDB());
                        //src.m_strError = "Unknown sync source.";
                        src.m_nErrCode = RhoAppAdapter.ERR_RUNTIME;

                        throw new Exception("Sync one source : Unknown Source " + oSrcID.toString());
                    }
                }
            } catch (Exception exc) {
                LOG.ERROR("Sync source " + oSrcID.toString() + " failed.", exc);

                if (src != null && src.m_nErrCode == RhoAppAdapter.ERR_NONE)
                {
                    src.m_nErrCode = RhoAppAdapter.ERR_RUNTIME;
                }

                getNotify().fireSyncNotification(src, true, src.m_nErrCode, "");
            }

            getNotify().cleanCreateObjectErrors();
            if (getState() != esExit)
            {
                setState(esNone);
            }
        }