internal void Logout() { if (!IsLoggedIn) { return; } if (CheckSyncStatus().IsRunning()) { throw new SystemException("Cannot logout when sync is in progress."); } Log.i(TAG, "logout"); this.instance = null; this.user = null; this.password = null; if (database != null) { database.Close(); database = null; } loggedIn = false; }
private MobeelizerOperationError Login(string instance, string user, string password, bool offline) { if (IsLoggedIn) { Logout(); } Log.i(TAG, "login: "******", " + application + ", " + instance + ", " + user + ", " + password); this.instance = instance; this.user = user; this.password = password; MobeelizerLoginResponse response = connectionManager.Login(offline); Log.i(TAG, "Login result: " + response.Error + ", " + response.Role + ", " + response.InstanceGuid); if (response.Error != null) { this.instance = null; this.user = null; this.password = null; return(response.Error); } else { role = response.Role; instanceGuid = response.InstanceGuid; loggedIn = true; IDictionary <String, MobeelizerModel> models = new Dictionary <String, MobeelizerModel>(); foreach (MobeelizerModel model in definitionConverter.Convert(definition, entityPackage, role)) { models.Add(model.Name, model); } database = new MobeelizerDatabase(this, models); database.Open(); if (response.InitialSyncRequired) { Sync(true); } return(null); } }
internal MobeelizerOperationError Sync() { if (application.CheckSyncStatus() != MobeelizerSyncStatus.STARTED) { Log.i(TAG, "Send is already running - skipping."); return(null); } MobeelizerDatabase database = (MobeelizerDatabase)application.GetDatabase(); IMobeelizerConnectionManager connectionManager = application.GetConnectionManager(); String ticket = String.Empty; bool success = false; Others.File outputFile = null; Others.File inputFile = null; try { database.LockModifiedFlag(); if (isAllSynchronization) { Log.i(TAG, "Send sync all request."); MobeelizerSyncResponse response = connectionManager.SendSyncAllRequest(); if (response.Error == null) { ticket = response.Ticket; } else { return(response.Error); } } else { outputFile = GetOuptutFile(); outputFile.Create(); MobeelizerOperationError prepareFileError = dataFileService.PrepareOutputFile(outputFile); if (prepareFileError != null) { Log.i(TAG, "Send file haven't been created."); return(prepareFileError); } else { ChangeStatus(MobeelizerSyncStatus.FILE_CREATED, ticket); Log.i(TAG, "Send sync request."); MobeelizerSyncResponse response = connectionManager.SendSyncDiffRequest(outputFile); if (response.Error == null) { ticket = response.Ticket; } else { return(response.Error); } } } Log.i(TAG, "Sync request completed: " + ticket + "."); ChangeStatus(MobeelizerSyncStatus.TASK_CREATED, ticket); MobeelizerOperationError waitError = connectionManager.WaitUntilSyncRequestComplete(ticket); if (waitError != null) { return(waitError); } else { Log.i(TAG, "Sync process complete with success."); ChangeStatus(MobeelizerSyncStatus.TASK_PERFORMED, ticket); MobeelizerGetSyncDataOperationResult getDataResult = connectionManager.GetSyncData(ticket); if (getDataResult.Error == null) { inputFile = getDataResult.InputFile; } else { return(getDataResult.Error); } ChangeStatus(MobeelizerSyncStatus.FILE_RECEIVED, ticket); MobeelizerOperationError processError = dataFileService.ProcessInputFile(inputFile, isAllSynchronization); if (processError != null) { return(processError); } else { success = true; } connectionManager.ConfirmTask(ticket); database.ClearModifiedFlag(); application.InternalDatabase.SetInitialSyncAsNotRequired(application.Instance, application.User); } } catch (IOException e) { Log.i(TAG, e.Message); return(MobeelizerOperationError.Exception(e)); } catch (InvalidOperationException e) { Log.i(TAG, e.Message); return(MobeelizerOperationError.Exception(e)); } finally { if (inputFile != null) { inputFile.Delete(); } if (outputFile != null) { outputFile.Delete(); } database.UnlockModifiedFlag(); if (success) { ChangeStatus(MobeelizerSyncStatus.FINISHED_WITH_SUCCESS, ticket); } else { Log.i(TAG, "Sync process complete with failure."); ChangeStatus(MobeelizerSyncStatus.FINISHED_WITH_FAILURE, ticket); } } return(success ? null : MobeelizerOperationError.Other("Sync process complete with failure.")); }
public MobeelizerSyncEnumerator(MobeelizerDatabase db, IDictionary <String, MobeelizerModel> models) { this.db = new MobeelizerDatabaseContext(db.ConnectionString); this.models = models; enumerator = (from meta in this.db.ModelMetadata where meta.ModificationLock select meta).GetEnumerator(); }
internal MobeelizerSyncEnumerable(MobeelizerDatabase mobeelizerDatabase, IDictionary <string, MobeelizerModel> models) { this.mobeelizerDatabase = mobeelizerDatabase; this.models = models; enumerator = new MobeelizerSyncEnumerator(mobeelizerDatabase, models); }