/******************************************************************************* * Copyright (c) 2012-2015 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.api.project.shared.dto.BuildersDescriptor; import org.eclipse.che.api.project.shared.dto.ItemReference; import org.eclipse.che.api.project.shared.dto.ProjectDescriptor; import org.eclipse.che.ide.api.project.tree.TreeNode; import org.eclipse.che.ide.api.project.tree.generic.ProjectNode; import java.util.LinkedList; import java.util.List; import java.util.Map; /** @author Vladyslav Zhukovskii */ public class JavaSourceFolderUtil { /** Tests if the specified item is a source folder. */ public static boolean isSourceFolder(ItemReference item, ProjectNode projectNode) { if ("folder".equals(item.getType())) { ProjectDescriptor projectDescriptor = projectNode.getData(); BuildersDescriptor builders = projectDescriptor.getBuilders(); Map<String, List<String>> attributes = projectDescriptor.getAttributes(); if (builders != null) { boolean isSrcDir = false; boolean isTestDir = false; if (attributes.containsKey(builders.getDefault() + ".source.folder")) { isSrcDir = (projectDescriptor.getPath() + "/" + attributes.get(builders.getDefault() + ".source.folder").get(0)).equals(item.getPath()); } if (attributes.containsKey(builders.getDefault() + ".test.source.folder")) { isTestDir = (projectDescriptor.getPath() + "/" + attributes.get(builders.getDefault() + ".test.source.folder").get(0)).equals(item.getPath()); } return isSrcDir || isTestDir; } } return false; } /** * Returns source folders list of the project to which the specified node belongs. * Every path in the returned list starts and ends with separator char /. */ public static List<String> getSourceFolders(TreeNode<?> node) { final ProjectNode project = node.getProject(); Map<String, List<String>> attributes = project.getData().getAttributes(); final String builderName = project.getData().getBuilders().getDefault(); List<String> mySourceFolders = new LinkedList<>(); List<String> sourceFolders = attributes.get(builderName + ".source.folder"); if (sourceFolders != null) { for (String sourceFolder : sourceFolders) { mySourceFolders.add(project.getPath() + '/' + sourceFolder + '/'); } } List<String> testSourceFolders = attributes.get(builderName + ".test.source.folder"); if (testSourceFolders != null) { for (String testSourceFolder : testSourceFolders) { mySourceFolders.add(project.getPath() + '/' + testSourceFolder + '/'); } } return mySourceFolders; } }