public ImportNormalizer(QualifiedName importedNamespace, boolean wildCard, boolean ignoreCase) { this.ignoreCase = ignoreCase; if (importedNamespace == null || importedNamespace.getSegmentCount() < 1) { throw new IllegalArgumentException("Imported namespace must not be null / empty"); } hasWildCard = wildCard; this.importedNamespacePrefix = importedNamespace; }
public QualifiedName skipFirst(int skipCount) { if (skipCount == getSegmentCount()) { return EMPTY; } if (skipCount > getSegmentCount() || skipCount < 0) { throw new IllegalArgumentException("Cannot skip " + skipCount + " fragments from QualifiedName with " + getSegmentCount() + " segments"); } String[] newSegments = new String[segments.length - skipCount]; System.arraycopy(segments, skipCount, newSegments, 0, newSegments.length); return new QualifiedName(newSegments); }
public QualifiedName skipLast(int skipCount) { if (skipCount == getSegmentCount()) { return EMPTY; } if (skipCount > getSegmentCount() || skipCount < 0) { throw new IllegalArgumentException("Cannot skip " + skipCount + " fragments from QualifiedName with " + getSegmentCount() + " segments"); } String[] newSegments = new String[segments.length - skipCount]; System.arraycopy(segments, 0, newSegments, 0, newSegments.length); return new QualifiedName(newSegments); }
public QualifiedName toUpperCase() { String[] newSegments = new String[getSegmentCount()]; for (int i = 0; i < getSegmentCount(); ++i) newSegments[i] = segments[i].toUpperCase(); return new QualifiedName(newSegments); }
public QualifiedName append(QualifiedName relativeQualifiedName) { String[] newSegments = new String[getSegmentCount() + relativeQualifiedName.getSegmentCount()]; for (int i = 0; i < getSegmentCount(); ++i) newSegments[i] = getSegment(i); for (int i = 0; i < relativeQualifiedName.getSegmentCount(); ++i) newSegments[i + getSegmentCount()] = relativeQualifiedName.getSegment(i); return new QualifiedName(newSegments); }
@Override protected Iterable<IEObjectDescription> getLocalElementsByName(QualifiedName name) { if (name.getSegmentCount() > 1) return Collections.emptyList(); return super.getLocalElementsByName(name); } };
public QualifiedName append(String segment) { if (segment == null) { throw new IllegalArgumentException("Segment cannot be null"); } String[] newSegments = new String[getSegmentCount() + 1]; System.arraycopy(segments, 0, newSegments, 0, segments.length); newSegments[segments.length] = segment; return new QualifiedName(newSegments); }
protected int compareTo(QualifiedName qualifiedName, boolean ignoreCase) { for (int i = 0; i < Math.min(getSegmentCount(), qualifiedName.getSegmentCount()); ++i) { int result = (ignoreCase) ? getSegment(i).compareToIgnoreCase(qualifiedName.getSegment(i)) : getSegment(i) .compareTo(qualifiedName.getSegment(i)); if (result != 0) return result; } return getSegmentCount() - qualifiedName.getSegmentCount(); }
protected boolean startsWith(QualifiedName prefix, boolean ignoreCase) { if (prefix.getSegmentCount() > getSegmentCount()) return false; for (int i = 0; i < prefix.getSegmentCount(); ++i) { if ((ignoreCase && !this.getSegment(i).equalsIgnoreCase(prefix.getSegment(i))) || (!ignoreCase && !this.getSegment(i).equals(prefix.getSegment(i)))) return false; } return true; }
@Override protected IEObjectDescription toDescription(QualifiedName name, JvmType result, int dollarIndex, int index) { if (result != null) { JvmType actualResult = dollarIndex > 0 || name.getSegmentCount() > 0 ? findNestedType(result, index, name) : result; if (actualResult != null) { return EObjectDescription.create(name, actualResult); } } return null; }
protected boolean importedNamespaceHasDollar() { if (!hasWildCard()) // don't care return true; QualifiedName importedNamespace = getImportedNamespacePrefix(); int segmentCount = importedNamespace.getSegmentCount(); for(int i = 0; i < segmentCount; i++) { if (importedNamespace.getSegment(i).indexOf('$') != -1) { return false; } } return true; }
public static ImportNormalizer createNestedTypeAwareImportNormalizer(QualifiedName importedNamespace, boolean wildcard, boolean ignoreCase) { for(int i = 0; i < importedNamespace.getSegmentCount(); i++) { if (importedNamespace.getSegment(i).indexOf('$') >= 0) { return new NestedTypeAwareImportNormalizer(importedNamespace, wildcard, ignoreCase); } } return new NestedTypeAwareImportNormalizerWithDotSeparator(importedNamespace, wildcard, ignoreCase); }
@Override protected JvmType findNestedType(JvmType result, int index, QualifiedName name) { if (result.eContainer() instanceof JvmDeclaredType && name.getSegmentCount() == 1) { QualifiedName importName = importNames.get(index); if (importName != null && importName.getLastSegment().equals(name.getFirstSegment())) { return result; } } return super.findNestedType(result, index, name); }
@Override public QualifiedName toQualifiedName(String qualifiedNameAsString) { QualifiedName qualifiedName = super.toQualifiedName(qualifiedNameAsString); // workaround for mediaTypes with dots if (qualifiedName.getSegmentCount() >= 2 && qualifiedName.getSegment(0).startsWith("application/")) { //$NON-NLS-1$ return QualifiedName.create(qualifiedNameAsString); } return qualifiedName; } }
/** * Internal low level serialization of QualifiedNames. * @since 2.4 */ public void writeToStream(EObjectOutputStream eObjectOutputStream) throws IOException { int segmentCount = getSegmentCount(); eObjectOutputStream.writeCompressedInt(segmentCount); for (int i = 0; i < segmentCount; ++i) { eObjectOutputStream.writeSegmentedString(getSegment(i)); } }
protected QualifiedName resolveWildcard(QualifiedName relativeName) { int segmentCount = relativeName.getSegmentCount(); if (segmentCount == 1) { return getImportedNamespacePrefix().append(relativeName); } for(int i = 0; i < segmentCount; i++) { if (relativeName.getSegment(i).indexOf('$') != -1) { return null; } } return getImportedNamespacePrefix().append(relativeName.toString("$")); }
@Override public QualifiedName resolve(QualifiedName relativeName) { QualifiedName prefix = getImportedNamespacePrefix(); if (relativeName.getSegmentCount() > 1 && !alias.isEmpty() && relativeName.startsWith(alias)) { relativeName = relativeName.skipFirst(1); } return prefix.append(relativeName); } }
@Override protected IEObjectDescription getSingleLocalElementByName(QualifiedName name) { if (name.getSegmentCount() > 1) { QualifiedName singleSegment = QualifiedName.create(name.toString("$")); final IEObjectDescription result = super.getSingleLocalElementByName(singleSegment); if (result != null) { return new AliasedEObjectDescription(name, result); } return null; } final IEObjectDescription result = super.getSingleLocalElementByName(name); return result; }
@Override public QualifiedName deresolve(QualifiedName fullyQualifiedName) { if (fullyQualifiedName.startsWith(getImportedNamespacePrefix())) { int segmentCount = getImportedNamespacePrefix().getSegmentCount(); return alias.append(fullyQualifiedName.skipFirst(segmentCount)); } return null; }
protected void addNameAndDescription(final ContentAssistEntry entry, final EObject element, final String qualifiedNameAsString, final String shortName) { final QualifiedName qualifiedName = this.getQualifiedNameConverter().toQualifiedName(qualifiedNameAsString); int _segmentCount = qualifiedName.getSegmentCount(); boolean _greaterThan = (_segmentCount > 1); if (_greaterThan) { entry.setLabel(qualifiedName.getLastSegment()); entry.setDescription(qualifiedNameAsString); } else { entry.setLabel(qualifiedNameAsString); } }