Search in sources :

Example 6 with CategoryDTO

use of org.phoenicis.repository.dto.CategoryDTO in project POL-POM-5 by PlayOnLinux.

the class LocalRepository method fetchCategories.

private List<CategoryDTO> fetchCategories(File[] categoryDirectories) {
    final List<CategoryDTO> results = new ArrayList<>();
    for (File categoryDirectory : categoryDirectories) {
        if (categoryDirectory.isDirectory() && !categoryDirectory.getName().startsWith(".")) {
            final File categoryFile = new File(categoryDirectory, "category.json");
            final CategoryDTO.Builder categoryDTOBuilder = new CategoryDTO.Builder(unSerializeCategory(categoryFile)).withName(categoryDirectory.getName()).withApplications(fetchApplications(categoryDirectory));
            final File categoryIconFile = new File(categoryDirectory, CATEGORY_ICON_NAME);
            if (categoryIconFile.exists()) {
                categoryDTOBuilder.withIcon(categoryIconFile.toURI());
            }
            CategoryDTO category = categoryDTOBuilder.build();
            results.add(category);
        }
    }
    Collections.sort(results, Comparator.comparing(CategoryDTO::getName));
    return results;
}
Also used : CategoryDTO(org.phoenicis.repository.dto.CategoryDTO) ToStringBuilder(org.apache.commons.lang.builder.ToStringBuilder) HashCodeBuilder(org.apache.commons.lang.builder.HashCodeBuilder) EqualsBuilder(org.apache.commons.lang.builder.EqualsBuilder) File(java.io.File)

Example 7 with CategoryDTO

use of org.phoenicis.repository.dto.CategoryDTO in project POL-POM-5 by PlayOnLinux.

the class Repository method getApplication.

default default ApplicationDTO getApplication(List<String> path) {
    final CategoryDTO categoryDTO = getCategory(path);
    if (categoryDTO == null) {
        return null;
    }
    final Optional<ApplicationDTO> applicationDTO = categoryDTO.getApplications().stream().filter(application -> path.get(1).equals(application.getName())).findFirst();
    return applicationDTO.orElse(null);
}
Also used : CategoryDTO(org.phoenicis.repository.dto.CategoryDTO) Consumer(java.util.function.Consumer) CategoryDTO(org.phoenicis.repository.dto.CategoryDTO) List(java.util.List) Optional(java.util.Optional) Collections(java.util.Collections) ApplicationDTO(org.phoenicis.repository.dto.ApplicationDTO) ScriptDTO(org.phoenicis.repository.dto.ScriptDTO) ApplicationDTO(org.phoenicis.repository.dto.ApplicationDTO)

Example 8 with CategoryDTO

use of org.phoenicis.repository.dto.CategoryDTO in project POL-POM-5 by PlayOnLinux.

the class AppsController method setDefaultCategoryIcons.

private void setDefaultCategoryIcons(List<CategoryDTO> categoryDTOS) {
    try {
        StringBuilder cssBuilder = new StringBuilder();
        for (CategoryDTO category : categoryDTOS) {
            cssBuilder.append("#" + category.getName().toLowerCase() + "Button{\n");
            URI categoryIcon = category.getIcon();
            if (categoryIcon == null) {
                cssBuilder.append("-fx-background-image: url('/org/phoenicis/javafx/views/common/phoenicis.png');\n");
            } else {
                cssBuilder.append("-fx-background-image: url('" + categoryIcon + "');\n");
            }
            cssBuilder.append("}\n");
        }
        String css = cssBuilder.toString();
        Path temp = Files.createTempFile("defaultCategoryIcons", ".css").toAbsolutePath();
        File tempFile = temp.toFile();
        tempFile.deleteOnExit();
        Files.write(temp, css.getBytes());
        String defaultCategoryIconsCss = temp.toUri().toString();
        themeManager.setDefaultCategoryIconsCss(defaultCategoryIconsCss);
    } catch (IOException e) {
        LOGGER.warn("Could not set default category icons.", e);
    }
}
Also used : CategoryDTO(org.phoenicis.repository.dto.CategoryDTO) Path(java.nio.file.Path) IOException(java.io.IOException) URI(java.net.URI) File(java.io.File)

