blob: f957b62ed63bffe6f2e0794ebd760425ac691444 [file] [log] [blame]
package org.jetbrains.jps.android;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.storage.StorageProvider;
import org.jetbrains.jps.incremental.storage.StorageOwner;
import java.io.*;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidPackagingStateStorage implements StorageOwner {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.android.AndroidPackagingStateStorage");
private final File myFile;
private AndroidPackagingStateStorage(@NotNull File file) {
myFile = file;
}
@Override
public void flush(boolean memoryCachesOnly) {
}
@Override
public void clean() throws IOException {
FileUtil.delete(myFile);
}
@Override
public void close() throws IOException {
}
@Nullable
public MyState read() {
try {
final DataInputStream input = new DataInputStream(new FileInputStream(myFile));
try {
final boolean release = input.readBoolean();
return new MyState(release);
}
finally {
input.close();
}
}
catch (FileNotFoundException ignored) {
}
catch (IOException e) {
LOG.info(e);
}
return null;
}
public void saveState(@NotNull MyState state) {
FileUtil.createParentDirs(myFile);
try {
final DataOutputStream output = new DataOutputStream(new FileOutputStream(myFile));
try {
output.writeBoolean(state.myRelease);
}
finally {
output.close();
}
}
catch (IOException e) {
LOG.info(e);
}
}
public static class MyState {
private final boolean myRelease;
public MyState(boolean release) {
myRelease = release;
}
public boolean isRelease() {
return myRelease;
}
}
public static class Provider extends StorageProvider<AndroidPackagingStateStorage> {
public static final Provider INSTANCE = new Provider();
private Provider() {
}
@NotNull
@Override
public AndroidPackagingStateStorage createStorage(File targetDataDir) throws IOException {
return new AndroidPackagingStateStorage(new File(targetDataDir, "android_packaging_options" + File.separator + "data"));
}
}
}