| package org.jetbrains.jps.android; |
| |
| import com.intellij.util.io.DataExternalizer; |
| import com.intellij.util.io.EnumeratorStringDescriptor; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.jps.builders.storage.StorageProvider; |
| import org.jetbrains.jps.incremental.storage.AbstractStateStorage; |
| |
| import java.io.DataInput; |
| import java.io.DataOutput; |
| import java.io.File; |
| import java.io.IOException; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class AndroidApkBuilderConfigStateStorage extends AbstractStateStorage<String, AndroidApkBuilderConfigState> { |
| private AndroidApkBuilderConfigStateStorage(@NotNull File dataStorageRoot, @NotNull String storageName) throws IOException { |
| super(AndroidJpsUtil.getStorageFile(dataStorageRoot, storageName), new EnumeratorStringDescriptor(), new MyDataExternalizer()); |
| } |
| |
| private static class MyDataExternalizer implements DataExternalizer<AndroidApkBuilderConfigState> { |
| |
| @Override |
| public void save(@NotNull DataOutput out, AndroidApkBuilderConfigState value) throws IOException { |
| value.save(out); |
| } |
| |
| @Override |
| public AndroidApkBuilderConfigState read(@NotNull DataInput in) throws IOException { |
| return new AndroidApkBuilderConfigState(in); |
| } |
| } |
| |
| public static class Provider extends StorageProvider<AndroidApkBuilderConfigStateStorage> { |
| |
| private final String myStorageName; |
| |
| public Provider(@NotNull String storageName) { |
| myStorageName = storageName; |
| } |
| |
| @NotNull |
| @Override |
| public AndroidApkBuilderConfigStateStorage createStorage(File targetDataDir) throws IOException { |
| return new AndroidApkBuilderConfigStateStorage(targetDataDir, myStorageName); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| Provider provider = (Provider)o; |
| |
| if (!myStorageName.equals(provider.myStorageName)) return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| return myStorageName.hashCode(); |
| } |
| } |
| } |