package husacct.control.task; import husacct.ServiceProvider; import husacct.common.dto.ApplicationDTO; import husacct.common.dto.ProjectDTO; import husacct.common.dto.SoftwareUnitDTO; import husacct.common.locale.ILocaleService; import husacct.control.IControlService; import husacct.control.presentation.util.AboutDialog; import husacct.control.presentation.util.ConfigurationDialog; import husacct.control.presentation.util.DocumentationDialog; import husacct.control.presentation.util.LoadingDialog; import husacct.control.presentation.util.SetApplicationDialog; import husacct.control.task.threading.ThreadWithLoader; import java.awt.Component; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import javax.swing.JOptionPane; import org.apache.log4j.Logger; public class ApplicationController { private MainController mainController; private Logger logger = Logger.getLogger(ApplicationController.class); private LoadingDialog loadingDialog; public ApplicationController(MainController mainController) { this.mainController = mainController; } public void showApplicationDetailsGui(){ new SetApplicationDialog(mainController); } public void setAndAnalyseApplicationData(ApplicationDTO applicationDTO){ setApplicationData(applicationDTO); analyseApplication(); } public ApplicationDTO createApplicationData(String name, String language, String version, ArrayList<String> paths){ ArrayList<ProjectDTO> projects = new ArrayList<ProjectDTO>(); ArrayList<SoftwareUnitDTO> analysedModules = new ArrayList<SoftwareUnitDTO>(); ProjectDTO project = new ProjectDTO(name, paths, language, version, "", analysedModules); projects.add(project); ApplicationDTO applicationData = new ApplicationDTO(name, projects, version); return applicationData; } public void setApplicationData(ApplicationDTO applicationDTO) { ServiceProvider.getInstance().getDefineService().createApplication( applicationDTO.name, applicationDTO.projects, applicationDTO.version ); } public void analyseApplication(){ IControlService controlService = ServiceProvider.getInstance().getControlService(); ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); ApplicationDTO applicationDTO = ServiceProvider.getInstance().getDefineService().getApplicationDetails(); try { ThreadWithLoader analyseThread = controlService.getThreadWithLoader(localeService.getTranslatedString("AnalysingApplication"), new AnalyseTask(mainController,applicationDTO)); loadingDialog = analyseThread.getLoadingDialog(); if (loadingDialog != null) { loadingDialog.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { mainController.getStateController().setAnalysing(false); logger.debug("Stopping Thread"); } }); } analyseThread.getThread(); analyseThread.run(); } catch (Exception exception){ logger.error(exception.getMessage()); } } public LoadingDialog getCurrentLoadingDialog() { return this.loadingDialog; } public void setCurrentLoadingDialog(LoadingDialog ld) { this.loadingDialog = ld; } public void showAboutHusacctGui(){ new AboutDialog(mainController); } public void showErrorMessage(String message){ JOptionPane.showMessageDialog(mainController.getMainGui(), message, "Error", JOptionPane.ERROR_MESSAGE); //logger.error("Error: " + message); } public void showInfoMessage(String message){ JOptionPane.showMessageDialog(mainController.getMainGui(), message, "Info", JOptionPane.INFORMATION_MESSAGE); //logger.error("Info: " + message); } public void showConfigurationGUI() { new ConfigurationDialog(mainController); } public void showDocumentationGUI() { new DocumentationDialog(mainController); } public void showHelpGUI(Component component) { // HelpGUI deactivated in release 3.4.1, since the documentation was not up to date nor context specific. //new HelpDialog(mainController, component); new DocumentationDialog(mainController); } }