Challenge Overview
Please review the standard Smartsheet guidelines. ��Valid submissions must consist of high quality, production-ready Java code. ��Make sure to read the judging criteria��(link below)
General App requirements
General App requirements
- This is a command line Java app.
- Create a properties file which��will be used by the app at runtime providing several attributes, including user-generated Access Token and the target output directory
- Wait & retry logic must be present to ensure that when the rate limit has been reached (indicated by a 503 Service unavailable response from the server), the app will wait and retry. The wait time will be calculated as the retry count * 5s. ��Max retry count should be 5, after which the app execution should fail.
Include only sheets owned by the user.
For each sheet owned by the user (where accessLevel="OWNER")
- Create a workspace/folder hierarchy for the sheet based on its API path
- Place all workspaces in a directory called "workspaces"����(in case of a workspace name collision, use the��Name" and "Name (2)" pattern)
- Fetch Excel version of the sheet and store it in its destination workspace/folder
- Use the sheet name as file name; if there are more than one sheet with the same name in the same folder, append " (NUMBER)" to file name, where NUMBER starts at 2
- Print progress messages and errors to standard output.
For each sheet that has one or more attachments:
- Create a folder in the same location as the Excel file for the sheet. ��Use the sheet name + " - attachments" as the folder name.
- Note that users can attach files to the sheets, to individual rows and to comments in discussions.
- If there are more than one attachment with the same name, append " (NUMBER)" to attachment file name.
- For more information on uploading attachments, file size limits, etc. see the Smartsheet Help Center article on Uploading Attachments.
If there any non-file attachments (such as Box, Google Drive or traditional URLs):
- Create a three-column CSV file inside the attachments folder. ��
- Use the sheet name + " - non-file attachments.csv" as the file name. ��The three columns are: Name, URL, AttachmentType.
- For each non-file attachment, add a new CSV row to the file containing values for the Name, URL, and AttachmentType, respectively.
BONUS��requirement ($100 extra when included in a winning submission)��
Use Java managed thread pool to parallelize attachment downloading
Use Java managed thread pool to parallelize attachment downloading