package com.kodokux.github;
import com.intellij.openapi.components.StoragePathMacros;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.fileTypes.FileTypes;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.PsiManager;
import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
/**
* Created with IntelliJ IDEA.
* User: johna
* Date: 13/05/08
* Time: 18:52
* To change this template use File | Settings | File Templates.
*/
public class GithubGetGistCache {
private static final Logger LOG = Logger.getLogger("Cache");
private static GithubGetGistCache instance;
private static String CONFIG_DIR = StoragePathMacros.PROJECT_CONFIG_DIR + "/getgist";
// final Project project;
public GithubGetGistCache(Project project) {
// this.project = project;
// VirtualFile directory = LocalFileSystem.getInstance().findFileByIoFile(new File(CONFIG_DIR));
// if(directory == null){
// try {
// directory = VfsUtil.createDirectories(CONFIG_DIR);
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
}
static public PsiDirectory getCacheDir(Project project) {
File dirName = new File(project.getBasePath(), ".idea/gits");
VirtualFile directory = LocalFileSystem.getInstance().findFileByIoFile(new File(project.getBasePath(), ".idea/gits"));
if (directory == null) {
try {
LOG.info("dir is null" + dirName.getPath());
directory = VfsUtil.createDirectories(dirName.getPath());
} catch (IOException e) {
e.printStackTrace();
}
}
PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(directory);
return psiDirectory;
}
static public PsiFile setCache(Project project, String fileName, Object data) {
final PsiDirectory psiDirectory = getCacheDir(project);
FileType fileType = FileTypeManager.getInstance().getFileTypeByFileName(fileName);
if (fileType == FileTypes.UNKNOWN) {
fileType = FileTypeManager.getInstance().getFileTypeByFileName("*.txt");
}
final PsiFile file = psiDirectory.findFile(fileName);
if (file != null) {
// ApplicationManager.getApplication().runWriteAction(new Runnable() {
// @Override
// public void run() {
file.delete();
// }
// });
}
final PsiFile psiFile = PsiFileFactory.getInstance(project).createFileFromText(fileName, fileType, data.toString());
// ApplicationManager.getApplication().runWriteAction(new Runnable() {
// @Override
// public void run() {
psiDirectory.add(psiFile);
// }
// });
return psiFile;
}
static public PsiFile getCache(Project project, String key) {
final PsiDirectory psiDirectory = getCacheDir(project);
return ((psiDirectory.findFile(key) == null) ? null : psiDirectory.findFile(key));
}
}