public void Init()
        {
            //todo Make Async and show activityindicator

            //copy xml files on first load(should it be here?)
            if (!LocalFileStorage.Exists(FILE_ARTGROUP))
            {
                LocalFileStorage.CopyToAppFolder(FILE_ARTGROUP);
            }

            if (!LocalFileStorage.Exists(FILE_ART))
            {
                LocalFileStorage.CopyToAppFolder(FILE_ART);
            }

            if (!LocalFileStorage.Exists(FILE_LOGGTYPE_GROUP))
            {
                LocalFileStorage.CopyToAppFolder(FILE_LOGGTYPE_GROUP);
            }

            if (!LocalFileStorage.Exists(FILE_LOGGTYPER))
            {
                LocalFileStorage.CopyToAppFolder(FILE_LOGGTYPER);
            }

            GetJegere();
            GetArter();
            GetDogs();
            GetJakts();
            GetLoggs();
            GetSelectedArter();
            GetSelectedLoggTyper();
        }
Esempio n. 2
0
        public IFileStorage GetFileStorage(IOConnectionInfo iocInfo, bool allowCache)
        {
            IFileStorage fileStorage;

            if (iocInfo.IsLocalFile())
            {
                fileStorage = new LocalFileStorage(this);
            }
            else
            {
                IFileStorage innerFileStorage = GetCloudFileStorage(iocInfo);

                if (DatabaseCacheEnabled && allowCache)
                {
                    fileStorage = new CachingFileStorage(innerFileStorage, Application.Context, this);
                }
                else
                {
                    fileStorage = innerFileStorage;
                }
            }
            if (fileStorage is IOfflineSwitchable)
            {
                ((IOfflineSwitchable)fileStorage).IsOffline = App.Kp2a.OfflineMode;
            }
            return(fileStorage);
        }
Esempio n. 3
0
        protected override void OnStart()
        {
            base.OnStart();
            Kp2aLog.Log("FileSelect.OnStart");


            //if no database is loaded: load the most recent database
            if ((Intent.GetBooleanExtra(NoForwardToPasswordActivity, false) == false) && _dbHelper.HasRecentFiles() && !App.Kp2a.OpenDatabases.Any())
            {
                var     fileStorage = new LocalFileStorage(App.Kp2a);
                ICursor filesCursor = _dbHelper.FetchAllFiles();
                filesCursor = new FilteredCursor(filesCursor, cursor => !fileStorage.IsLocalBackup(IOConnectionInfo.FromPath(cursor.GetString(1))));
                StartManagingCursor(filesCursor);
                if (filesCursor.Count > 0)
                {
                    filesCursor.MoveToFirst();
                    IOConnectionInfo ioc = _dbHelper.CursorToIoc(filesCursor);
                    if (App.Kp2a.GetFileStorage(ioc).RequiresSetup(ioc) == false)
                    {
                        LaunchPasswordActivityForIoc(ioc);
                    }
                    else
                    {
                        App.Kp2a.GetFileStorage(ioc)
                        .PrepareFileUsage(new FileStorageSetupInitiatorActivity(this, OnActivityResult, null), ioc, 0, false);
                    }
                }
            }
        }
        /* GET ALL */
        public List <T> GetEntity <T>(string filename) where T : class, IEntity
        {
            var localList  = LocalFileStorage.LoadFromLocalStorage <List <T> >(filename);
            var remoteList = new List <T>();

            if (App.SyncWithServer)
            {
                remoteList = DataService.LoadFromServer <T>(filename);

                if (remoteList != null && remoteList.Any())
                {
                    if (localList == null || !localList.Any() || remoteList.Max(r => r.Changed) > localList.Max(l => l.Changed))
                    {
                        //remote er nyere enn local
                        remoteList.Save(filename);
                        localList = remoteList;
                    }
                    else if (!remoteList.Any() || remoteList.Max(r => r.Changed) < localList.Max(l => l.Changed))
                    {
                        //remote er eldre enn local
                        localList.UploadToServer(filename);
                    }
                }
                else
                {
                    localList.UploadToServer(filename);
                }
            }
            return(localList);
        }
