package org.netbeans.gradle.project.model; import java.io.IOException; import java.nio.file.Path; import org.jtrim.utils.ExceptionHelper; import org.netbeans.gradle.project.util.NbFileUtils; public final class PersistentModelKey { private final Path rootPath; private final Path projectDir; public PersistentModelKey(NbGradleModel model) { this(model.getSettingsDir(), model.getProjectDir().toPath()); } public PersistentModelKey(Path rootPath, Path projectDir) { ExceptionHelper.checkNotNullArgument(rootPath, "rootPath"); ExceptionHelper.checkNotNullArgument(projectDir, "projectDir"); this.rootPath = rootPath; this.projectDir = projectDir; } public Path getRootPath() { return rootPath; } public Path getProjectDir() { return projectDir; } public PersistentModelKey normalize() throws IOException { Path newRootPath = NbFileUtils.toSafeRealPath(rootPath); Path newProjectDir = NbFileUtils.toSafeRealPath(projectDir); if (rootPath.equals(newRootPath) && projectDir.equals(newProjectDir)) { return this; } else { return new PersistentModelKey(newRootPath, newProjectDir); } } @Override public String toString() { return "PersistentModelKey{" + "rootPath=" + rootPath + ", projectDir=" + projectDir + '}'; } }