protected void processReport() {
		try {
			log.info("Started the thread");
			
			String error = checkFolder(reportFolder.getText());
			
			if (!Utils.isEmpty(error)) {
				log.info("Error: " + error);
				Run.showErrorDialog(getSelfRef(), error);
				return;
			}
			
			boolean doMusic = allMusicCheckBox.isSelected();
			boolean doNameDup = dupNameCheckBox.isSelected();
			boolean doContentDup = dupContentCheckBox.isSelected();
			
			if (doMusic) {
				sourceProcessing.writeSongCollection(reportFolder.getText());
			}
			
			duplicateProcessing.checkForDuplicates(reportFolder.getText(), doContentDup, doNameDup);
			
			if (duplicateProcessing.wasRunning()) {
				Run.showInfoDialog(getSelfRef(), "Successfully created reports at " + reportFolder.getText());							
			}
			
			
		} catch (SQLException e) {
			log.log(Level.SEVERE,"An error occurred checking for duplicates: " + e.getMessage(),e);
			Run.showErrorDialog(getSelfRef(), e.getMessage());					
		} catch (Exception e) {
			log.log(Level.SEVERE,"An error occurred checking for duplicates: " + e.getMessage(),e);
			Run.showErrorDialog(getSelfRef(), e.getMessage());
		} 
	}