Exemple #1
0
        public void ImportIndexItemParse_OverWriteStructureFeature_Test()
        {
            var createAnImageNoExif = new CreateAnImageNoExif();
            var createAnImage       = new CreateAnImage();

            _appSettings.Structure = null;
            // Go to the default structure setting
            _appSettings.StorageFolder = createAnImage.BasePath;

            // Use a strange structure setting to overwrite
            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = createAnImageNoExif.FullFilePathWithDate,
                Structure          = "/HHmmss_yyyyMMdd.ext"
            };

            input.ParseDateTimeFromFileName();

            DateTime.TryParseExact(
                "20120101_123300",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            // Check if those overwrite is accepted
            Assert.AreEqual(answerDateTime, input.DateTime);

            new StorageHostFullPathFilesystem().FileDelete(createAnImageNoExif.FullFilePathWithDate);
        }
Exemple #2
0
        public void ParseDateTimeFromFileName_Null()
        {
            var importItem = new ImportIndexItem {
                SourceFullFilePath = null
            };
            var dateTime = importItem.ParseDateTimeFromFileName();

            Assert.AreEqual(new DateTime(), dateTime);
        }
Exemple #3
0
        private ImportIndexItem ObjectCreateIndexItem(
            string inputFileFullPath,
            ExtensionRolesHelper.ImageFormat imageFormat,
            string fileHashCode,
            FileIndexItem fileIndexItem,
            int colorClassTransformation,
            long size)
        {
            var importIndexItem = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = inputFileFullPath,
                DateTime           = fileIndexItem.DateTime,
                FileHash           = fileHashCode,
                FileIndexItem      = fileIndexItem,
                Status             = ImportStatus.Ok,
                FilePath           = fileIndexItem.FilePath,
                ColorClass         = fileIndexItem.ColorClass
            };

            // used for files without a Exif Date for example WhatsApp images
            if (fileIndexItem.DateTime.Year == 1)
            {
                importIndexItem.FileIndexItem.DateTime = importIndexItem.ParseDateTimeFromFileName();
                // used to sync exifTool and to let the user know that the transformation has been applied
                importIndexItem.FileIndexItem.Description = MessageDateTimeBasedOnFilename;
                // only set when date is parsed if not ignore update
                if (importIndexItem.FileIndexItem.DateTime.Year != 1)
                {
                    importIndexItem.DateTimeFromFileName = true;
                }
            }

            // Also add Camera brand to list
            importIndexItem.MakeModel = importIndexItem.FileIndexItem.MakeModel;

            // AddToDatabase is Used by the importer History agent
            importIndexItem.FileIndexItem.AddToDatabase = DateTime.UtcNow;
            importIndexItem.AddToDatabase = DateTime.UtcNow;

            importIndexItem.FileIndexItem.Size        = size;
            importIndexItem.FileIndexItem.FileHash    = fileHashCode;
            importIndexItem.FileIndexItem.ImageFormat = imageFormat;
            importIndexItem.FileIndexItem.Status      = FileIndexItem.ExifStatus.Ok;
            if (colorClassTransformation < 0)
            {
                return(importIndexItem);
            }

            // only when set in ImportSettingsModel
            var colorClass = (ColorClassParser.Color)colorClassTransformation;

            importIndexItem.FileIndexItem.ColorClass = colorClass;
            importIndexItem.ColorClass = colorClass;
            return(importIndexItem);
        }
Exemple #4
0
        public void ImportIndexItemParse_Structure_Fallback()
        {
            _appSettings.Structure = null;
            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = ".jpg"
            };
            var result = input.ParseDateTimeFromFileName();

            Assert.AreEqual(result, new DateTime());
        }
Exemple #5
0
        public void ParseDateTimeFromFileNameWithSpaces_Test()
        {
            var input = new ImportIndexItem(new AppSettings())
            {
                SourceFullFilePath = Path.DirectorySeparatorChar + "2018 08 20 19 03 00.jpg"
            };

            input.ParseDateTimeFromFileName();

            DateTime.TryParseExact(
                "20180820_190300",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            Assert.AreEqual(answerDateTime, input.DateTime);
        }
Exemple #6
0
        public void ParseDateTimeFromFileName_Test()
        {
            _appSettings.Structure = "/yyyyMMdd_HHmmss.ext";

            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = Path.DirectorySeparatorChar + "20180101_011223.jpg"
            };

            input.ParseDateTimeFromFileName();

            DateTime.TryParseExact(
                "20180101_011223",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            Assert.AreEqual(answerDateTime, input.DateTime);
        }
Exemple #7
0
        public void ImportIndexItemParse_ParseDateTimeFromFileName_AppendixUsedInConfig()
        {
            _appSettings.Structure = "/yyyyMMdd_HHmmss_\\d\\e\\f\\g.ext";

            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = Path.DirectorySeparatorChar + "20180726_194523.jpg"
            };

            input.ParseDateTimeFromFileName();

            DateTime.TryParseExact(
                "20180726_194523",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            Assert.AreEqual(answerDateTime, input.DateTime);
        }
Exemple #8
0
        public void ImportIndexItemParse_ParseDateTimeFromFileNameWithExtraFileNameBase_Test()
        {
            _appSettings.Structure = "/yyyyMMdd_HHmmss_{filenamebase}.ext";

            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = Path.DirectorySeparatorChar + "2018-07-26 19.45.23.jpg"
            };

            input.ParseDateTimeFromFileName();

            DateTime.TryParseExact(
                "20180726_194523",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            Assert.AreEqual(answerDateTime, input.DateTime);
        }
Exemple #9
0
        public void ImportIndexItemParse_ParseDateTimeFromFileName_WithExtraDotsInName_Test()
        {
            _appSettings.Structure = "/yyyyMMdd_HHmmss.ext";

            var input = new ImportIndexItem(_appSettings)
            {
                SourceFullFilePath = Path.DirectorySeparatorChar + "2018-02-03 18.47.35.jpg"
            };

            input.ParseDateTimeFromFileName();

            Regex pattern = new Regex("-|_| |;|\\.|:");
            var   output  = pattern.Replace("2018-02-03 18.47.35.jpg", string.Empty);

            DateTime.TryParseExact(
                "20180203_184735",
                "yyyyMMdd_HHmmss",
                CultureInfo.InvariantCulture,
                DateTimeStyles.None,
                out var answerDateTime);

            Assert.AreEqual(answerDateTime, input.DateTime);
        }