private String processNameNode(ASTNode nameNode) {
    if (nameNode instanceof FullyQualifiedReference) {
      String name;
      FullyQualifiedReference fullyQualifiedName = (FullyQualifiedReference) nameNode;
      name = fullyQualifiedName.getFullyQualifiedName();
      if (fullyQualifiedName.getNamespace() != null) {
        String namespace = fullyQualifiedName.getNamespace().getName();

        String subnamespace = ""; // $NON-NLS-1$
        if (namespace.charAt(0) != NamespaceReference.NAMESPACE_SEPARATOR
            && namespace.indexOf(NamespaceReference.NAMESPACE_SEPARATOR) > 0) {
          int firstNSLocation = namespace.indexOf(NamespaceReference.NAMESPACE_SEPARATOR);
          subnamespace = namespace.substring(firstNSLocation);
          namespace = namespace.substring(0, firstNSLocation);
        }
        if (name.charAt(0) == NamespaceReference.NAMESPACE_SEPARATOR) {
          name = name.substring(1);
        } else if (fLastUseParts.containsKey(namespace)) {
          name =
              new StringBuilder(fLastUseParts.get(namespace).getNamespace().getFullyQualifiedName())
                  .append(subnamespace)
                  .append(NamespaceReference.NAMESPACE_SEPARATOR)
                  .append(fullyQualifiedName.getName())
                  .toString();
        } else if (fLastNamespace != null) {
          name =
              new StringBuilder(fLastNamespace.getName())
                  .append(NamespaceReference.NAMESPACE_SEPARATOR)
                  .append(name)
                  .toString();
        }
      } else if (fLastUseParts.containsKey(name)) {
        name = fLastUseParts.get(name).getNamespace().getFullyQualifiedName();
        if (name.charAt(0) == NamespaceReference.NAMESPACE_SEPARATOR) {
          name = name.substring(1);
        }
      } else {
        if (fLastNamespace != null) {
          name =
              new StringBuilder(fLastNamespace.getName())
                  .append(NamespaceReference.NAMESPACE_SEPARATOR)
                  .append(name)
                  .toString();
        }
      }
      return name;
    } else if (nameNode instanceof SimpleReference) {
      return ((SimpleReference) nameNode).getName();
    }
    return null;
  }
 public boolean visit(UseStatement declaration) throws Exception {
   Collection<UsePart> parts = declaration.getParts();
   for (UsePart part : parts) {
     String name = null;
     if (part.getAlias() != null) {
       name = part.getAlias().getName();
     } else {
       name = part.getNamespace().getName();
       int index = name.lastIndexOf(NamespaceReference.NAMESPACE_SEPARATOR);
       if (index >= 0) {
         name = name.substring(index + 1);
       }
     }
     ImportInfo info = new ImportInfo();
     String containerName;
     if (fLastNamespace == null) {
       containerName = GLOBAL_NAMESPACE_CONTAINER_NAME;
     } else {
       containerName = fLastNamespace.getName();
     }
     info.containerName = containerName;
     if (declaration.getNamespace() == null) {
       info.name = part.getNamespace().getFullyQualifiedName();
     } else {
       info.name =
           PHPModelUtils.concatFullyQualifiedNames(
               declaration.getNamespace().getFullyQualifiedName(),
               part.getNamespace().getFullyQualifiedName());
     }
     info.sourceStart = part.getNamespace().sourceStart();
     info.sourceEnd = part.getNamespace().sourceEnd();
     fRequestor.acceptImport(info);
     fLastUseParts.put(name, part);
   }
   return true;
 }
예제 #3
0
 protected String[] processSuperClasses(TypeDeclaration type) {
   ASTListNode superClasses = type.getSuperClasses();
   if (superClasses == null) {
     return new String[] {};
   }
   List<ASTNode> superClassNames = superClasses.getChilds();
   List<String> result = new ArrayList<String>(superClassNames.size());
   Iterator<ASTNode> iterator = superClassNames.iterator();
   while (iterator.hasNext()) {
     ASTNode nameNode = iterator.next();
     String name;
     if (nameNode instanceof FullyQualifiedReference) {
       FullyQualifiedReference fullyQualifiedName = (FullyQualifiedReference) nameNode;
       name = fullyQualifiedName.getFullyQualifiedName();
       if (fullyQualifiedName.getNamespace() != null) {
         String namespace = fullyQualifiedName.getNamespace().getName();
         String subnamespace = ""; // $NON-NLS-1$
         if (namespace.charAt(0) != NamespaceReference.NAMESPACE_SEPARATOR
             && namespace.indexOf(NamespaceReference.NAMESPACE_SEPARATOR) > 0) {
           int firstNSLocation = namespace.indexOf(NamespaceReference.NAMESPACE_SEPARATOR);
           subnamespace = namespace.substring(firstNSLocation);
           namespace = namespace.substring(0, firstNSLocation);
         }
         if (name.charAt(0) == NamespaceReference.NAMESPACE_SEPARATOR) {
           name = name.substring(1);
         } else if (fLastUseParts.containsKey(namespace)) {
           name =
               new StringBuilder(
                       fLastUseParts.get(namespace).getNamespace().getFullyQualifiedName())
                   .append(subnamespace)
                   .append(NamespaceReference.NAMESPACE_SEPARATOR)
                   .append(fullyQualifiedName.getName())
                   .toString();
         } else if (fCurrentNamespace != null) {
           name =
               new StringBuilder(fCurrentNamespace.getName())
                   .append(NamespaceReference.NAMESPACE_SEPARATOR)
                   .append(name)
                   .toString();
         }
       } else if (fLastUseParts.containsKey(name)) {
         name = fLastUseParts.get(name).getNamespace().getFullyQualifiedName();
         if (name.charAt(0) == NamespaceReference.NAMESPACE_SEPARATOR) {
           name = name.substring(1);
         }
       } else {
         if (fCurrentNamespace != null) {
           name =
               new StringBuilder(fCurrentNamespace.getName())
                   .append(NamespaceReference.NAMESPACE_SEPARATOR)
                   .append(name)
                   .toString();
         }
       }
       result.add(name);
     } else if (nameNode instanceof SimpleReference) {
       result.add(((SimpleReference) nameNode).getName());
     }
   }
   return (String[]) result.toArray(new String[result.size()]);
 }