/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.screens.projecteditor.backend.server; import javax.inject.Inject; import org.guvnor.common.services.project.service.POMService; import org.guvnor.common.services.project.service.ProjectRepositoriesService; import org.guvnor.common.services.shared.metadata.MetadataService; import org.guvnor.common.services.shared.metadata.model.Metadata; import org.kie.workbench.common.screens.projecteditor.model.ProjectScreenModel; import org.kie.workbench.common.services.shared.kmodule.KModuleService; import org.kie.workbench.common.services.shared.project.KieProject; import org.kie.workbench.common.services.shared.project.KieProjectService; import org.kie.workbench.common.services.shared.project.ProjectImportsService; import org.kie.workbench.common.services.shared.whitelist.PackageNameWhiteListService; import org.uberfire.backend.server.util.Paths; import org.uberfire.backend.vfs.Path; public class ProjectScreenModelLoader { private KieProjectService projectService; private POMService pomService; private MetadataService metadataService; private KModuleService kModuleService; private ProjectImportsService importsService; private ProjectRepositoriesService repositoriesService; private PackageNameWhiteListService whiteListService; public ProjectScreenModelLoader() { } @Inject public ProjectScreenModelLoader( final KieProjectService projectService, final POMService pomService, final MetadataService metadataService, final KModuleService kModuleService, final ProjectImportsService importsService, final ProjectRepositoriesService repositoriesService, final PackageNameWhiteListService whiteListService ) { this.projectService = projectService; this.pomService = pomService; this.metadataService = metadataService; this.kModuleService = kModuleService; this.importsService = importsService; this.repositoriesService = repositoriesService; this.whiteListService = whiteListService; } public ProjectScreenModel load( final Path pathToPom ) { return new Loader( pathToPom ).load(); } protected boolean fileExists( final Path path ) { return org.uberfire.java.nio.file.Files.exists( Paths.convert( path ) ); } class Loader { private final ProjectScreenModel model = new ProjectScreenModel(); private final Path pathToPom; private final KieProject project; public Loader( final Path pathToPom ) { this.pathToPom = pathToPom; project = projectService.resolveProject( pathToPom ); } public ProjectScreenModel load() { loadPOM(); loadKModule(); loadImports(); loadWhiteList(); loadRepositories(); return model; } private void loadPOM() { model.setPOM( pomService.load( pathToPom ) ); model.setPOMMetaData( getMetadata( pathToPom ) ); model.setPathToPOM( pathToPom ); } private void loadKModule() { model.setKModule( kModuleService.load( project.getKModuleXMLPath() ) ); model.setKModuleMetaData( getMetadata( project.getKModuleXMLPath() ) ); model.setPathToKModule( project.getKModuleXMLPath() ); } private void loadImports() { model.setProjectImports( importsService.load( project.getImportsPath() ) ); model.setProjectImportsMetaData( getMetadata( project.getImportsPath() ) ); model.setPathToImports( project.getImportsPath() ); } private void loadRepositories() { model.setRepositories( repositoriesService.load( project.getRepositoriesPath() ) ); model.setPathToRepositories( project.getRepositoriesPath() ); } private void loadWhiteList() { model.setWhiteList( whiteListService.load( project.getPackageNamesWhiteListPath() ) ); model.setWhiteListMetaData( getMetadata( project.getPackageNamesWhiteListPath() ) ); model.setPathToWhiteList( project.getPackageNamesWhiteListPath() ); } private Metadata getMetadata( final Path path ) { if ( fileExists( path ) ) { return metadataService.getMetadata( path ); } else { return new Metadata(); } } } }