| /******************************************************************************* |
| * Copyright (c) 2004, 2008 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.wst.xml.core.internal.search; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.wst.common.core.search.SearchParticipant; |
| import org.eclipse.wst.common.core.search.pattern.ComponentSearchPattern; |
| import org.eclipse.wst.common.core.search.pattern.QualifiedName; |
| |
| /** |
| * XML component search pattern is a composite pattern that combines XML element pattern. |
| * |
| */ |
| public class XMLComponentSearchPattern extends ComponentSearchPattern { |
| |
| /** |
| * Containing element patterns |
| * @deprecated |
| */ |
| XMLSearchPattern[] children = new XMLSearchPattern[0]; |
| |
| /** |
| * A map of XMLSearchPattern[] by {@link SearchParticipant search participant}. |
| */ |
| protected Map childPatternsByParticipant = new HashMap(); |
| |
| public XMLComponentSearchPattern(IFile file, QualifiedName elementQName, QualifiedName typeQName, int matchRule) { |
| super(file, elementQName, typeQName, matchRule); |
| |
| } |
| |
| |
| public XMLComponentSearchPattern(IFile file, QualifiedName elementQName, QualifiedName typeQName) { |
| super(file, elementQName, typeQName); |
| |
| } |
| |
| /** |
| * @deprecated Use {@link #getChildren(SearchParticipant)} instead. |
| */ |
| public XMLSearchPattern[] getChildren(){ |
| return children; |
| } |
| |
| /** |
| * @deprecated Use {@link #addChildren(SearchParticipant, XMLSearchPattern[])} instead. |
| */ |
| public void setChildren(XMLSearchPattern[] patterns){ |
| children = patterns; |
| |
| } |
| |
| /** |
| * Provides the child patterns contributed by the given search participant. |
| * @param searchParticipant the {@link SearchParticipant search participant} that contributed the patterns. |
| * @see XMLComponentSearchPattern#addChildren(SearchParticipant, XMLSearchPattern[]) addChildren |
| * @return an array with the {@link XMLSearchPattern patterns} contributed by the {@link SearchParticipant search participant}. |
| */ |
| public XMLSearchPattern[] getChildren(SearchParticipant searchParticipant){ |
| XMLSearchPattern[] childPatterns = getChildren(); |
| if (searchParticipant != null){ |
| childPatterns = (XMLSearchPattern[])childPatternsByParticipant.get(searchParticipant); |
| if (childPatterns == null){ |
| childPatterns = getChildren(); |
| } |
| } |
| return childPatterns; |
| } |
| |
| /** |
| * Saves the child patterns contributed by the given search participant. |
| * @param searchParticipant the {@link SearchParticipant search participant} that is contributing the child search patterns. |
| * @param childPatterns the child patterns contributed by the {@link SearchParticipant searchParticipant search participant}. |
| * @see XMLComponentSearchPattern#getChildren(SearchParticipant) getChildren |
| */ |
| public void addChildren(SearchParticipant searchParticipant, XMLSearchPattern[] childPatterns){ |
| if (searchParticipant != null && childPatterns != null) { |
| childPatternsByParticipant.put(searchParticipant, childPatterns); |
| } |
| else { |
| children = childPatterns; |
| } |
| } |
| } |