Esempio n. 5
0
        public async Task ExportGameEventToFile()
        {
            string csv = "";

            for (int i = 0; i < this.Game.Sets.Count; i++)
            {
                csv += this.Game.Sets[i].Export(i + 1);
            }
            csv += "" + Environment.NewLine;

            string filename = string.Empty;

            if (!string.IsNullOrEmpty(this.Game.OpposingTeam))
            {
                filename += "-" + Game.OpposingTeam;
            }
            if (!string.IsNullOrEmpty(this.Game.Tournament))
            {
                filename += "-" + Game.Tournament;
            }
            if (!string.IsNullOrEmpty(this.Game.Name))
            {
                filename += "-" + Game.Name;
            }
            if (Game.Date.HasValue)
            {
                filename += "-" + Game.Date.Value.ToString("yyyy-MM-dd");
            }

            await LocalFileStorage.Save(filename, csv);
        }
 public IEnumerable <Art> GetArter()
 {
     ArtList = LocalFileStorage.LoadFromLocalStorage <List <Art> >(FILE_ART);
     GetSelectedArter();
     foreach (var art in SelectedArtList)
     {
         var artToSelect = ArtList.FirstOrDefault(a => a.ID == art.ID);
         if (artToSelect != null)
         {
             artToSelect.Selected = true;
         }
     }
     //ArtList.AddRange(LocalFileStorage.Load<List<Art>>(FILE_MY_ART)); //TODO: add this functionality (egne arter)
     return(ArtList);
 }
Esempio n. 7
0
        private void FillData()
        {
            // Get all of the rows from the database and create the item list
            ICursor filesCursor = _dbHelper.FetchAllFiles();



            if (FindViewById <Switch>(Resource.Id.local_backups_switch).Checked == false)
            {
                var fileStorage = new LocalFileStorage(App.Kp2a);
                filesCursor = new FilteredCursor(filesCursor, cursor => !fileStorage.IsLocalBackup(IOConnectionInfo.FromPath(cursor.GetString(1))));
            }

            StartManagingCursor(filesCursor);

            FragmentManager.FindFragmentById <RecentFilesFragment>(Resource.Id.recent_files).SetAdapter(new MyCursorAdapter(this, filesCursor, App.Kp2a));
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            Config.Setup("appsettings.json", Directory.GetCurrentDirectory(), null, "MistwareFilesTest");
            string connection = Config.Get("AzureConnectionString");
            string container  = Config.Get("AzureContainer");
            string root       = Config.Get("LocalFilesRoot");
            string logs       = Config.Get("Logs");
            string testfile   = "Test.log";
            string testfolder = "ZZTestZZ";

            // Setup Testing - creates a file called Test.log in ~/Temp
            Directory.SetCurrentDirectory(root);
            Log.Me.LogFile = testfile;
            Log.Me.Info("Hello, World");
            long length = (new FileInfo(testfile)).Length;

            Directory.CreateDirectory(testfolder);
            string dirsep   = Path.DirectorySeparatorChar.ToString();
            string upload   = root;
            string download = root + dirsep + testfolder;

            IFile local = new LocalFileStorage(root);

            Directory.SetCurrentDirectory(root);
            FileTest(local, "Local", testfile, upload, "Test1", "Test2", download, length, true);
            Console.WriteLine("");

            IFile azure = new AzureFileStorage(connection, container);

            FileTest(azure, "Azure", testfile, upload, "Test1", "Test2", download, length, true);

            // Clear up test artifacts
            Directory.SetCurrentDirectory(download);
            File.Delete(testfile);
            Directory.SetCurrentDirectory(upload);
            Directory.Delete(testfolder);
            File.Delete(testfile);

            // Test Azure Blob Logging
            Log.Me.Logger  = new BlobLogger(connection, logs);
            Log.Me.LogFile = "LoggerTest.log";
            Log.Me.Info("This is a test");
        }
Esempio n. 9
0
        public void SaveFileTest()
        {
            var environment = new Mock <IHostingEnvironment>();

            environment.SetupGet(t => t.ContentRootPath).Returns("base/");

            var fileGenerator = new Mock <IFileNameGenerator>();

            fileGenerator.Setup(t => t.Generate(".jpg")).Returns("file.jpg");

            var file = new Mock <IFormFile>();

            file.SetupGet(t => t.FileName).Returns("upload.jpg");
            file.Setup(t => t.CopyTo(null));

            var repository = new LocalFileStorage(environment.Object, fileGenerator.Object);

            var res = repository.SaveFile(file.Object);

            Assert.AreEqual("base/file.jpg", res);
        }
