blob: 17d77f098e2f04fad15a3ecf4ffdf99cd5d04fac [file] [log] [blame]
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";
}
}