}
@Override
public void write(InputStream inputStream) throws IOException {
LOGGER.info("Getting AW Reports Drive output folder");
File outputFolder;
// Get or create an AW Reports folder
File reportsFolder = googleDriveService.getReportsFolder(mccAccountId);
outputFolder = reportsFolder;
if( folderPerAccount ) {
File accountFolder = googleDriveService.getAccountFolder(reportsFolder, String.valueOf(accountId));
outputFolder = accountFolder;
}
// Create a Google Drive PDF file
File reportFile = new File();
reportFile.setFileExtension(reportFileType.name());
String fileNameWithOutExt = FilenameUtils.removeExtension((templateName));
String reportFileName = fileNameWithOutExt + "_" + accountId + "_" + dateStart + "_"
+ dateEnd + "." + reportFileType.toString().toLowerCase();
reportFile.setDescription("AdWords Report " + fileNameWithOutExt + " for account "
+ accountId + "for dates between" + dateStart + " and " + dateEnd);
reportFile.setTitle(reportFileName);
// Place the file in the correct Drive folder
reportFile.setParents(Arrays.asList(new ParentReference().setId(outputFolder.getId())));
// Write the PDF file to Drive.
if (reportFileType.equals(ReportFileType.PDF)) {
reportFile.setMimeType(PDF_MIME_TYPE);
AbstractInputStreamContent aisc = new InputStreamContent(PDF_MIME_TYPE, inputStream);
googleDriveService.getDriveService().files().insert(reportFile, aisc).execute();
}
// Write the HTML file to Drive.
if (reportFileType.equals(ReportFileType.HTML)) {
reportFile.setMimeType(HTML_MIME_TYPE);
AbstractInputStreamContent aisc = new InputStreamContent(HTML_MIME_TYPE, inputStream);
googleDriveService.getDriveService().files().insert(reportFile, aisc).execute();
}
// Convert the HTML file to a Drive Doc and write to Drive.
if (reportFileType.equals(ReportFileType.DRIVE_DOC)) {
reportFile.setMimeType(DOC_MIME_TYPE);
AbstractInputStreamContent aisc = new InputStreamContent(HTML_MIME_TYPE, inputStream);
googleDriveService.getDriveService().files().insert(reportFile, aisc).setConvert(true).execute();
}
inputStream.close();
}