| package org.jetbrains.android.database; |
| |
| import com.intellij.database.autoconfig.DataSourceConfigUtil; |
| import com.intellij.facet.ProjectFacetManager; |
| import com.intellij.openapi.components.AbstractProjectComponent; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.openapi.util.io.FileUtil; |
| import com.intellij.util.containers.HashSet; |
| import org.jetbrains.android.facet.AndroidFacet; |
| import org.jetbrains.annotations.NotNull; |
| |
| import java.util.Set; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class AndroidDataSourceProjectComponent extends AbstractProjectComponent { |
| |
| |
| public AndroidDataSourceProjectComponent(@NotNull Project project) { |
| super(project); |
| } |
| |
| @Override |
| public void projectOpened() { |
| DataSourceConfigUtil.refreshTablesInBackground(myProject, AndroidDataSourceStorage.getInstance(myProject).getDataSources()); |
| } |
| |
| @Override |
| public void projectClosed() { |
| if (!ProjectFacetManager.getInstance(myProject).hasFacets(AndroidFacet.ID)) { |
| return; |
| } |
| final String basePath = FileUtil.toCanonicalPath(myProject.getBasePath()); |
| |
| if (basePath != null) { |
| final Set<AndroidRemoteDbInfo> infos = collectAllUsedDatabases(); |
| AndroidRemoteDataBaseManager.getInstance().updateDbUsagesForProject(basePath, infos); |
| } |
| } |
| |
| @NotNull |
| private Set<AndroidRemoteDbInfo> collectAllUsedDatabases() { |
| final Set<AndroidRemoteDbInfo> result = new HashSet<AndroidRemoteDbInfo>(); |
| |
| for (AndroidDataSource source : AndroidDataSourceStorage.getInstance(myProject).getDataSources()) { |
| final AndroidDataSource.State s = source.getState(); |
| String deviceId = s.deviceId; |
| |
| if (deviceId == null) { |
| deviceId = ""; |
| } |
| result.add(new AndroidRemoteDbInfo(deviceId, s.packageName, s.databaseName, s.external)); |
| } |
| return result; |
| } |
| |
| |
| @NotNull |
| @Override |
| public String getComponentName() { |
| return "AndroidDataSourceProjectComponent"; |
| } |
| } |