| /******************************************************************************* |
| * Copyright (c) 2016, 2017 xored software, Inc. and others |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * xored software, Inc. - initial API and Implementation (Alex Panchenko) |
| *******************************************************************************/ |
| package org.eclipse.dltk.core.search; |
| |
| import org.eclipse.dltk.core.ISearchPatternProcessor; |
| |
| public abstract class SearchPatternProcessor |
| implements ISearchPatternProcessor { |
| |
| protected static final String TYPE_SEPARATOR_STR = String |
| .valueOf(TYPE_SEPARATOR); |
| |
| private static ISearchPatternProcessor instance = null; |
| |
| public static ISearchPatternProcessor getDefault() { |
| if (instance == null) { |
| instance = new SearchPatternProcessor() { |
| }; |
| } |
| return instance; |
| } |
| |
| protected SearchPatternProcessor() { |
| // |
| } |
| |
| protected static class TypePattern implements ITypePattern { |
| private final String qualification; |
| private final String simpleName; |
| |
| public TypePattern(String qualification, String simpleName) { |
| this.qualification = qualification; |
| this.simpleName = simpleName; |
| } |
| |
| @Override |
| public char[] qualification() { |
| return qualification != null ? qualification.toCharArray() : null; |
| } |
| |
| @Override |
| public String getQualification() { |
| return qualification; |
| } |
| |
| @Override |
| public char[] simpleName() { |
| return simpleName != null ? simpleName.toCharArray() : null; |
| } |
| |
| @Override |
| public String getSimpleName() { |
| return simpleName; |
| } |
| |
| @Override |
| public String toString() { |
| return getClass().getSimpleName() + '(' + qualification + ',' |
| + simpleName + ')'; |
| } |
| } |
| |
| /** |
| * There is a typo in class name, {@link TypePattern} class should be used |
| * instead. |
| */ |
| @Deprecated |
| protected static class TypePatten extends TypePattern { |
| public TypePatten(String qualification, String simpleName) { |
| super(qualification, simpleName); |
| } |
| } |
| |
| @Override |
| public ITypePattern parseType(String patternString) { |
| return new TypePattern(null, patternString); |
| } |
| |
| @Override |
| public String getDelimiterReplacementString() { |
| return "."; |
| } |
| |
| @Override |
| public char[] extractDeclaringTypeQualification(String patternString) { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| |
| @Override |
| public char[] extractDeclaringTypeSimpleName(String patternString) { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| |
| @Override |
| public char[] extractSelector(String patternString) { |
| // TODO Auto-generated method stub |
| return patternString.toCharArray(); |
| } |
| |
| @Override |
| public final char[] extractTypeQualification(String patternString) { |
| return parseType(patternString).qualification(); |
| } |
| |
| @Override |
| @Deprecated |
| public final String extractTypeChars(String patternString) { |
| return parseType(patternString).getSimpleName(); |
| } |
| |
| } |