Example #1
0
        public void cancelRequest(String szCallback)
        {
            if (szCallback == null || szCallback.length() == 0 )
            {
                LOG.INFO("Cancel callback should not be empty. Use * for cancel all");
                return;
            }

            lock(getCommandLock())
            {
	            HttpCommand pCmd = (HttpCommand)getCurCommand();
	
	            if ( pCmd != null && ( szCallback.compareTo("*") == 0 || pCmd.m_strCallback.compareTo(szCallback) == 0) )
	                pCmd.cancel();
	
	            if ( szCallback.compareTo("*") == 0 )
	                getCommands().Clear();
	            else
	            {
	                for (int i = getCommands().size()-1; i >= 0; i--)
	                {
	                    HttpCommand pCmd1 = (HttpCommand)getCommands().get(i);
	
	                    if ( pCmd1 != null && pCmd1.m_strCallback.compareTo(szCallback) == 0 )
    	                    getCommands().RemoveAt(i);
	                }
	
	            }
            }   
        }
Example #2
0
	    void processServerCmd_Ver3_Schema(String strCmd, String strObject, JSONStructIterator attrIter)
	    {
	        if ( strCmd.compareTo("insert") == 0 )
	        {
	            Vector<Object> vecValues = new Vector<Object>();
                Vector<String> vecAttrs = new Vector<String>();
	            String strCols = "", strQuest = "", strSet = "";
	            for( ; !attrIter.isEnd() && getSync().isContinueSync(); attrIter.next() )
	            {
	                CAttrValue oAttrValue = new CAttrValue(attrIter.getCurKey(),attrIter.getCurString());
	                if ( !processBlob(strCmd,strObject,oAttrValue) )
	                    continue;
	        	
	                if ( strCols.length() > 0 )
	                    strCols += ",";
	                if ( strQuest.length() > 0)
	                    strQuest += ",";
	                if ( strSet.length() > 0)
	                    strSet += ",";

	                strCols += oAttrValue.m_strAttrib;
	                strQuest += "?";
	                strSet += oAttrValue.m_strAttrib + "=?";
	                vecAttrs.addElement(oAttrValue.m_strAttrib);
	                vecValues.addElement(oAttrValue.m_strValue);
	            }
	            vecValues.addElement(strObject);
	            if ( strCols.length() > 0 )
	                strCols += ",";
	            if ( strQuest.length() > 0)
	                strQuest += ",";
	        
	            strCols += "object";
	            strQuest += "?";

	            String strSqlInsert = "INSERT INTO ";
	            strSqlInsert += getName() + " (";
	            strSqlInsert += strCols + ") VALUES(" + strQuest + ")";

	            if ( !getSync().isContinueSync() )
	                return;

	            IDBResult resInsert = getDB().executeSQLReportNonUniqueEx(strSqlInsert, vecValues );
	            if ( resInsert.isNonUnique() )
	            {
	                String strSqlUpdate = "UPDATE ";
	                strSqlUpdate += getName() + " SET " + strSet + " WHERE object=?";
	                getDB().executeSQLEx(strSqlUpdate, vecValues);

	                if ( getSyncType().compareTo("none") != 0 )
	                {
		                // oo conflicts
		                for( int i = 0; i < (int)vecAttrs.size(); i++ )
		                {
		                    getDB().executeSQL("UPDATE changed_values SET sent=4 where object=? and attrib=? and source_id=? and sent>1", 
		                        strObject, vecAttrs.elementAt(i), getID() );
		                }
		                //
	                }
	            }

	            if ( getSyncType().compareTo("none") != 0 )	        
	        	    getNotify().onObjectChanged(getID(),strObject, SyncNotify.enUpdate);
	        
	            m_nInserted++;
	        }else if (strCmd.compareTo("delete") == 0)
	        {
	    	    Vector<String> vecAttrs = new Vector<String>();
	            String strSet = "";
	            for( ; !attrIter.isEnd() && getSync().isContinueSync(); attrIter.next() )
	            {
	        	    CAttrValue oAttrValue = new CAttrValue(attrIter.getCurKey(),attrIter.getCurString());
	        	
	                if ( strSet.length() > 0 )
	                    strSet += ",";

	                vecAttrs.addElement(oAttrValue.m_strAttrib);
	                strSet += oAttrValue.m_strAttrib + "=NULL";
	            }

	            String strSqlUpdate = "UPDATE ";
	            strSqlUpdate += getName() + " SET " + strSet + " WHERE object=?";
	        
	            if ( strSet.length() == 0 || !getSync().isContinueSync() )
	                return;
	        
	            getDB().executeSQL(strSqlUpdate, strObject);
	            //Remove item if all nulls
	            String strSelect = "SELECT * FROM " + getName() + " WHERE object=?";
	            IDBResult res = getDB().executeSQL( strSelect, strObject );
	            if ( !res.isEnd() )
	            {
	                boolean bAllNulls = true;
	                for( int i = 0; i < res.getColCount(); i ++)
	                {
	                    if ( !res.isNullByIdx(i) && res.getColName(i).compareTo("object")!=0 )
	                    {
	                        bAllNulls = false;
	                        break;
	                    }
	                }

	                if (bAllNulls)
	                {
	                    String strDelete = "DELETE FROM " + getName() + " WHERE object=?";
	                    getDB().executeSQL( strDelete, strObject);
	                }
	            }
	        
	            if ( getSyncType().compareTo("none") != 0 )
	            {
		            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enDelete);
		            // oo conflicts
		            for( int i = 0; i < (int)vecAttrs.size(); i++ )
		            {
		                getDB().executeSQL("UPDATE changed_values SET sent=3 where object=? and attrib=? and source_id=?", 
		                    strObject, vecAttrs.elementAt(i), getID() );
		            }
		            //
	            }
	        
	            m_nDeleted++;
	        }else if ( strCmd.compareTo("links") == 0 )
	        {
	            String strValue = attrIter.getCurString();
	            processAssociations(strObject, strValue);
	        
	            String strSqlUpdate = "UPDATE ";
	            strSqlUpdate += getName() + " SET object=? WHERE object=?";
	            getDB().executeSQL(strSqlUpdate, strValue, strObject);

	            getDB().executeSQL("UPDATE changed_values SET object=?,sent=3 where object=? and source_id=?", strValue, strObject, getID() );
	            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enCreate);
	        }

	    }
