package org.netbeans.gradle.project; import java.io.File; import java.nio.file.Path; import org.jtrim.utils.ExceptionHelper; import org.netbeans.gradle.project.properties.WeakValueHashMap; import org.netbeans.gradle.project.util.NbConsumer; import org.netbeans.gradle.project.util.NbFileUtils; public final class LoadedProjectManager { private static final LoadedProjectManager DEFAULT = new LoadedProjectManager(); private final WeakValueHashMap<Path, NbGradleProject> projects; public LoadedProjectManager() { this.projects = new WeakValueHashMap<>(); } public static LoadedProjectManager getDefault() { return DEFAULT; } public void addProject(NbGradleProject project) { Path projectDir = project.getProjectDirectoryAsPath(); projects.put(projectDir, project); } public void forProjects(NbConsumer<? super NbGradleProject> action) { ExceptionHelper.checkNotNullArgument(action, "action"); for (NbGradleProject project: projects.values()) { action.accept(project); } } public NbGradleProject tryGetLoadedProject(File projectDir) { ExceptionHelper.checkNotNullArgument(projectDir, "projectDir"); Path path = NbFileUtils.asPath(projectDir); if (path == null) { return null; } return tryGetLoadedProject(path); } public NbGradleProject tryGetLoadedProject(Path projectDir) { ExceptionHelper.checkNotNullArgument(projectDir, "projectDir"); return projects.get(projectDir); } }