Example 9 with CategoryDTO

use of org.phoenicis.repository.dto.CategoryDTO in project POL-POM-5 by PlayOnLinux.

the class GitRepository method fetchInstallableApplications.

@Override
public synchronized List<CategoryDTO> fetchInstallableApplications() {
    LOGGER.info(String.format("Begin fetching process of git-repository '%s' in '%s'", this.gitRepositoryUri, gitRepositoryLocation.getAbsolutePath()));
    boolean folderExists = gitRepositoryLocation.exists();
    // check that the repository folder exists
    if (!folderExists) {
        LOGGER.info(String.format("Creating new folder '%s' for git-repository '%s'", gitRepositoryLocation.getAbsolutePath(), this.gitRepositoryUri));
        if (!gitRepositoryLocation.mkdirs()) {
            LOGGER.error(String.format("Couldn't create folder for git repository '%s' at '%s'", this.gitRepositoryUri, gitRepositoryLocation.getAbsolutePath()));
            return Collections.emptyList();
        }
    }
    List<CategoryDTO> result = Collections.emptyList();
    try {
        Git gitRepository = null;
        /*
             * if the repository folder previously didn't exist, clone the
             * repository now
             */
        if (!folderExists) {
            LOGGER.info(String.format("Cloning git-repository '%s' to '%s'", this.gitRepositoryUri, gitRepositoryLocation.getAbsolutePath()));
            gitRepository = Git.cloneRepository().setURI(this.gitRepositoryUri.toString()).setDirectory(gitRepositoryLocation).call();
        } else /*
             * otherwise open the folder and pull the newest updates from the
             * repository
             */
        {
            LOGGER.info(String.format("Opening git-repository '%s' at '%s'", this.gitRepositoryUri, gitRepositoryLocation.getAbsolutePath()));
            gitRepository = Git.open(gitRepositoryLocation);
            LOGGER.info(String.format("Pulling new commits from git-repository '%s' to '%s'", this.gitRepositoryUri, gitRepositoryLocation.getAbsolutePath()));
            gitRepository.pull().call();
        }
        // close repository to free resources
        gitRepository.close();
        result = localRepositoryFactory.createInstance(this.gitRepositoryLocation, this.gitRepositoryUri).fetchInstallableApplications();
    } catch (RepositoryNotFoundException | GitAPIException e) {
        LOGGER.error(String.format("Folder '%s' is no git-repository", gitRepositoryLocation.getAbsolutePath()), e);
    } catch (IOException e) {
        LOGGER.error(String.format("An unknown error occured", e));
    }
    return result;
}
Also used : CategoryDTO(org.phoenicis.repository.dto.CategoryDTO) GitAPIException(org.eclipse.jgit.api.errors.GitAPIException) Git(org.eclipse.jgit.api.Git) RepositoryNotFoundException(org.eclipse.jgit.errors.RepositoryNotFoundException) IOException(java.io.IOException)

Aggregations

CategoryDTO (org.phoenicis.repository.dto.CategoryDTO)9 IOException (java.io.IOException)3 ApplicationDTO (org.phoenicis.repository.dto.ApplicationDTO)3 File (java.io.File)2 URI (java.net.URI)2 List (java.util.List)2 EqualsBuilder (org.apache.commons.lang.builder.EqualsBuilder)2 HashCodeBuilder (org.apache.commons.lang.builder.HashCodeBuilder)2 ScriptDTO (org.phoenicis.repository.dto.ScriptDTO)2 URISyntaxException (java.net.URISyntaxException)1 Path (java.nio.file.Path)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 Optional (java.util.Optional)1 Consumer (java.util.function.Consumer)1 Collectors (java.util.stream.Collectors)1 ToStringBuilder (org.apache.commons.lang.builder.ToStringBuilder)1 Git (org.eclipse.jgit.api.Git)1 GitAPIException (org.eclipse.jgit.api.errors.GitAPIException)1 RepositoryNotFoundException (org.eclipse.jgit.errors.RepositoryNotFoundException)1