Example #1
0
        public static string GetFileStatusText(string fullFileName,
                                               bool fileInaccessibleOrError = false,
                                               string fileErrorMessage      = null,
                                               ExiftoolProcessStatus exiftoolProcessStatus = ExiftoolProcessStatus.DoNotUpdate,
                                               bool checkLockedStatus     = false,
                                               int checkLockStatusTimeout = 100,
                                               bool showLockedByProcess   = false)
        {
            FileStatus fileStatus = FileHandler.GetFileStatus(fullFileName,
                                                              hasErrorOccured: fileInaccessibleOrError,
                                                              errorMessage: fileErrorMessage,
                                                              exiftoolProcessStatus: exiftoolProcessStatus,
                                                              checkLockedStatus: checkLockedStatus,
                                                              checkLockStatusTimeout: checkLockStatusTimeout);

            string fileStatusText = ConvertFileStatusToText(fileStatus, fullFileName);

            if (showLockedByProcess && fileStatus.HasAnyLocks)
            {
                fileStatusText += "\r\n" + GetLockedByText(fullFileName);
            }

            return(fileStatusText);
        }
Example #2
0
        public static FileStatus GetFileStatus(string fullFileName,
                                               bool hasErrorOccured = false,
                                               string errorMessage  = null,
                                               ExiftoolProcessStatus exiftoolProcessStatus = ExiftoolProcessStatus.DoNotUpdate,
                                               bool checkLockedStatus     = false,
                                               int checkLockStatusTimeout = 100)
        {
            FileStatus fileStatus = new FileStatus();

            try
            {
                #region File - Exists, Dirty or has Error
                fileStatus.IsDirty    = false;
                fileStatus.FileExists = File.Exists(fullFileName);
                FileInfo fileInfo = null;
                if (fileStatus.FileExists)
                {
                    fileInfo = new FileInfo(fullFileName);
                }
                fileStatus.HasErrorOccured  = hasErrorOccured;
                fileStatus.FileErrorMessage = errorMessage;
                #endregion

                #region File - Location on Device or in Cloud
                fileStatus.IsInCloud = fileStatus.FileExists && IsFileInCloud(fullFileName);
                fileStatus.IsVirtual = fileStatus.FileExists && IsFileVirtual(fullFileName);
                fileStatus.IsOffline = fileStatus.FileExists && (fileInfo == null ? false : (fileInfo.Attributes & FileAttributes.Offline) == FileAttributes.Offline);
                #endregion

                #region File - Locks and Access rights
                fileStatus.IsReadOnly =
                    fileStatus.FileExists && (fileInfo == null ? false : (fileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
                fileStatus.IsFileLockedReadAndWrite = fileStatus.IsInCloudOrVirtualOrOffline ||
                                                      (!fileStatus.IsInCloudOrVirtualOrOffline && fileStatus.FileExists && checkLockedStatus && IsFileLockedForReadAndWriteCached(fullFileName, checkLockStatusTimeout));
                fileStatus.IsFileLockedForRead = fileStatus.IsFileLockedReadAndWrite || fileStatus.IsInCloudOrVirtualOrOffline ||
                                                 (!fileStatus.IsInCloudOrVirtualOrOffline && fileStatus.FileExists && checkLockedStatus && IsFileLockedForRead(fullFileName, checkLockStatusTimeout));
                #endregion

                #region Exiftool - Where in Processes
                if (exiftoolProcessStatus != ExiftoolProcessStatus.DoNotUpdate)
                {
                    fileStatus.ExiftoolProcessStatus = exiftoolProcessStatus;
                }
                #endregion
            }
            catch (Exception ex)
            {
                #region File - Exists, Dirty or has Error
                fileStatus.IsDirty          = false;
                fileStatus.FileExists       = false;
                fileStatus.HasErrorOccured  = true;
                fileStatus.FileErrorMessage = ex.Message;
                #endregion

                #region File - Location on Device or in Cloud
                fileStatus.IsInCloud = false;
                fileStatus.IsVirtual = false;
                fileStatus.IsOffline = false;
                #endregion

                #region File - Locks and Access rights
                fileStatus.IsReadOnly = true;
                fileStatus.IsFileLockedReadAndWrite = false;
                fileStatus.IsFileLockedForRead      = false;
                #endregion

                #region Exiftool - Where in Processes
                fileStatus.ExiftoolProcessStatus = ExiftoolProcessStatus.FileInaccessibleOrError;
                #endregion
            }
            return(fileStatus);
        }