Class Submitter

java.lang.Object
edu.wisc.ssec.mcidasv.util.BackgroundTask<String>
edu.wisc.ssec.mcidasv.supportform.Submitter
All Implemented Interfaces:
Runnable, Future<String>

public class Submitter extends BackgroundTask<String>
Abstraction of a background thread that is used to submit support requests to the McIDAS-V Help Desk Team.
  • Field Details

    • POST_ERROR

      public static final String POST_ERROR
      Error message to display if the server had problems.
      See Also:
    • logger

      private static final org.slf4j.Logger logger
      Logging object.
    • POST_ATTEMPTS

      private static final int POST_ATTEMPTS
      We'll follow up to this many redirects for requestUrl.
      See Also:
    • form

      private final SupportForm form
      Used to gather user input and system information.
    • requestUrl

      private final String requestUrl
      URL that we'll attempt to POST our requests at.
      See Also:
    • validFormUrl

      Keeps track of the most recent redirect for requestUrl.
    • tryCount

      private int tryCount
      Number of redirects we've tried since starting.
    • method

      private org.apache.commons.httpclient.methods.PostMethod method
      Handy reference to the status code (and more) of our POST.
  • Constructor Details

    • Submitter

      public Submitter(SupportForm form)
      Prepare a support request to be sent (off of the event dispatch thread).
      Parameters:
      form - Support request form to send. Cannot be null.
  • Method Details

    • buildRealFilePart

      private static org.apache.commons.httpclient.methods.multipart.FilePart buildRealFilePart(String id, String file)
      Creates a file attachment that's based upon a real file.
      Parameters:
      id - The parameter ID. Usually something like "form_data[att_two]".
      file - Path to the file that's going to be attached.
      Returns:
      POST-able file attachment using the name and contents of file.
    • buildFakeFilePart

      private static org.apache.commons.httpclient.methods.multipart.FilePart buildFakeFilePart(String id, String file, byte[] data)
      Creates a file attachment that isn't based upon an actual file. Useful for something like the "extra" attachment where you collect a bunch of data but don't want to deal with creating a temporary file.
      Parameters:
      id - Parameter ID. Typically something like "form_data[att_extra]".
      file - Fake name of the file. Can be whatever you like.
      data - The actual data to place inside the attachment.
      Returns:
      POST-able file attachment using a spoofed filename!
    • buildPostMethod

      private static org.apache.commons.httpclient.methods.PostMethod buildPostMethod(String url, SupportForm form)
      Attempts to POST to url using the information from form.
      Parameters:
      url - URL that'll accept the POST. Typically requestUrl.
      form - The SupportForm that contains the data to use in the support request.
      Returns:
      Big honkin' object that contains the support request.
    • compute

      protected String compute()
      Attempt to POST contents of support request form to requestUrl.
      Specified by:
      compute in class BackgroundTask<String>
      Throws:
      WrapperException - if there was a problem on the server.
    • onCompletion

      protected void onCompletion(String result, Throwable exception, boolean cancelled)
      Handles completion of a support request.
      Overrides:
      onCompletion in class BackgroundTask<String>
      Parameters:
      result - Result of compute().
      exception - Exception thrown from compute(), if any.
      cancelled - Whether or not the user opted to cancel.