Example #3
0
	    void processServerCmd_Ver3(String strCmd, String strObject, String strAttriba, String strValuea)
	    {
	        CAttrValue oAttrValue = new CAttrValue(strAttriba,strValuea);
		
	        if ( strCmd.compareTo("insert") == 0 )
	        {
	            if ( !processBlob(strCmd,strObject,oAttrValue) )
	                return;

	            IDBResult resInsert = getDB().executeSQLReportNonUnique("INSERT INTO object_values "+
	                    "(attrib, source_id, object, value) VALUES(?,?,?,?)", 
	                    oAttrValue.m_strAttrib, getID(), strObject, oAttrValue.m_strValue );
	        
	            if ( resInsert.isNonUnique() )
	            {
	                getDB().executeSQL("UPDATE object_values " +
                        "SET value=? WHERE object=? and attrib=? and source_id=?", 
                         oAttrValue.m_strValue, strObject, oAttrValue.m_strAttrib, getID() );

	                if ( getSyncType().compareTo("none") != 0 )
	                {
		                // oo conflicts
		                getDB().executeSQL("UPDATE changed_values SET sent=4 where object=? and attrib=? and source_id=? and sent>1", 
		                        strObject, oAttrValue.m_strAttrib, getID() );
		                //
	                }
	            }

	            if ( getSyncType().compareTo("none") != 0 )	        
	        	    getNotify().onObjectChanged(getID(),strObject, SyncNotify.enUpdate);
	        
	            m_nInserted++;
	        }else if (strCmd.compareTo("delete") == 0)
	        {
	            getDB().executeSQL("DELETE FROM object_values where object=? and attrib=? and source_id=?", strObject, oAttrValue.m_strAttrib, getID() );
	        
	            if ( getSyncType().compareTo("none") != 0 )
	            {
		            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enDelete);
		            // oo conflicts
		            getDB().executeSQL("UPDATE changed_values SET sent=3 where object=? and attrib=? and source_id=?", strObject, oAttrValue.m_strAttrib, getID() );
		            //
	            }
	            m_nDeleted++;
	        }else if ( strCmd.compareTo("links") == 0 )
	        {
	            processAssociations(strObject, oAttrValue.m_strValue);

	            getDB().executeSQL("UPDATE object_values SET object=? where object=? and source_id=?", oAttrValue.m_strValue, strObject, getID() );
	            getDB().executeSQL("UPDATE changed_values SET object=?,sent=3 where object=? and source_id=?", oAttrValue.m_strValue, strObject, getID() );

	            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enCreate);
	        }

	    }