Esempio n. 10
0
        public async Task <IActionResult> Get(string id)
        {
            try
            {
                var fileInfo = await filesService.GetFileInfoAsync(id).ConfigureAwait(false);

                if (fileInfo == null)
                {
                    var nodeConnections = connectionsService.GetNodeConnections().Where(conn => conn.NodeWebSocket.State == WebSocketState.Open);
                    foreach (var nodeConnection in nodeConnections)
                    {
                        var filesInfo = await nodeRequestSender.GetFilesInformationAsync(new List <string> {
                            id
                        }, nodeConnection.Node.Id).ConfigureAwait(false);

                        if (!filesInfo.Any())
                        {
                            continue;
                        }
                        Uri fileUri     = new Uri($"https://{nodeConnection.Node.Domains.FirstOrDefault()}:{nodeConnection.Node.NodesPort}/api/Files/{id}");
                        var fileRequest = WebRequest.CreateHttp(fileUri);
                        fileRequest.Method = HttpMethods.Get;
                        var fileResponse = (HttpWebResponse)await fileRequest.GetResponseAsync().ConfigureAwait(false);

                        var    contentDisposition = fileResponse.Headers["content-disposition"];
                        string filename           = id;
                        if (contentDisposition != null)
                        {
                            System.Net.Mime.ContentDisposition disposition = new System.Net.Mime.ContentDisposition(contentDisposition);
                            filename = disposition.FileName;
                        }
                        return(File(fileResponse.GetResponseStream(), MediaTypeNames.Application.Octet, filename));
                    }
                    return(StatusCode(StatusCodes.Status404NotFound));
                }
                if (fileInfo.Storage == "Local" || string.IsNullOrWhiteSpace(fileInfo.Storage))
                {
                    LocalFileStorage localFileStorage = new LocalFileStorage();
                    if (fileInfo != null && fileInfo.Url != null)
                    {
                        return(File(await localFileStorage.GetStreamAsync(fileInfo.Url).ConfigureAwait(false), MediaTypeNames.Application.Octet, fileInfo.FileName));
                    }
                    else if (fileInfo != null && fileInfo.Url == null && fileInfo.NodeId != NodeSettings.Configs.Node.Id)
                    {
                        NodeVm nodeInformation = await nodesService.GetAllNodeInfoAsync(fileInfo.NodeId).ConfigureAwait(false);

                        Uri fileUri     = new Uri($"https://{nodeInformation.Domains.FirstOrDefault()}:{nodeInformation.NodesPort}/api/Files/{fileInfo.Id}");
                        var fileRequest = WebRequest.CreateHttp(fileUri);
                        fileRequest.Method = HttpMethods.Get;
                        var fileResponse = await fileRequest.GetResponseAsync().ConfigureAwait(false);

                        return(File(fileResponse.GetResponseStream(), MediaTypeNames.Application.Octet, fileInfo.FileName));
                    }
                    else
                    {
                        return(NotFound());
                    }
                }
                else if (!string.IsNullOrWhiteSpace(fileInfo.Storage))
                {
                    var stream = await fileStorage.GetStreamAsync(fileInfo.Id).ConfigureAwait(false);

                    return(File(stream, MediaTypeNames.Application.Octet, fileInfo.FileName));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (DownloadFileException ex)
            {
                if (ex.InnerException is WebException webException)
                {
                    Console.WriteLine(ex.InnerException.ToString());
                    return(StatusCode(StatusCodes.Status503ServiceUnavailable));
                }
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
            catch (ObjectDoesNotExistsException)
            {
                return(NotFound());
            }
            catch (Exception ex)
            {
                Logger.WriteLog(ex);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Esempio n. 11
0
        public Database LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compositeKey, ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat, bool makeCurrent)
        {
            var prefs        = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
            var createBackup = prefs.GetBoolean(Application.Context.GetString(Resource.String.CreateBackups_key), true) &&
                               !(new LocalFileStorage(this).IsLocalBackup(ioConnectionInfo));

            MemoryStream backupCopy = new MemoryStream();

            if (createBackup)
            {
                memoryStream.CopyTo(backupCopy);
                backupCopy.Seek(0, SeekOrigin.Begin);
                //reset stream if we need to reuse it later:
                memoryStream.Seek(0, SeekOrigin.Begin);
            }

            foreach (Database openDb in _openDatabases)
            {
                if (openDb.Ioc.IsSameFileAs(ioConnectionInfo))
                {
                    //TODO check this earlier and simply open the database's root group
                    throw new Exception("Database already loaded!");
                }
            }

            _openAttempts.Add(ioConnectionInfo);
            var newDb = new Database(new DrawableFactory(), this);

            newDb.LoadData(this, ioConnectionInfo, memoryStream, compositeKey, statusLogger, databaseFormat);



            if ((_currentDatabase == null) || makeCurrent)
            {
                _currentDatabase = newDb;
            }
            _openDatabases.Add(newDb);



            if (createBackup)
            {
                statusLogger.UpdateMessage(Application.Context.GetString(Resource.String.UpdatingBackup));
                Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(Application.Context);
                string       baseDisplayName   = App.Kp2a.GetFileStorage(ioConnectionInfo).GetDisplayName(ioConnectionInfo);
                string       targetPath        = baseDisplayName;
                var          charsToRemove     = "|\\?*<\":>+[]/'";
                foreach (char c in charsToRemove)
                {
                    targetPath = targetPath.Replace(c.ToString(), string.Empty);
                }
                if (targetPath == "")
                {
                    targetPath = "local_backup";
                }

                var targetIoc = IOConnectionInfo.FromPath(new Java.IO.File(internalDirectory, targetPath).CanonicalPath);

                using (var transaction = new LocalFileStorage(App.Kp2a).OpenWriteTransaction(targetIoc, false))
                {
                    using (var file = transaction.OpenFile())
                    {
                        backupCopy.CopyTo(file);
                        transaction.CommitWrite();
                    }
                }
                Java.Lang.Object baseIocDisplayName = baseDisplayName;

                string keyfile = App.Kp2a.FileDbHelper.GetKeyFileForFile(ioConnectionInfo.Path);
                App.Kp2a.StoreOpenedFileAsRecent(targetIoc, keyfile, false, Application.Context.
                                                 GetString(Resource.String.LocalBackupOf, new Java.Lang.Object[] { baseIocDisplayName }));

                prefs.Edit()
                .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), true)
                .PutBoolean(IoUtil.GetIocPrefKey(targetIoc, "is_local_backup"), true)
                .Commit();
            }
            else
            {
                prefs.Edit()
                .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), false)             //there might be an older local backup, but we won't "advertise" this anymore
                .Commit();
            }

            UpdateOngoingNotification();

            return(newDb);
        }
 public IEnumerable <LoggTypeGroup> GetLoggTypeGroups()
 {
     LoggTypeGroupList = LocalFileStorage.LoadFromLocalStorage <List <LoggTypeGroup> >(FILE_LOGGTYPE_GROUP);
     return(LoggTypeGroupList);
 }
 public IEnumerable <LoggType> GetLoggTyper()
 {
     LoggTypeList = LocalFileStorage.LoadFromLocalStorage <List <LoggType> >(FILE_LOGGTYPER);
     return(LoggTypeList);
 }
 public IEnumerable <ArtGroup> GetArtGroups()
 {
     ArtGroupList = LocalFileStorage.LoadFromLocalStorage <List <ArtGroup> >(FILE_ARTGROUP);
     return(ArtGroupList);
 }
