| package com.intellij.util.io; |
| |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author nik |
| */ |
| public class TestFileSystemBuilder { |
| private final TestFileSystemItem myItem; |
| private final TestFileSystemBuilder myParent; |
| |
| private TestFileSystemBuilder(TestFileSystemItem item, TestFileSystemBuilder parent) { |
| myItem = item; |
| myParent = parent; |
| } |
| |
| @NotNull |
| public TestFileSystemItem build() { |
| TestFileSystemBuilder builder = this; |
| while (builder.myParent != null) { |
| builder = builder.myParent; |
| } |
| return builder.myItem; |
| } |
| |
| @NotNull |
| public TestFileSystemBuilder dir(String name) { |
| final TestFileSystemItem item = new TestFileSystemItem(name, false, true); |
| myItem.addChild(item); |
| return new TestFileSystemBuilder(item, this); |
| } |
| |
| @NotNull |
| public TestFileSystemBuilder archive(String name) { |
| final TestFileSystemItem item = new TestFileSystemItem(name, true, false); |
| myItem.addChild(item); |
| return new TestFileSystemBuilder(item, this); |
| } |
| |
| @NotNull |
| public TestFileSystemBuilder file(String name) { |
| myItem.addChild(new TestFileSystemItem(name, false, false)); |
| return this; |
| } |
| |
| @NotNull |
| public TestFileSystemBuilder file(String name, String content) { |
| myItem.addChild(new TestFileSystemItem(name, false, false, content)); |
| return this; |
| } |
| |
| public TestFileSystemBuilder end() { |
| return myParent; |
| } |
| |
| @NotNull |
| public static TestFileSystemBuilder fs() { |
| return new TestFileSystemBuilder(new TestFileSystemItem("root", false, true), null); |
| } |
| } |