Example #4
0
        public void login(String name, String password, SyncNotify.SyncNotification oNotify)
	    {
		    try {
    /*			
			    processServerSources("{\"sources\":{ \"ProductEx\":{ "+
	            "\"sync_type\":\"incremental\", \"partition\":\"application\", \"source_id\":\"7\","+
	            " \"sync_priority\":\"0\", \"model_type\":\"fixed_schema\", "+
	            " \"schema\":{\"version\":\"1.1\", \"property\":{\"brand\":\"string\", \"price\":\"string\", \"quantity\":\"string\", \"name\":\"string\", "+
	            " \"image_url\":\"blob\", \"image_url_ex\":\"blob,overwrite\"}, "+
	            " \"index\":[{\"by_brand_price1\":\"brand,price\"}, {\"by_quantity1\":\"quantity\"}], \"unique_index\":[{\"by_name1\":\"name\"}]}, "+
	            " \"belongs_to\":{\"brand\":\"Customer\"}}}}");//, \"schema_version\":\"1.0\"
	            */
		        NetResponse resp = null;
		        m_bStopByUser = false;
		    
		        try{
				
			        resp = getNet().pullCookies( getProtocol().getLoginUrl(), getProtocol().getLoginBody(name, password), this );
			        int nErrCode = RhoAppAdapter.getErrorFromResponse(resp);
			        if ( nErrCode != RhoAppAdapter.ERR_NONE )
			        {
			            getNotify().callLoginCallback(oNotify, nErrCode, resp.getCharData());
			            return;
			        }
		        }catch(Exception exc)
		        {
				    LOG.ERROR("Login failed.", exc);
		    	    getNotify().callLoginCallback(oNotify, RhoAppAdapter.getNetErrorCode(exc), "" );
		    	    return;
		        }
		    
		        String strSession = resp.getCharData();
		        if ( strSession == null || strSession.length() == 0 )
		        {
		    	    LOG.ERROR("Return empty session.");
		    	    getNotify().callLoginCallback(oNotify, RhoAppAdapter.ERR_UNEXPECTEDSERVERRESPONSE, "" );
		            return;
		        }
		    
		        if ( isStoppedByUser() )
		    	    return;
		    
		        IDBResult res = getUserDB().executeSQL("SELECT * FROM client_info");
		        if ( !res.isEnd() )
		    	    getUserDB().executeSQL( "UPDATE client_info SET session=?", strSession );
		        else
		    	    getUserDB().executeSQL("INSERT INTO client_info (session) values (?)", strSession);
		
		        if ( RHOCONF().isExist("rho_sync_user") )
		        {
		            String strOldUser = RHOCONF().getString("rho_sync_user");
		            if ( name.compareTo(strOldUser) != 0 )
		            {
		                if (isNoThreadedMode())
                            RhoRuby.resetDBOnSyncUserChanged();
		                else
		                {
		                    NetResponse resp1 = getNet().pushData( getNet().resolveUrl("/system/resetDBOnSyncUserChanged"), "", null );
		                }
		            }
		        }
		        RHOCONF().setString("rho_sync_user", name, true);
		    
	    	    getNotify().callLoginCallback(oNotify, RhoAppAdapter.ERR_NONE, "" );
		    
	    	    if ( ClientRegister.getInstance() != null )
	    		    ClientRegister.getInstance().startUp();	    	
	    	
		    }catch(Exception exc)
		    {
			    LOG.ERROR("Login failed.", exc);
	    	    getNotify().callLoginCallback(oNotify, RhoAppAdapter.ERR_RUNTIME, "" );
		    }
	    }
