Esempio n. 1
0
        } // end RenamerProcess

        /// <summary>
        /// Constructs a new instance of the RenamerProcess class and sets the File Names, Rename Value,
        /// Rename Prefix, and Suffix Mask used in the renaming process.
        /// </summary>
        /// <param name="sFileNames">An array of file names including their path</param>
        /// <param name="sFilenameTemplate"></param>
        /// <param name="sSortingOption">Used to determine how the files should be sorted prior to
        /// renaming.  This ensures the suffix mask is used appropriately.</param>
        /// <param name="bTestRun"></param>
        public RenamerProcess(string[] sFileNames, RenamingTypes renamingType, string sRenameTemplate, double timeOffset,
                              string sSortingOption, bool bTestRun)
        {
            _sFileNames = sFileNames;
            _renamingType = renamingType;
            _sRenamingTemplate = sRenameTemplate;
            _timeOffset = timeOffset;
            _sSortingOption = sSortingOption;
            _bTestRun = bTestRun;
        } // end RenamerProcess constructor
Esempio n. 2
0
        } // end Rename

        public bool Rename(string sRenamingTemplate, RenamingTypes renamingType, double timeOffset, bool bTestRun)
        {
            Mask             mask            = new Mask(sRenamingTemplate);
            DateTimeExtended dtDateCreated   = null;
            string           sCurrentName    = String.Empty;
            string           sPreviousName   = String.Empty;
            bool             bGetDateCreated = mask.DateTimeExists || renamingType == RenamingTypes.DateTaken;
            int iCounter = 1;

            foreach (PowerFile powerFile in List)
            {
                if (bGetDateCreated)
                {
                    dtDateCreated = powerFile.DatePictureTaken?.AddHours(timeOffset);
                    if (dtDateCreated == null)
                    {
                        dtDateCreated = powerFile.DateModified?.AddHours(timeOffset);
                        if (dtDateCreated == null)
                        {
                            FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, powerFile.FullFileName,
                                                                            false,
                                                                            "DatePictureTaken property not found.", false));
                        }
                        else
                        {
                            FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, powerFile.FullFileName,
                                                                            true,
                                                                            "DatePictureTaken property not found DateModified property used.", true));
                        }
                    }
                } // end if

                if (dtDateCreated != null || !bGetDateCreated)
                {
                    var retries = 0;

                    while (retries < 3)
                    {
                        try
                        {
                            sCurrentName = mask.Format(dtDateCreated, iCounter, powerFile.Title, powerFile.FileName);
                            if (sCurrentName != sPreviousName)
                            {
                                iCounter = 0;
                            } // end if

                            sCurrentName = mask.Format(dtDateCreated, ++iCounter, powerFile.Title, powerFile.FileName);

                            sPreviousName = sCurrentName;

                            switch (renamingType)
                            {
                            case RenamingTypes.DateTaken:
                                FileRenamed(this, powerFile.UpdateDateTaken(dtDateCreated, bTestRun));
                                break;

                            case RenamingTypes.Filename:
                                FileRenamed(this, powerFile.Rename(sCurrentName, true, bTestRun));
                                break;

                            case RenamingTypes.Title:
                                FileRenamed(this, powerFile.UpdateTitle(sCurrentName, bTestRun));
                                break;
                            }

                            break;
                        }
                        catch (IOException ex)
                        {
                            retries++;

                            FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, sCurrentName, false, ex.Message + " - trying again", true));
                        }
                    }
                } // end else
            }     // end foreach

            return(true);
        } // end Rename