/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.client.projecttree;
import org.eclipse.che.commons.annotation.Nullable;
import org.eclipse.che.ide.api.resources.Project;
import javax.validation.constraints.NotNull;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static org.eclipse.che.ide.ext.java.shared.Constants.SOURCE_FOLDER;
/**
* @author Vladyslav Zhukovskii
* @author Anatoliy Bazko
*/
public class JavaSourceFolderUtil {
/**
* Returns source folders list of the project.
* Every path in the returned list starts and ends with separator char /.
*/
@NotNull
public static List<String> getSourceFolders(@NotNull Project project) {
String projectBuilder = getProjectBuilder(project.getType());
return doGetSourceFolders(project, projectBuilder);
}
@NotNull
private static List<String> doGetSourceFolders(Project projectConfig, String projectBuilder) {
List<String> allSourceFolders = new LinkedList<>();
String projectPath = removeEndingPathSeparator(projectConfig.getPath());
Map<String, List<String>> attributes = projectConfig.getAttributes();
List<String> sourceFolders = attributes.get(SOURCE_FOLDER);
if (sourceFolders != null) {
for (String sourceFolder : sourceFolders) {
allSourceFolders.add(projectPath + addStartingPathSeparator(sourceFolder) + '/');
}
}
List<String> testSourceFolders = attributes.get(projectBuilder + ".test.source.folder");
if (testSourceFolders != null) {
for (String testSourceFolder : testSourceFolders) {
allSourceFolders.add(projectPath + addStartingPathSeparator(testSourceFolder) + '/');
}
}
return allSourceFolders;
}
private static String removeEndingPathSeparator(String path) {
if (path.endsWith("/")) {
return path.substring(0, path.length() - 1);
}
return path;
}
private static String addStartingPathSeparator(String path) {
if (!path.startsWith("/")) {
return "/" + path;
}
return path;
}
@Nullable
public static String getProjectBuilder(@Nullable String projectType) {
if (projectType == null) {
return null;
}
switch (projectType) {
case "maven":
case "ant":
return projectType;
default:
return null;
}
}
}