package jetbrains.mps.vcs.util; /*Generated by MPS */ import java.io.File; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SModelName; import java.io.IOException; import jetbrains.mps.project.MPSExtentions; import jetbrains.mps.util.FileUtil; import org.jetbrains.annotations.NotNull; import java.text.SimpleDateFormat; import java.util.Date; public class MergeDriverBackupUtil { private static String backupDirPath; public MergeDriverBackupUtil() { // Used in MergeProviderDecorator } public static File zipModel(byte[][] contents, @Nullable SModelName modelName) throws IOException { String shortFileName = "unknown.mps"; if (modelName != null) { shortFileName = modelName.getSimpleName() + MPSExtentions.DOT_MODEL; } File tmp = FileUtil.createTmpDir(); writeContentsToFile(contents[MergeConstants.ORIGINAL], shortFileName, tmp, MergeVersion.BASE.getSuffix()); writeContentsToFile(contents[MergeConstants.CURRENT], shortFileName, tmp, MergeVersion.MINE.getSuffix()); writeContentsToFile(contents[MergeConstants.LAST_REVISION], shortFileName, tmp, MergeVersion.REPOSITORY.getSuffix()); File zipfile = chooseZipFileForModelLongName("unknown.mps", modelName); zipfile.getParentFile().mkdirs(); FileUtil.zip(tmp, zipfile); FileUtil.delete(tmp); return zipfile; } public static void writeContentsToFile(byte[] contents, String name, File tmpDir, String suffix) throws IOException { File file = new File(tmpDir.getAbsolutePath() + File.separator + name + "." + suffix); FileUtil.write(file, contents); } public static File chooseZipFileForModelLongName(@NotNull String defaultFileName, @Nullable SModelName modelName) { String fileName = defaultFileName; if (modelName != null) { fileName = modelName.getLongName() + MPSExtentions.DOT_MODEL; } String prefix = getMergeBackupDirPath() + File.separator + fileName; prefix = prefix + "." + new SimpleDateFormat("yyyy-MM-dd_HH-mm").format(new Date()); File zipfile = new File(prefix + ".zip"); int i = 0; while (zipfile.exists()) { zipfile = new File(prefix + "." + i + ".zip"); i++; } return zipfile; } public static String getMergeBackupDirPath() { return backupDirPath; } public static void setMergeBackupDirPath(String path) { backupDirPath = path; } }