Esempio n. 15
0
 public FileAuditor(string path)
 {
     storage   = LocalFileStorage.Create();
     this.path = path;
 }
Esempio n. 16
0
        public void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compositeKey,
                                 ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat)
        {
            var prefs        = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
            var createBackup = prefs.GetBoolean(Application.Context.GetString(Resource.String.CreateBackups_key), true);

            MemoryStream backupCopy = new MemoryStream();

            if (createBackup)
            {
                memoryStream.CopyTo(backupCopy);
                backupCopy.Seek(0, SeekOrigin.Begin);
                //reset stream if we need to reuse it later:
                memoryStream.Seek(0, SeekOrigin.Begin);
            }


            _db.LoadData(this, ioConnectionInfo, memoryStream, compositeKey, statusLogger, databaseFormat);

            if (createBackup)
            {
                statusLogger.UpdateMessage(Application.Context.GetString(Resource.String.UpdatingBackup));
                Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(Application.Context);
                string       baseDisplayName   = App.Kp2a.GetFileStorage(ioConnectionInfo).GetDisplayName(ioConnectionInfo);
                string       targetPath        = baseDisplayName;
                var          charsToRemove     = "|\\?*<\":>+[]/'";
                foreach (char c in charsToRemove)
                {
                    targetPath = targetPath.Replace(c.ToString(), string.Empty);
                }
                if (targetPath == "")
                {
                    targetPath = "local_backup";
                }

                var targetIoc = IOConnectionInfo.FromPath(new Java.IO.File(internalDirectory, targetPath).CanonicalPath);

                using (var transaction = new LocalFileStorage(App.Kp2a).OpenWriteTransaction(targetIoc, false))
                {
                    var file = transaction.OpenFile();
                    backupCopy.CopyTo(file);
                    transaction.CommitWrite();
                }
                Java.Lang.Object baseIocDisplayName = baseDisplayName;

                string keyfile = App.Kp2a.FileDbHelper.GetKeyFileForFile(ioConnectionInfo.Path);
                App.Kp2a.StoreOpenedFileAsRecent(targetIoc, keyfile, Application.Context.
                                                 GetString(Resource.String.LocalBackupOf, new Java.Lang.Object[] { baseIocDisplayName }));

                prefs.Edit()
                .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), true)
                .PutBoolean(IoUtil.GetIocPrefKey(targetIoc, "is_local_backup"), true)
                .Commit();
            }
            else
            {
                prefs.Edit()
                .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), false)             //there might be an older local backup, but we won't "advertise" this anymore
                .Commit();
            }

            UpdateOngoingNotification();
        }