package jetbrains.mps.testbench.junit.runners; /*Generated by MPS */ import jetbrains.mps.tool.environment.ProjectStrategyBase; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; import jetbrains.mps.project.Project; import jetbrains.mps.tool.environment.Environment; import java.io.File; import jetbrains.mps.tool.environment.EnvironmentBase; public class FromProjectPathProjectStrategy extends ProjectStrategyBase { private static final String PROJECT_PATH_PROPERTY = "mps.junit.project"; private final String myProjectPath; public FromProjectPathProjectStrategy(@Nullable String projectPath) { myProjectPath = projectPath; } public FromProjectPathProjectStrategy() { this(System.getProperty(PROJECT_PATH_PROPERTY)); } @NotNull @Override public Project create(@NotNull Environment env) { if (isApplicable()) { Project newProject = openProjectIfNotAlreadyOpened(env); return construct(newProject); } throw new IllegalStateException("Strategy is not applicable -- cannot create project"); } @NotNull private Project openProjectIfNotAlreadyOpened(Environment env) { File projectFile = new File(myProjectPath); Project openedProject = ((EnvironmentBase) env).getOpenedProject(projectFile); if (openedProject == null) { openedProject = env.openProject(projectFile); makeOnFirstTimeOpened(openedProject); } return openedProject; } @NotNull @Override public Project construct(@NotNull Project project) { // do nothing return project; } @Override public boolean isApplicable() { return myProjectPath != null; } }