From cc12e7c7d960a2bcca8146493c55ca8219a36dda Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Thu, 15 May 2014 23:42:33 +0400 Subject: drop DbProjectElement as it does not really support DbElement contract: IDEA-125072 --- .../android/database/AndroidDbManager.java | 60 +++++----------------- 1 file changed, 13 insertions(+), 47 deletions(-) (limited to 'android/ultimate') diff --git a/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java b/android/ultimate/src/org/jetbrains/android/database/AndroidDbManager.java index bacf4a014c1..72469b7006c 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 { public static final String NOTIFICATION_GROUP_ID = "Android Data Source Manager"; static final DataSourceTemplate DEFAULT_TEMPLATE = new AndroidDataSourceTemplate(); - private final static Key> 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 getElementsMap(final DbPsiFacade facade) { - return facade.getProjectElement().getUserData(DS_MAP_KEY); - } - - private static void initElementMap(final DbPsiFacade facade, final AndroidDbManager manager) { - final THashMap map = new THashMap(); - 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 @@ -82,11 +63,6 @@ public class AndroidDbManager extends DbPsiManagerSpi { return (AndroidDataSource)element.getDataSource().getDelegate(); } - @Override - public List getDataSources() { - return new ArrayList(getElementsMap(myDbFacade).values()); - } - @Override public void removeDataSource(DbDataSourceElement element) { if (!(element.getDelegate() instanceof AndroidDataSource)) throw new UnsupportedOperationException(); @@ -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 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 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 files) { return false; -- cgit v1.2.3