private static void tryDeletingAllNonJavaChildResources(IPackageFragment pack)
     throws CoreException {
   Object[] nonJavaKids = pack.getNonJavaResources();
   for (int i = 0; i < nonJavaKids.length; i++) {
     if (nonJavaKids[i] instanceof IResource) {
       IResource resource = (IResource) nonJavaKids[i];
       JavaProjectHelper.delete(resource);
     }
   }
 }
Ejemplo n.º 2
0
 public void buildFinished(IJavaProject project) {
   try {
     StringBuilder sb = new StringBuilder();
     PreProcessing(project.getElementName());
     IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(Constants.BUNDLE_NAME);
     String fileName =
         prefs.get("LTiEFileName", "Empty String") + project.getElementName() + ".MTD";
     sb.append("<COMPILE_INSTANCE>");
     Calendar c = Calendar.getInstance();
     SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yyyy 'at' HH:mm:ss z");
     sb.append(
         "<TIME UTC=\"" + c.getTimeInMillis() + "\">" + format.format(c.getTime()) + "</TIME>");
     IPackageFragment[] packages = project.getPackageFragments();
     sb.append("<PACKAGES>");
     for (IPackageFragment aPackage : packages) {
       if (aPackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
         String packageName =
             aPackage.getElementName().isEmpty() ? "default" : aPackage.getElementName();
         Constants.writer.println("Package Fragment Name: " + packageName);
         sb.append("<PACKAGE>");
         sb.append("<NAME>" + packageName + "</NAME>");
         sb.append("<FILES>");
         for (ICompilationUnit unit : aPackage.getCompilationUnits()) {
           sb.append("<FILE>");
           sb.append("<NAME>" + unit.getElementName() + "</NAME>");
           printFileInternals(unit, sb);
           printFilesProblems(unit, sb);
           sb.append("<SOURCE>" + StringEscapeUtils.escapeHtml4(unit.getSource()) + "</SOURCE>");
           sb.append("</FILE>");
         }
         ProcessUMLFiles(aPackage.getNonJavaResources(), sb);
         sb.append("</FILES>");
         sb.append("</PACKAGE>");
       }
     }
     sb.append("</PACKAGES>");
     Object[] nonJavaResources = project.getNonJavaResources();
     if (nonJavaResources != null && nonJavaResources.length > 0) {
       sb.append("<FILES>");
       ProcessUMLFiles(nonJavaResources, sb);
       sb.append("</FILES>");
     }
     sb.append("</COMPILE_INSTANCE>");
     PrintWriter out = new PrintWriter(new FileWriter(fileName, true));
     out.write(XMLFormatter.format(sb.toString()));
     out.close();
   } catch (Exception e) {
     e.printStackTrace(Constants.writer);
   }
 }
  private Object[] createFileListInput() {
    try {

      IPackageFragment fPkgFragment = fResourceBundlePackage.getSelected();
      if (fPkgFragment == null) return new Object[0];
      List<Object> result = new ArrayList<Object>(1);
      Object[] nonjava = fPkgFragment.getNonJavaResources();
      for (int i = 0; i < nonjava.length; i++) {
        if (isPropertyFile(nonjava[i])) result.add(nonjava[i]);
      }
      return result.toArray();

    } catch (JavaModelException e) {
      ExceptionHandler.handle(
          e,
          NLSUIMessages.NLSAccessorConfigurationDialog_externalizing,
          NLSUIMessages.NLSAccessorConfigurationDialog_exception);
      return new Object[0];
    }
  }
  /**
   * Returns the children of <code>source</code> which are affected by this operation. If <code>
   * source</code> is a <code>K_SOURCE</code>, these are the <code>.java</code> files, if it is a
   * <code>K_BINARY</code>, they are the <code>.class</code> files.
   */
  private IResource[] collectResourcesOfInterest(IPackageFragment source)
      throws JavaModelException {
    IJavaElement[] children = source.getChildren();
    int childOfInterest = IJavaElement.COMPILATION_UNIT;
    if (source.getKind() == IPackageFragmentRoot.K_BINARY) {
      childOfInterest = IJavaElement.CLASS_FILE;
    }
    ArrayList correctKindChildren = new ArrayList(children.length);
    for (int i = 0; i < children.length; i++) {
      IJavaElement child = children[i];
      if (child.getElementType() == childOfInterest) {
        correctKindChildren.add(((JavaElement) child).resource());
      }
    }
    // Gather non-java resources
    Object[] nonJavaResources = source.getNonJavaResources();
    int actualNonJavaResourceCount = 0;
    for (int i = 0, max = nonJavaResources.length; i < max; i++) {
      if (nonJavaResources[i] instanceof IResource) actualNonJavaResourceCount++;
    }
    IResource[] actualNonJavaResources = new IResource[actualNonJavaResourceCount];
    for (int i = 0, max = nonJavaResources.length, index = 0; i < max; i++) {
      if (nonJavaResources[i] instanceof IResource)
        actualNonJavaResources[index++] = (IResource) nonJavaResources[i];
    }

    if (actualNonJavaResourceCount != 0) {
      int correctKindChildrenSize = correctKindChildren.size();
      IResource[] result = new IResource[correctKindChildrenSize + actualNonJavaResourceCount];
      correctKindChildren.toArray(result);
      System.arraycopy(
          actualNonJavaResources, 0, result, correctKindChildrenSize, actualNonJavaResourceCount);
      return result;
    } else {
      IResource[] result = new IResource[correctKindChildren.size()];
      correctKindChildren.toArray(result);
      return result;
    }
  }
  /**
   * Recursively traverses all children of fragment. Looks for files that end in the cal extension
   * (.cal). If a file is found, it is added to a set and returned.
   *
   * @param fragment
   * @return the set of cal files below this package fragment
   */
  private Set<IStorage> internalGetSources(IPackageFragment fragment) {
    Set<IStorage> calSources = new HashSet<IStorage>();

    try {
      Object[] nonJavaChildren = fragment.getNonJavaResources();
      for (final Object child : nonJavaChildren) {
        if (child instanceof IStorage && ((IStorage) child).getName().endsWith(CAL_EXTENSION)) {
          calSources.add((IStorage) child);
        }
      }

      IJavaElement[] children = fragment.getChildren();
      for (final IJavaElement child : children) {
        if (child.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
          calSources.addAll(internalGetSources((IPackageFragment) child));
        }
      }
    } catch (JavaModelException e) {
      Util.log(e, "Error getting CAL Sources");
    }

    return calSources;
  }