public void run(String shortcutName, List<String> arguments, Consumer<Exception> errorCallback) { run(libraryManager.fetchShortcutsFromName(shortcutName), arguments, errorCallback); }
@Bean public ShortcutRunner shortcutRunner() { return new ShortcutRunner(scriptsConfiguration.scriptInterpreter(), libraryManager()); } }
public ShortcutDTO fetchShortcutsFromName(String name) { for (ShortcutCategoryDTO shortcutCategoryDTO : fetchShortcuts()) { for (ShortcutDTO shortcutDTO : shortcutCategoryDTO.getShortcuts()) { if (name.equals(shortcutDTO.getInfo().getName())) { return shortcutDTO; } } } return null; }
final ShortcutInfoDTO shortcutInfoDTOFromJsonFile = unSerializeShortcutInfo(infoFile); shortcutInfoDTOBuilder = new ShortcutInfoDTO.Builder(shortcutInfoDTOFromJsonFile); shortcutInfoDTOBuilder = new ShortcutInfoDTO.Builder(); shortcutInfoDTOBuilder.withName(baseName); if (StringUtils.isBlank(shortcutInfoDTOBuilder.getName())) { shortcutInfoDTOBuilder.withName(baseName); if (StringUtils.isBlank(shortcutInfoDTOBuilder.getCategory())) { shortcutInfoDTOBuilder.withCategory("Other"); final ShortcutInfoDTO shortcutInfoDTO = shortcutInfoDTOBuilder.build(); : getClass().getResource("defaultMiniature.png").toURI(); return new ShortcutDTO.Builder() .withId(baseName) .withInfo(shortcutInfoDTO) .withScript(IOUtils.toString(new FileInputStream(file), "UTF-8")) .withIcon(icon) .withMiniature(miniature) .build(); } catch (URISyntaxException | IOException e) { throw new IllegalStateException(e);
public void updateShortcut(ShortcutDTO shortcutDTO) { final String baseName = shortcutDTO.getId(); final File shortcutDirectory = new File(this.shortcutDirectory); final URI shortcutIcon = shortcutDTO.getIcon(); try { Files.move(iconFile.toPath(), iconBackup.toPath()); shortcutDTO = new ShortcutDTO.Builder(shortcutDTO).withIcon(iconBackup.toURI()).build(); } catch (IOException e) { LOGGER.error("Could not backup icon.", e); final URI shortcutMiniature = shortcutDTO.getMiniature(); try { Files.move(miniatureFile.toPath(), miniatureBackup.toPath()); shortcutDTO = new ShortcutDTO.Builder(shortcutDTO).withMiniature(miniatureBackup.toURI()).build(); } catch (IOException e) { LOGGER.error("Could not backup miniature.", e); deleteShortcut(shortcutDTO); createShortcut(shortcutDTO);
public void createShortcut(ShortcutDTO shortcutDTO) { final ShortcutInfoDTO shortcutInfo = shortcutDTO.getInfo(); final String baseName = shortcutDTO.getId(); final File shortcutDirectoryFile = new File(this.shortcutDirectory); FileUtils.writeStringToFile(scriptFile, shortcutDTO.getScript(), ENCODING); if (shortcutDTO.getIcon() != null) { File file = createFileWithFallback(shortcutDTO.getIcon(), "phoenicis.png"); if (file.exists()) { FileUtils.copyFile(file, iconFile); if (shortcutDTO.getMiniature() != null) { File file = createFileWithFallback(shortcutDTO.getMiniature(), "defaultMiniature.png"); if (file.exists()) { FileUtils.copyFile(file, miniatureFile); LOGGER.warn("Error while creating shortcut", e); } finally { libraryManager.refresh(); final File desktopShortcutFile = new File(desktopShortcutDirectoryFile, baseName + ".desktop"); try { final String content = "[Desktop Entry]\n" + "Name=" + shortcutInfo.getName() + "\n" + "Type=Application\n" + "Icon=" + miniatureFile.getAbsolutePath() + "\n" + "Exec=phoenicis-cli -run \"" + shortcutInfo.getName() + "\""; FileUtils.writeStringToFile(desktopShortcutFile, content, ENCODING); } catch (IOException e) {
public List<ShortcutCategoryDTO> fetchShortcuts() { final File shortcutDirectoryFile = new File(this.shortcutDirectory); if (!shortcutDirectoryFile.exists()) { shortcutDirectoryFile.mkdirs(); return Collections.emptyList(); } final File[] directoryContent = shortcutDirectoryFile.listFiles(); if (directoryContent == null) { return Collections.emptyList(); } HashMap<String, List<ShortcutDTO>> categoryMap = new HashMap<>(); for (File file : directoryContent) { if ("shortcut".equals(FilenameUtils.getExtension(file.getName()))) { ShortcutDTO shortcut = fetchShortcutDTO(shortcutDirectoryFile, file); String categoryId = shortcut.getInfo().getCategory(); if (!categoryMap.containsKey(categoryId)) { categoryMap.put(categoryId, new ArrayList<>()); } categoryMap.get(categoryId).add(shortcut); } } List<ShortcutCategoryDTO> shortcuts = new ArrayList<>(); for (Map.Entry<String, List<ShortcutDTO>> entry : categoryMap.entrySet()) { entry.getValue().sort(ShortcutDTO.nameComparator()); ShortcutCategoryDTO category = new ShortcutCategoryDTO.Builder().withId(entry.getKey()) .withName(entry.getKey()).withShortcuts(entry.getValue()).build(); shortcuts.add(tr(category)); } return shortcuts; }
List<ShortcutCategoryDTO> categories = this.libraryManager.fetchShortcuts(); categories.stream().flatMap(shortcutCategoryDTO -> shortcutCategoryDTO.getShortcuts().stream()) .forEach(shortcutDTO -> { final InteractiveScriptSession interactiveScriptSession = this.scriptInterpreter final String containerName = (String) shortcutReader.callMember("container"); if (containerName.equals(container.getName())) { this.shortcutManager.deleteShortcut(shortcutDTO);
@Bean public ContainersManager containersManager() { return new GenericContainersManager(toolsConfiguration.compatibleConfigFileFormatFactory(), libraryConfiguration.libraryManager(), libraryConfiguration.shortcutManager(), toolsConfiguration.fileUtilities(), scriptsConfiguration.scriptInterpreter(), phoenicisGlobalConfiguration.objectMapper()); }
private void uninstallShortcut(ShortcutDTO shortcut) { final String shortcutName = shortcut.getInfo().getName(); final ConfirmDialog confirmMessage = ConfirmDialog.builder() .withTitle(tr("Uninstall {0}", shortcutName)) .withMessage(tr("Are you sure you want to uninstall {0}?", shortcutName)) .withOwner(content.getScene().getWindow()) .withResizable(true) .withYesCallback(() -> shortcutManager.uninstallFromShortcut(shortcut, e -> { final ErrorDialog errorDialog = ErrorDialog.builder() .withMessage(tr("Error while uninstalling {0}", shortcutName)) .withException(e) .withOwner(content.getScene().getWindow()) .build(); errorDialog.showAndWait(); })) .build(); confirmMessage.showAndCallback(); }
@Bean public ShortcutManager shortcutManager() { return new ShortcutManager(shortcutDirectory, desktopShortcutDirectory, libraryManager(), scriptsConfiguration.scriptInterpreter(), phoenicisGlobalConfiguration.objectMapper()); }
@Option @LongSwitch("run") @ShortSwitch("r") @AllAvailableArguments public void runApp(List<String> arguments) { final String shortcutName = arguments.get(0); arguments.remove(0); final ShortcutRunner shortcutRunner = applicationContext.getBean(ShortcutRunner.class); shortcutRunner.run(shortcutName, arguments, e -> { throw new IllegalStateException(e); }); }
public void updateLibrary() { final List<ShortcutCategoryDTO> categories = libraryManager.fetchShortcuts(); Platform.runLater(() -> this.libraryView.populate(categories)); }
@Bean public LibraryView viewLibrary() { return new LibraryView(applicationName, containersPath, themeConfiguration.themeManager(), scriptsConfiguration.scriptInterpreter(), phoenicisGlobalConfiguration.objectMapper(), libraryConfiguration.shortcutRunner(), libraryConfiguration.shortcutManager(), javaFxSettingsConfiguration.javaFxSettingsManager()); }
@Bean public LibraryController libraryController() { return new LibraryController(viewsConfiguration.viewLibrary(), consoleController(), libraryConfiguration.libraryManager(), repositoryConfiguration.repositoryManager()); }
public void deleteShortcut(ShortcutDTO shortcutDTO) { final String baseName = shortcutDTO.getId(); final File shortcutDirectory = new File(this.shortcutDirectory); final File infoFile = new File(shortcutDirectory, baseName + ".info"); final File scriptFile = new File(shortcutDirectory, baseName + ".shortcut"); final File iconFile = new File(shortcutDirectory, baseName + ".icon"); final File miniatureFile = new File(shortcutDirectory, baseName + ".miniature"); if (infoFile.exists()) { infoFile.delete(); } if (scriptFile.exists()) { scriptFile.delete(); } if (iconFile.exists()) { iconFile.delete(); } if (miniatureFile.exists()) { miniatureFile.delete(); } if (this.desktopShortcutDirectory != null) { final File desktopShortcutDirectoryFile = new File(this.desktopShortcutDirectory); final File desktopShortcutFile = new File(desktopShortcutDirectoryFile, baseName + ".desktop"); if (desktopShortcutFile.exists()) { desktopShortcutFile.delete(); } } libraryManager.refresh(); }
@Bean public LibraryManager libraryManager() { return new LibraryManager(shortcutDirectory, phoenicisGlobalConfiguration.objectMapper()); }
public LibraryController(LibraryView libraryView, ConsoleController consoleController, LibraryManager libraryManager, RepositoryManager repositoryManager) { super(); this.libraryView = libraryView; this.libraryManager = libraryManager; this.repositoryManager = repositoryManager; this.libraryManager.setOnUpdate(this::updateLibrary); this.libraryView.setOnOpenConsole(() -> libraryView.createNewTab(consoleController.createConsole())); this.libraryView.setOnSelectionChanged(event -> { if (this.libraryView.isSelected() && this.firstViewSelection) { this.repositoryManager.addCallbacks(this::updateLibrary, e -> { }); this.repositoryManager.triggerCallbacks(); this.firstViewSelection = false; } }); }
private void stopShortcut(ShortcutDTO shortcut) { shortcutRunner.stop(shortcut, e -> { final ErrorDialog errorDialog = ErrorDialog.builder() .withMessage(tr("Error")) .withException(e) .withOwner(content.getScene().getWindow()) .build(); errorDialog.showAndWait(); }); }
private void runShortcut(ShortcutDTO shortcut) { shortcutRunner.run(shortcut, Collections.emptyList(), e -> { final ErrorDialog errorDialog = ErrorDialog.builder() .withMessage(tr("Error")) .withException(e) .withOwner(content.getScene().getWindow()) .build(); errorDialog.showAndWait(); }); }