mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-68349 Create new project: check that project folder is really created, don't show unclear message if it fails
This commit is contained in:
+52
-12
@@ -36,10 +36,7 @@ import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.util.containers.OrderedSet;
|
||||
import com.intellij.util.io.fs.FileSystem;
|
||||
import com.intellij.util.io.fs.IFile;
|
||||
@@ -52,6 +49,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.io.*;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -166,11 +164,15 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
return;
|
||||
}
|
||||
final IFile iFile = FileSystem.FILE_SYSTEM.createFile(filePath);
|
||||
final IFile dir_store =
|
||||
iFile.isDirectory() ? iFile.getChild(Project.DIRECTORY_STORE_FOLDER) : iFile.getParentFile().getChild(Project.DIRECTORY_STORE_FOLDER);
|
||||
|
||||
final StateStorageManager stateStorageManager = getStateStorageManager();
|
||||
if (dir_store.exists() && iFile.isDirectory()) {
|
||||
|
||||
if (!isIprPath(iFile)) {
|
||||
final IFile dir_store =
|
||||
iFile.isDirectory()
|
||||
? iFile.getChild(Project.DIRECTORY_STORE_FOLDER)
|
||||
: iFile.getParentFile().getChild(Project.DIRECTORY_STORE_FOLDER);
|
||||
|
||||
FileBasedStorage.syncRefreshPathRecursively(dir_store.getPath(), null);
|
||||
|
||||
myScheme = StorageScheme.DIRECTORY_BASED;
|
||||
@@ -184,8 +186,7 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
}
|
||||
|
||||
stateStorageManager.addMacro(PROJECT_CONFIG_DIR, dir_store.getPath());
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
myScheme = StorageScheme.DEFAULT;
|
||||
stateStorageManager.addMacro(PROJECT_FILE_MACRO, filePath);
|
||||
|
||||
@@ -198,9 +199,14 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
LocalFileSystem.getInstance().refreshAndFindFileByPath(workspacePath);
|
||||
stateStorageManager.addMacro(WS_FILE_MACRO, workspacePath);
|
||||
}
|
||||
|
||||
|
||||
myCachedLocation = null;
|
||||
}
|
||||
|
||||
private static boolean isIprPath(final IFile file) {
|
||||
return file.exists() && (file.getName().indexOf(".") > 0 && ProjectFileType.DEFAULT_EXTENSION.equals(
|
||||
FileUtil.getExtension(file.getName())));
|
||||
}
|
||||
|
||||
private static void useOldWsContent(final String filePath, final IFile ws) {
|
||||
int lastDot = filePath.lastIndexOf(".");
|
||||
@@ -239,7 +245,7 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
final VirtualFile projectFile = getProjectFile();
|
||||
if (projectFile != null) return myScheme == StorageScheme.DEFAULT ? projectFile.getParent() : projectFile.getParent().getParent();
|
||||
|
||||
//we are not yet initialized completely
|
||||
//we are not yet initialized completely ("open directory", etc)
|
||||
final StateStorage s = getStateStorageManager().getFileStateStorage(PROJECT_FILE_STORAGE);
|
||||
if (!(s instanceof FileBasedStorage)) return null;
|
||||
final FileBasedStorage storage = (FileBasedStorage)s;
|
||||
@@ -512,6 +518,12 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
final List<IFile> filesToSave;
|
||||
try {
|
||||
filesToSave = getAllStorageFilesToSave(true);
|
||||
final Iterator<IFile> iterator = filesToSave.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
if (!iterator.next().exists()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.error(e);
|
||||
@@ -533,7 +545,35 @@ class ProjectStoreImpl extends BaseFileConfigurableStoreImpl implements IProject
|
||||
|
||||
if (virtualFile != null) {
|
||||
virtualFile.refresh(false, false);
|
||||
if (virtualFile.isValid() && !virtualFile.isWritable()) readonlyFiles.add(virtualFile);
|
||||
if (virtualFile.isValid() && !virtualFile.isWritable()) {
|
||||
readonlyFiles.add(virtualFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (readonlyFiles.size() == 0) {
|
||||
final VirtualFile projectBaseDir = getProjectBaseDir();
|
||||
if (projectBaseDir != null && projectBaseDir.isValid()) {
|
||||
if (!projectBaseDir.isWritable()) {
|
||||
readonlyFiles.add(projectBaseDir);
|
||||
}
|
||||
|
||||
final LocalFileSystem instance = LocalFileSystem.getInstance();
|
||||
final VirtualFile ideaDir1 =
|
||||
instance.findFileByIoFile(new File(projectBaseDir.getPath(), Project.DIRECTORY_STORE_FOLDER));
|
||||
if (ideaDir1 != null && ideaDir1.isValid()) {
|
||||
if (!ideaDir1.isWritable()) {
|
||||
readonlyFiles.add(ideaDir1);
|
||||
}
|
||||
} else {
|
||||
final VirtualFile ideaDir2 =
|
||||
instance.findFileByIoFile(new File(new File(projectBaseDir.getPath()).getParent(), Project.DIRECTORY_STORE_FOLDER));
|
||||
if (ideaDir2 != null && ideaDir2.isValid()) {
|
||||
if (!ideaDir2.isWritable()) {
|
||||
readonlyFiles.add(ideaDir2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user