summaryrefslogtreecommitdiff
path: root/android/ultimate
diff options
context:
space:
mode:
authorGregory.Shrago <gregory.shrago@jetbrains.com>2014-05-15 23:42:33 +0400
committerGregory.Shrago <gregory.shrago@jetbrains.com>2014-05-16 01:09:50 +0400
commit078afed03e4ff8807afa0e38c7883b18cccb16fb (patch)
treed14354f4952b39a272eaf693abacce7356764443 /android/ultimate
parentd0cd7483a6722790f36cd2962d7069a5dd587cbb (diff)
downloadidea-078afed03e4ff8807afa0e38c7883b18cccb16fb.tar.gz
drop DbProjectElement as it does not really support DbElement contract: IDEA-125072
Diffstat (limited to 'android/ultimate')
-rw-r--r--android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java60
1 files changed, 13 insertions, 47 deletions
diff --git a/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java b/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java
index ba53e2311ba..3ec0383250b 100644
--- a/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java
+++ b/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java
@@ -10,7 +10,6 @@ import com.intellij.openapi.command.undo.UndoableAction;
import com.intellij.openapi.command.undo.UnexpectedUndoException;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.ModificationTracker;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
@@ -19,47 +18,29 @@ import com.intellij.persistence.database.DataSourceInfo;
import com.intellij.persistence.database.DataSourceTemplate;
import com.intellij.persistence.database.dialects.DatabaseDialect;
import com.intellij.persistence.database.dialects.SqliteDialect;
-import com.intellij.persistence.database.psi.*;
-import gnu.trove.THashMap;
+import com.intellij.persistence.database.psi.BasicDbPsiManager;
+import com.intellij.persistence.database.psi.DbDataSourceElement;
+import com.intellij.persistence.database.psi.DbElement;
+import com.intellij.persistence.database.psi.DbPsiFacade;
import icons.AndroidIcons;
import org.jetbrains.android.facet.AndroidFacet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
-public class AndroidDbManager extends DbPsiManagerSpi {
+public class AndroidDbManager extends BasicDbPsiManager<AndroidDataSource> {
public static final String NOTIFICATION_GROUP_ID = "Android Data Source Manager";
static final DataSourceTemplate DEFAULT_TEMPLATE = new AndroidDataSourceTemplate();
- private final static Key<Map<AndroidDataSource, DbDataSourceElement>> DS_MAP_KEY = Key.create("ANDROID_DATASOURCE_MAP_KEY");
-
- private final DbPsiFacade myDbFacade;
-
public AndroidDbManager(@NotNull DbPsiFacade dbFacade) {
- myDbFacade = dbFacade;
- initElementMap(myDbFacade, this);
- }
-
- private static Map<AndroidDataSource, DbDataSourceElement> getElementsMap(final DbPsiFacade facade) {
- return facade.getProjectElement().getUserData(DS_MAP_KEY);
- }
-
- private static void initElementMap(final DbPsiFacade facade, final AndroidDbManager manager) {
- final THashMap<AndroidDataSource, DbDataSourceElement> map = new THashMap<AndroidDataSource, DbDataSourceElement>();
- for (final AndroidDataSource source : AndroidDataSourceStorage.getInstance(facade.getProject()).getDataSources()) {
- map.put(source, createDataSourceElement(facade, manager, source));
- }
- facade.getProjectElement().putUserData(DS_MAP_KEY, Collections.synchronizedMap(map));
- }
-
- @Override
- public boolean isDataSourceElementValid(@NotNull DbDataSourceElement element) {
- return getElementsMap(myDbFacade).containsKey((AndroidDataSource)element.getDelegate());
+ super(dbFacade, AndroidDataSourceStorage.getInstance(dbFacade.getProject()).getDataSources());
}
@Nullable
@@ -83,11 +64,6 @@ public class AndroidDbManager extends DbPsiManagerSpi {
}
@Override
- public List<DbDataSourceElement> getDataSources() {
- return new ArrayList<DbDataSourceElement>(getElementsMap(myDbFacade).values());
- }
-
- @Override
public void removeDataSource(DbDataSourceElement element) {
if (!(element.getDelegate() instanceof AndroidDataSource)) throw new UnsupportedOperationException();
final AndroidDataSource dataSource = (AndroidDataSource)element.getDelegate();
@@ -151,20 +127,16 @@ public class AndroidDbManager extends DbPsiManagerSpi {
}
private void removeDataSourceInner(final Project project, final AndroidDataSource dataSource) {
- final DbPsiFacade facade = DbPsiFacade.getInstance(project);
- final Map<AndroidDataSource, DbDataSourceElement> elementMap = getElementsMap(facade);
- final AndroidDataSourceStorage storage = AndroidDataSourceStorage.getInstance(project);
+ AndroidDataSourceStorage storage = AndroidDataSourceStorage.getInstance(project);
storage.removeDataSource(dataSource);
- elementMap.remove(dataSource);
+ getElementsMap().remove(dataSource);
clearCaches(null);
}
private void addDataSourceInner(final Project project, final AndroidDataSource dataSource) {
- final DbPsiFacade facade = DbPsiFacade.getInstance(project);
- final Map<AndroidDataSource, DbDataSourceElement> elementMap = getElementsMap(facade);
- final AndroidDataSourceStorage storage = AndroidDataSourceStorage.getInstance(project);
+ AndroidDataSourceStorage storage = AndroidDataSourceStorage.getInstance(project);
storage.addDataSource(dataSource);
- elementMap.put(dataSource, createDataSourceElement(facade, this, dataSource));
+ getElementsMap().put(dataSource, createDataSourceElement(dataSource));
clearCaches(null);
}
@@ -172,12 +144,6 @@ public class AndroidDbManager extends DbPsiManagerSpi {
myDbFacade.clearCaches(info != null ? myDbFacade.findDataSource(info.getUniqueId()) : null);
}
- private static DbDataSourceElement createDataSourceElement(final DbPsiFacade facade,
- final AndroidDbManager manager,
- final AndroidDataSource source) {
- return ((DbPsiFacadeImpl)facade).createDataSourceWrapperElement(source, manager);
- }
-
@Override
public boolean canCreateDataSourceByFiles(Collection<VirtualFile> files) {
return false;