summaryrefslogtreecommitdiff
path: root/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java')
-rw-r--r--platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java79
1 files changed, 0 insertions, 79 deletions
diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
deleted file mode 100644
index a6b957c0c508..000000000000
--- a/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2000-2009 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.ide.plugins;
-
-import com.intellij.openapi.extensions.PluginId;
-import com.intellij.util.containers.HashMap;
-import gnu.trove.TObjectIntHashMap;
-
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Stack;
-
-/**
- * @author Eugene Zhuravlev
- * Date: Aug 3, 2004
- */
-public class PluginDescriptorComparator implements Comparator<IdeaPluginDescriptor>{
- private final TObjectIntHashMap<PluginId> myIdToNumberMap = new TObjectIntHashMap<PluginId>();
- private int myAvailableNumber = 1;
-
- public PluginDescriptorComparator(IdeaPluginDescriptor[] descriptors){
- final Map<PluginId, IdeaPluginDescriptor> idToDescriptorMap = new HashMap<PluginId, IdeaPluginDescriptor>();
- for (final IdeaPluginDescriptor descriptor : descriptors) {
- idToDescriptorMap.put(descriptor.getPluginId(), descriptor);
- }
- myIdToNumberMap.put(PluginId.getId(PluginManagerCore.CORE_PLUGIN_ID), 0);
-
- final Stack<PluginId> visited = new Stack<PluginId>();
- for (int idx = 0; idx < descriptors.length && myIdToNumberMap.size() != descriptors.length; idx++) {
- assignNumbers(descriptors[idx].getPluginId(), idToDescriptorMap, visited);
- visited.clear();
- }
- }
-
- private void assignNumbers(PluginId id, Map<PluginId, IdeaPluginDescriptor> idToDescriptorMap, Stack<PluginId> visited){
- visited.push(id);
- try {
- final IdeaPluginDescriptor ideaPluginDescriptor = idToDescriptorMap.get(id);
- if (ideaPluginDescriptor == null || !ideaPluginDescriptor.isEnabled()) {
- // missing optional dependency or already disabled due to cycles
- return;
- }
- final PluginId[] parentIds = ideaPluginDescriptor.getDependentPluginIds();
- for (final PluginId parentId : parentIds) {
- if (visited.contains(parentId)) {
- //disable plugins in the cycle
- ideaPluginDescriptor.setEnabled(false);
- break;
- }
- }
- for (PluginId parentId1 : parentIds) {
- assignNumbers(parentId1, idToDescriptorMap, visited);
- }
- if (!myIdToNumberMap.contains(id)) {
- myIdToNumberMap.put(id, myAvailableNumber++);
- }
- }
- finally {
- visited.pop();
- }
- }
-
- public int compare(IdeaPluginDescriptor d1, IdeaPluginDescriptor d2) {
- return myIdToNumberMap.get(d1.getPluginId()) - myIdToNumberMap.get(d2.getPluginId());
- }
-}