com.aspose.words

Interface IDocumentLoadingCallback

  • public interface IDocumentLoadingCallback 

Implement this interface if you want to have your own custom method called during loading a document.

Example:

Shows how to notify the user if document loading exceeded expected loading time.
@Test
public void progressCallback() throws Exception
{
    LoadingProgressCallback progressCallback = new LoadingProgressCallback();

    LoadOptions loadOptions = new LoadOptions(); { loadOptions.setProgressCallback(progressCallback); }

    try
    {
        new Document(getMyDir() + "Big document.docx", loadOptions);
    }
    catch (IllegalStateException exception)
    {
        System.out.println(exception.getMessage());
        // Handle loading duration issue.
    }
}

/// <summary>
/// Cancel a document loading after the "MaxDuration" seconds.
/// </summary>
public static class LoadingProgressCallback implements IDocumentLoadingCallback
{
    /// <summary>
    /// Ctr.
    /// </summary>
    public LoadingProgressCallback()
    {
        mLoadingStartedAt = new Date();
    }

    /// <summary>
    /// Callback method which called during document loading.
    /// </summary>
    /// <param name="args">Loading arguments.</param>
    public void notify(DocumentLoadingArgs args)
    {
        Date canceledAt = new Date();
        long diff = canceledAt.getTime() - mLoadingStartedAt.getTime();
        long ellapsedSeconds = TimeUnit.MILLISECONDS.toSeconds(diff);

        if (ellapsedSeconds > MAX_DURATION)
            throw new IllegalStateException(MessageFormat.format("EstimatedProgress = {0}; CanceledAt = {1}", args.getEstimatedProgress(), canceledAt));
    }

    /// <summary>
    /// Date and time when document loading is started.
    /// </summary>
    private Date mLoadingStartedAt;

    /// <summary>
    /// Maximum allowed duration in sec.
    /// </summary>
    private static final double MAX_DURATION = 0.5;
}

Method Summary
abstract voidnotify(DocumentLoadingArgs args)
This is called to notify of document loading progress.
 

    • Method Detail

      • notify

        public abstract void notify(DocumentLoadingArgs args)
        This is called to notify of document loading progress. The primary uses for this interface is to allow application code to obtain progress status and abort loading process.

        An exception should be threw from the progress callback for abortion and it should be caught in the consumer code.

        Parameters:
        args - An argument of the event.
        See Also:
        LoadOptions.ProgressCallback

        Example:

        Shows how to notify the user if document loading exceeded expected loading time.
        @Test
        public void progressCallback() throws Exception
        {
            LoadingProgressCallback progressCallback = new LoadingProgressCallback();
        
            LoadOptions loadOptions = new LoadOptions(); { loadOptions.setProgressCallback(progressCallback); }
        
            try
            {
                new Document(getMyDir() + "Big document.docx", loadOptions);
            }
            catch (IllegalStateException exception)
            {
                System.out.println(exception.getMessage());
                // Handle loading duration issue.
            }
        }
        
        /// <summary>
        /// Cancel a document loading after the "MaxDuration" seconds.
        /// </summary>
        public static class LoadingProgressCallback implements IDocumentLoadingCallback
        {
            /// <summary>
            /// Ctr.
            /// </summary>
            public LoadingProgressCallback()
            {
                mLoadingStartedAt = new Date();
            }
        
            /// <summary>
            /// Callback method which called during document loading.
            /// </summary>
            /// <param name="args">Loading arguments.</param>
            public void notify(DocumentLoadingArgs args)
            {
                Date canceledAt = new Date();
                long diff = canceledAt.getTime() - mLoadingStartedAt.getTime();
                long ellapsedSeconds = TimeUnit.MILLISECONDS.toSeconds(diff);
        
                if (ellapsedSeconds > MAX_DURATION)
                    throw new IllegalStateException(MessageFormat.format("EstimatedProgress = {0}; CanceledAt = {1}", args.getEstimatedProgress(), canceledAt));
            }
        
            /// <summary>
            /// Date and time when document loading is started.
            /// </summary>
            private Date mLoadingStartedAt;
        
            /// <summary>
            /// Maximum allowed duration in sec.
            /// </summary>
            private static final double MAX_DURATION = 0.5;
        }