/* * Copyright 2017 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.launch; import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Lists.newArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; import com.google.common.base.CaseFormat; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Lists; public class RobotSuitesNaming { public static String createSuiteName(final IResource suite) { return createSuiteName(suite.getProject(), suite.getProjectRelativePath()); } public static String createSuiteName(final IProject project, final IPath path) { final String actualProjectName = project.getLocation().lastSegment(); final List<String> upperCased = newArrayList(toRobotFrameworkName(actualProjectName)); upperCased .addAll(Lists.transform(Arrays.asList(path.removeFileExtension().segments()), toRobotFrameworkName())); return Joiner.on('.').join(upperCased); } private static Function<String, String> toRobotFrameworkName() { return new Function<String, String>() { @Override public String apply(final String name) { return toRobotFrameworkName(name); } }; } private static String toRobotFrameworkName(final String name) { // converts suite/test name to name used by RF String resultName = name; final int prefixIndex = resultName.indexOf("__"); if (prefixIndex != -1) { resultName = resultName.substring(prefixIndex + 2); } final List<String> splittedNames = Splitter.on(' ').splitToList(resultName); final Iterable<String> titled = transform(splittedNames, new Function<String, String>() { @Override public String apply(final String name) { return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, name); } }); return Joiner.on(' ').join(titled); } }