Example #5
0
	    static int findSrcIndex( Vector<SyncSource> sources, String strSrcName)
	    {
	        for ( int i = 0; i < (int)sources.size(); i++)
	        {
	            if (strSrcName.compareTo( ((SyncSource)sources.elementAt(i)).getName()) == 0 )
	                return i;
	        }

	        return -1;
	    }
Example #6
0
            int translateCommand(String strCmd)
            {
                if ( strCmd.compareTo("GET") == 0 )
                    return hcGet;
                else if ( strCmd.compareTo("POST") == 0 )
                    return hcPost;
                else if ( strCmd.compareTo("Download") == 0 )
                    return hcDownload;
                else if ( strCmd.compareTo("Upload") == 0 )
                    return hcUpload;

                return hcNone;
            }
Example #7
0
	    void processServerCmd_Ver3(String strCmd, String strObject, String strAttriba, String strValuea)
	    {
	        CAttrValue oAttrValue = new CAttrValue(strAttriba,strValuea);
		
	        if ( strCmd.compareTo("insert") == 0 )
	        {
	            
                String strFreezedProps = SyncEngine.getSourceOptions().getProperty(getID(), "freezed");
                if ( strFreezedProps.length() > 0 && strFreezedProps.indexOf(oAttrValue.m_strAttrib) < 0 ) 	
                {
                    LOG.INFO("Skip Non-exist property : " + oAttrValue.m_strAttrib + ". For model : " + getName());
                    return;
                }
                
                if ( !processBlob(strCmd,strObject,oAttrValue) )
	                return;

	            IDBResult resInsert = getDB().executeSQLReportNonUnique("INSERT INTO object_values "+
	                    "(attrib, source_id, object, value) VALUES(?,?,?,?)", 
	                    oAttrValue.m_strAttrib, getID(), strObject, oAttrValue.m_strValue );
	        
	            if ( resInsert.isNonUnique() )
	            {
	                getDB().executeSQL("UPDATE object_values " +
                        "SET value=? WHERE object=? and attrib=? and source_id=?", 
                         oAttrValue.m_strValue, strObject, oAttrValue.m_strAttrib, getID() );

	                if ( getSyncType().compareTo("none") != 0 )
	                {
		                // oo conflicts
		                getDB().executeSQL("UPDATE changed_values SET sent=4 where object=? and attrib=? and source_id=? and sent>1", 
		                        strObject, oAttrValue.m_strAttrib, getID() );
		                //
	                }
	            }

	            if ( getSyncType().compareTo("none") != 0 )	        
	        	    getNotify().onObjectChanged(getID(),strObject, SyncNotify.enUpdate);
	        
	            m_nInserted++;
	        }else if (strCmd.compareTo("delete") == 0)
	        {
	            getDB().executeSQL("DELETE FROM object_values where object=? and attrib=? and source_id=?", strObject, oAttrValue.m_strAttrib, getID() );
	        
	            if ( getSyncType().compareTo("none") != 0 )
	            {
		            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enDelete);
		            // oo conflicts
		            getDB().executeSQL("UPDATE changed_values SET sent=3 where object=? and attrib=? and source_id=?", strObject, oAttrValue.m_strAttrib, getID() );
		            //
	            }
	            m_nDeleted++;
	        }else if ( strCmd.compareTo("links") == 0 )
	        {
	            processAssociations(strObject, oAttrValue.m_strValue);

	            getDB().executeSQL("UPDATE object_values SET object=? where object=? and source_id=?", oAttrValue.m_strValue, strObject, getID() );
	            getDB().executeSQL("UPDATE changed_values SET object=?,sent=3 where object=? and source_id=?", oAttrValue.m_strValue, strObject, getID() );

	            getNotify().onObjectChanged(getID(), strObject, SyncNotify.enCreate);
	        }

	    }