| /******************************************************************************* |
| * Copyright (c) 2006 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.core.internal.registry; |
| |
| public class RegistryIndexElement implements KeyedElement { |
| |
| // The key on which indexing is done |
| final protected String key; |
| |
| // Extension points matching the key |
| private RegistryIndexChildren extensionPoints; |
| |
| // Extensions matching the key |
| private RegistryIndexChildren extensions; |
| |
| public RegistryIndexElement(String key) { |
| this.key = key; |
| } |
| |
| public RegistryIndexElement(String key, int[] extensionPoints, int[] extensions) { |
| this.key = key; |
| this.extensionPoints = new RegistryIndexChildren(extensionPoints); |
| this.extensions = new RegistryIndexChildren(extensions); |
| } |
| |
| protected int[] getExtensions() { |
| if (extensions == null) |
| return RegistryIndexChildren.EMPTY_ARRAY; |
| return extensions.getChildren(); |
| } |
| |
| protected int[] getExtensionPoints() { |
| if (extensionPoints == null) |
| return RegistryIndexChildren.EMPTY_ARRAY; |
| return extensionPoints.getChildren(); |
| } |
| |
| public boolean updateExtension(int id, boolean add) { |
| if (extensions == null) |
| extensions = new RegistryIndexChildren(); |
| |
| if (add) |
| return extensions.linkChild(id); |
| else |
| return extensions.unlinkChild(id); |
| } |
| |
| public boolean updateExtensions(int[] IDs, boolean add) { |
| if (extensions == null) |
| extensions = new RegistryIndexChildren(); |
| |
| if (add) |
| return extensions.linkChildren(IDs); |
| else |
| return extensions.unlinkChildren(IDs); |
| } |
| |
| public boolean updateExtensionPoint(int id, boolean add) { |
| if (extensionPoints == null) |
| extensionPoints = new RegistryIndexChildren(); |
| |
| if (add) |
| return extensionPoints.linkChild(id); |
| else |
| return extensionPoints.unlinkChild(id); |
| } |
| |
| public boolean updateExtensionPoints(int[] IDs, boolean add) { |
| if (extensionPoints == null) |
| extensionPoints = new RegistryIndexChildren(); |
| |
| if (add) |
| return extensionPoints.linkChildren(IDs); |
| else |
| return extensionPoints.unlinkChildren(IDs); |
| } |
| |
| //Implements the KeyedElement interface |
| public int getKeyHashCode() { |
| return getKey().hashCode(); |
| } |
| |
| public Object getKey() { |
| return key; |
| } |
| |
| public boolean compare(KeyedElement other) { |
| return key.equals(((RegistryIndexElement) other).key); |
| } |
| } |