blob: 7875fec70aad16fe5db7b279b557ce562286ab00 [file] [log] [blame]
package org.jetbrains.android.database;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.Project;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.xmlb.annotations.AbstractCollection;
import com.intellij.util.xmlb.annotations.Tag;
import java.util.ArrayList;
import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
@State(
name = "AndroidDataSourceStorage",
storages = {
@Storage(file = StoragePathMacros.WORKSPACE_FILE)
})
public class AndroidDataSourceStorage implements PersistentStateComponent<AndroidDataSourceStorage.State> {
private final List<AndroidDataSource> myDataSources = ContainerUtil.createLockFreeCopyOnWriteList();
public static AndroidDataSourceStorage getInstance(Project project) {
return ServiceManager.getService(project, AndroidDataSourceStorage.class);
}
public State getState() {
State state = new State();
for (AndroidDataSource dataSource : myDataSources) {
state.myDataSources.add(dataSource.buildFullState());
}
return state;
}
public void loadState(State state) {
myDataSources.clear();
for (AndroidDataSource.State dataSourceState : state.myDataSources) {
AndroidDataSource dataSource = new AndroidDataSource();
dataSource.loadState(dataSourceState);
addDataSource(dataSource);
}
}
public List<AndroidDataSource> getDataSources() {
return new ArrayList<AndroidDataSource>(myDataSources);
}
public void removeDataSource(AndroidDataSource dataSource) {
myDataSources.remove(dataSource);
}
public void addDataSource(AndroidDataSource dataSource) {
dataSource.init();
myDataSources.add(dataSource);
}
public static class State {
@Tag("data-sources")
@AbstractCollection(surroundWithTag = false)
public List<AndroidDataSource.State> myDataSources = new ArrayList<AndroidDataSource.State>();
}
}