/
OptimizerContextStub.java
81 lines (63 loc) · 2.56 KB
/
OptimizerContextStub.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package nl.weeaboo.vn.buildtools.optimizer;
import java.io.File;
import com.google.common.base.Preconditions;
import com.google.common.collect.ClassToInstanceMap;
import com.google.common.collect.MutableClassToInstanceMap;
import nl.weeaboo.vn.buildtools.file.ITempFileProvider;
import nl.weeaboo.vn.buildtools.file.TempFileProvider;
import nl.weeaboo.vn.buildtools.project.NvlistProjectConnection;
import nl.weeaboo.vn.buildtools.project.ProjectFolderConfig;
public final class OptimizerContextStub implements IOptimizerContext {
private final NvlistProjectConnection projectConnection;
private final ITempFileProvider tempFileProvider;
private final IParallelExecutor executor = new ParallelExecutorStub();
private final ClassToInstanceMap<IOptimizerConfig> configStore;
private final OptimizerFileSet fileSet = new OptimizerFileSet();
public OptimizerContextStub(ProjectFolderConfig projectFolders, File outputFolder) {
projectConnection = NvlistProjectConnection.openProject(projectFolders);
File tempFolder = new File(outputFolder, "temp");
tempFolder.mkdirs();
tempFileProvider = new TempFileProvider(tempFolder);
configStore = MutableClassToInstanceMap.create();
MainOptimizerConfig mainConfig = new MainOptimizerConfig(new File(outputFolder, "out"));
configStore.put(MainOptimizerConfig.class, mainConfig);
}
@Override
public void close() {
projectConnection.close();
tempFileProvider.deleteAll();
}
@Override
public IParallelExecutor getExecutor() {
return executor;
}
@Override
public ITempFileProvider getTempFileProvider() {
return tempFileProvider;
}
@Override
public NvlistProjectConnection getProject() {
return projectConnection;
}
@Override
public MainOptimizerConfig getMainConfig() {
MainOptimizerConfig config = configStore.getInstance(MainOptimizerConfig.class);
Preconditions.checkState(config != null); // The ResourceOptimizerConfig should always be available
return config;
}
@Override
public <T extends IOptimizerConfig> T getConfig(Class<T> configClass, T defaultValue) {
T result = configStore.getInstance(configClass);
if (result == null) {
result = defaultValue;
}
return result;
}
public <T extends IOptimizerConfig> void setConfig(Class<T> configClass, T value) {
configStore.put(configClass, value);
}
@Override
public OptimizerFileSet getFileSet() {
return fileSet;
}
}