public PrevNextLinker(PageLinker baseLinker, string prevText, string nextText, bool forcePrevNext) { _PrevText = prevText; _NextText = nextText; _BaseLinker = baseLinker; _ForcePrevNext = forcePrevNext; }
public void CreateDynamic_CreatesDynamicLinker() { var linker = PageLinker.CreateDynamic() as DynamicLinker; Assert.IsNotNull(linker); Assert.IsTrue(linker.IsBase1); }
public IPageChainModel LinkPages(PageLinker pageLinker) { if (null == pageLinker) { throw new ArgumentNullException("pageLinker"); } return(new PageChainModel(TotalPageCount, TotalItemCount, pageLinker.LinkPages(Source.Request, this))); }
public void CreateDynamic_CreatesDynamicLinkerWithSpecifiedBase() { var linker = PageLinker.CreateDynamic(true) as DynamicLinker; Assert.IsTrue(linker.IsBase1); linker = PageLinker.CreateDynamic(false) as DynamicLinker; Assert.IsFalse(linker.IsBase1); }
public void CreateDynamic_CreatesPrevNextLinkerWithTexts() { var linker = PageLinker.CreateDynamic("p", "n") as PrevNextLinker; Assert.IsInstanceOf(typeof(DynamicLinker), linker.BaseLinker); Assert.AreEqual("p", linker.PrevText); Assert.AreEqual("n", linker.NextText); Assert.IsTrue((linker.BaseLinker as DynamicLinker).IsBase1); }
public void CreatePrevNext_DefaultsToForcePrevNext() { var prevText = "p"; var nextText = "n"; var linker = PageLinker.CreatePrevNext(prevText, nextText) as PrevNextLinker; Assert.AreEqual(prevText, linker.PrevText); Assert.AreEqual(nextText, linker.NextText); Assert.IsTrue(linker.ForcePrevNext); Assert.IsNull(linker.BaseLinker); }
public void CreateDynamic_CreatesPrevNextLinkerWithSpecifiedBase() { foreach (var isBase1 in new[] { false, true }) { var linker = PageLinker.CreateDynamic(isBase1, "prv", "nxt") as PrevNextLinker; Assert.IsInstanceOf(typeof(DynamicLinker), linker.BaseLinker); Assert.AreEqual("prv", linker.PrevText); Assert.AreEqual("nxt", linker.NextText); Assert.AreEqual(isBase1, (linker.BaseLinker as DynamicLinker).IsBase1); } }
public void CreateDynamic_CreatesPrevNextLinkerWithForcedPrevNext() { foreach (var isBase1 in new[] { false, true }) { foreach (var forcePrevNext in new[] { false, true }) { var linker = PageLinker.CreateDynamic(isBase1, "prev", "next", forcePrevNext) as PrevNextLinker; Assert.IsInstanceOf(typeof(DynamicLinker), linker.BaseLinker); Assert.AreEqual("prev", linker.PrevText); Assert.AreEqual("next", linker.NextText); Assert.AreEqual(isBase1, (linker.BaseLinker as DynamicLinker).IsBase1); Assert.AreEqual(forcePrevNext, linker.ForcePrevNext); } } }
public void Create_IsBase1IsTrue() { var prevText = "prv"; var nextText = "nxt"; var linker = PageLinker.Create(prevText, nextText); Assert.IsInstanceOf(typeof(PrevNextLinker), linker); var pnl = linker as PrevNextLinker; Assert.IsInstanceOf(typeof(NumberLinker), pnl.BaseLinker); Assert.AreEqual(true, pnl.ForcePrevNext); Assert.AreEqual(prevText, pnl.PrevText); Assert.AreEqual(nextText, pnl.NextText); Assert.AreEqual(true, (pnl.BaseLinker as NumberLinker).IsBase1); }
public void CreatePrevNext_ReturnsInstanceOfPrevNextLinkerWithNullBaseLinker() { var prevText = "p"; var nextText = "n"; var forcePrevNext = false; var linker = PageLinker.CreatePrevNext(prevText, nextText, forcePrevNext); Assert.IsNotNull(linker); Assert.IsInstanceOf(typeof(PrevNextLinker), linker); var pnl = linker as PrevNextLinker; Assert.AreEqual(prevText, pnl.PrevText); Assert.AreEqual(nextText, pnl.NextText); Assert.AreEqual(forcePrevNext, pnl.ForcePrevNext); Assert.IsNull(pnl.BaseLinker); }
public async static Task <bool> UploadFiles(Boolean UploadPrompt = true, Boolean AllLogs = true) { Global global = FormsApp.config.Global; // Path where the file should be saved once downloaded (locally) string path = (AllLogs) ? Mobile.LogPath : Mobile.LogUserPath; // Only upload if there are files available List <FileInfo> filesToUpload = LogFilesToUpload(path); var upload = false; if (filesToUpload.Count > 0) { upload = true; } if (UploadPrompt && filesToUpload.Count > 0) { upload = await Application.Current.MainPage.DisplayAlert( "Pending log files", "Do you want to Upload them?", "Ok", "Cancel"); } // else upload = false; if (!upload) { return(false); } // The FTP credentiales are not present in Global.xml if (!global.IsFtpUploadSet) { await Errors.ShowAlert(new FtpCredentialsMissingException()); return(false); } // Has the devices internet connection if (!Mobile.IsNetAvailable()) { await Errors.ShowAlert(new NoInternetException()); return(false); } // Cancel action bool cancelled = false; System.Action OnCancel = () => { cancelled = true; }; TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool> (); Device.BeginInvokeOnMainThread(async() => { // Progress bar using (Acr.UserDialogs.IProgressDialog progress = UserDialogs.Instance.Progress("Uploading", OnCancel, "Cancel")) { // Is necessary for appear the progress bar right now await Task.Delay(10); NumFilesUploaded = 0; SftpClient sftp = null; try { string remotePath = global.ftpRemotePath; using (sftp = new SftpClient(global.ftpRemoteHost, 22, global.ftpUserName, global.ftpPassword)) { sftp.Connect(); // If not exist create the remote path from global.xml if (!sftp.Exists(remotePath)) { sftp.CreateDirectory(remotePath); } using (MD5 md5Hash = MD5.Create()) { byte[] md5Local; byte[] md5Remote; foreach (FileInfo file in filesToUpload) { if (cancelled) { throw new Exception(); } // Is necessary for update the progress bar await Task.Delay(10); // Upload local file to the FTP server using (FileStream fileStream = new FileStream(file.FullName, FileMode.Open)) { // Folder path remotePath = Path.Combine(global.ftpRemotePath, file.Directory.Name); // Logs + User folder if (!sftp.Exists(remotePath)) { sftp.CreateDirectory(remotePath); } // File path string sTick = DateTime.Now.Ticks.ToString(); string sName = file.Name.Substring(0, 10) + "-" + sTick + "Log.xml"; remotePath = Path.Combine(remotePath, sName); sftp.UploadFile(fileStream, remotePath, null); } // Compare local and remote files using (StreamReader stream = new StreamReader(file.FullName)) md5Local = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(stream.ReadToEnd())); md5Remote = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(sftp.ReadAllText(remotePath))); // If both files are equal, move local file to backup folder if (Enumerable.SequenceEqual(md5Local, md5Remote)) { // Only create backup file ( "moving" log to backup folder ) in interactive mode if (!Data.Get.IsFromScripting) { string url_to_copy = Mobile.LogUserBackupPath;// Path.Combine ( file.Directory.FullName, Mobile.PATH_BACKUP ); if (!Directory.Exists(url_to_copy)) { Directory.CreateDirectory(url_to_copy); } File.Copy(file.FullName, Path.Combine(url_to_copy, file.Name), true); } File.Delete(file.FullName); NumFilesUploaded += 1; progress.PercentComplete = ( int )(NumFilesUploaded * 100 / filesToUpload.Count); Utils.Print("- " + file.Directory.Name + " uploaded"); } } } sftp.Disconnect(); } } catch (Exception e) { // Catch all exceptions and then always show the number of // files uploaded using the exception FtpUpdateLogsException } finally { if (sftp != null) { sftp.Dispose(); } sftp = null; // Is necessary for appear the progress full ( 100% ) await Task.Delay(10); tcs.SetResult(NumFilesUploaded == filesToUpload.Count); } } }); bool result = await tcs.Task; // Wait for upload completion // Finish ok if all files have been uploaded if (result) { return(true); } if (!cancelled) { await Errors.ShowAlert(new FtpUpdateLogsException ( NumFilesUploaded + "/" + filesToUpload.Count )); } else { await PageLinker.ShowAlert("Uploading canceled", "Only uploaded " + NumFilesUploaded + " / " + filesToUpload.Count + " log files"); } return(false); }