public AttachmentsSynchronizationContext(
     TisAttachmentsOperation attachmentsOperation,
     ITisAttachmentsFilter attachmentsFilter,
     TisAttachmentsSynchronizationPolicy attachmentsSynchronizationPolicy)
 {
     m_attachmentsOperation             = attachmentsOperation;
     m_attachmentsFilter                = attachmentsFilter;
     m_attachmentsSynchronizationPolicy = attachmentsSynchronizationPolicy;
 }
 protected virtual bool NeedDownload(
     string attachment,
     TisAttachmentsSynchronizationPolicy attachmentsComparePolicy)
 {
     return(AreLocalAndSourceDifferent(
                attachment,
                attachmentsComparePolicy
                ));
 }
        // TO_DO: Change to internal and move to client....
        public virtual ITisAttachmentsSynchronizationContext AddAttachmentsSynchronizationContext(
            TisAttachmentsOperation attachmentsOperation,
            ITisAttachmentsFilter attachmentsFilter,
            TisAttachmentsSynchronizationPolicy attachmentsSynchronizationPolicy)
        {
            ITisAttachmentsSynchronizationContext attachmentsSynchronizationContext = new AttachmentsSynchronizationContext(
                attachmentsOperation,
                attachmentsFilter,
                attachmentsSynchronizationPolicy);

            AddAttachmentsSynchronizationContext(attachmentsSynchronizationContext);

            return(attachmentsSynchronizationContext);
        }
        protected virtual bool NeedUpload(
            string attachment,
            TisAttachmentsSynchronizationPolicy attachmentsComparePolicy)
        {
            // Don't need to save if local file not exists
            if (!System.IO.File.Exists(GetLocalFileName(attachment)))
            {
                return(false);
            }

            // Return true if files are different
            return(AreLocalAndSourceDifferent(
                       attachment,
                       attachmentsComparePolicy));
        }
        private bool AreLocalAndSourceDifferent(
            string attachemnt,
            TisAttachmentsSynchronizationPolicy attachmentsComparePolicy)
        {
            if (attachmentsComparePolicy == TisAttachmentsSynchronizationPolicy.None)
            {
                return(true);
            }

            string localFileName = GetLocalFileName(attachemnt);

            FileInfo oFileInfo = new FileInfo(localFileName);

            if (!oFileInfo.Exists)
            {
                // No local file = different
                return(true);
            }

            ITisAttachmentInfo oRemoteAttInfo =
                m_RemoteAttachmentsInfo.GetAttachmentInfo(attachemnt);

            if (oRemoteAttInfo == null)
            {
                // No remote attachment = different
                return(true);
            }

            if (attachmentsComparePolicy == TisAttachmentsSynchronizationPolicy.LocalNew)
            {
                return(oFileInfo.LastWriteTime > oRemoteAttInfo.LastModified);
            }

            if (attachmentsComparePolicy == TisAttachmentsSynchronizationPolicy.RemoteNew)
            {
                return(oFileInfo.LastWriteTime < oRemoteAttInfo.LastModified);
            }

            if (oFileInfo.LastWriteTime != oRemoteAttInfo.LastModified ||
                oFileInfo.Length != oRemoteAttInfo.SizeBytes)
            {
                // Different modify time -> different
                return(true);
            }

            // The same
            return(false);
        }