private IFile createManifest(IProject project, IProgressMonitor monitor, PomParser bizPom) {
   String manifestTemplate = ResourceHelper.content(templateRoot + "MANIFEST.MF");
   String bizClientJar = "lib/" + bizPom.getArtifactId() + "-client.jar";
   String manifest =
       String.format(manifestTemplate, pi.getProjectName(), pi.getProjectId(), bizClientJar);
   IFolder metaInf = project.getFolder("META-INF");
   return EclipseHelper.createFile("MANIFEST.MF", metaInf, manifest, monitor);
 }
 private IFile createGuidesign(IProject project, IProgressMonitor monitor) {
   IFolder resourceFolder = (IFolder) project.findMember("src/main/resources");
   String modelTemplate = ResourceHelper.content(templateRoot + "model.guidesign");
   String path =
       "platform:/resource/" + pi.getBusinessProjectId() + "/src/main/resources/model.btdesign";
   String model =
       String.format(
           modelTemplate, path, pi.getProjectName().replace(" ", ""), resolveBusinessAppName());
   return EclipseHelper.createFile("model.guidesign", resourceFolder, model, monitor);
 }
    @Override
    protected void execute(IProgressMonitor monitor)
        throws CoreException, InvocationTargetException, InterruptedException {
      try {
        monitor.beginTask("Creating project " + pi.getProjectName(), 2);

        IProject project = createProject(monitor);
        if (project == null) {
          return;
        }

        PomParser bizPom = parseBizPom();
        createWorkflow(project, monitor);
        IFile fileToOpen = createGuidesign(project, monitor);
        createGeneratorProperties(project, monitor, bizPom);
        createSpecialCasesXpt(project, monitor);
        createSpecialCasesExt(project, monitor);
        createBuildProperties(project, monitor, bizPom);
        createPom(project, monitor, bizPom);
        createManifest(project, monitor, bizPom);
        createSpringHandlers(project, monitor);
        createSpringSchemas(project, monitor);

        createIcons(project, monitor);

        openFile(monitor, fileToOpen);
        monitor.worked(1);

      } catch (final RuntimeException e) {
        PluginLog.logError(e);
        Display.getDefault()
            .asyncExec(
                new Runnable() {
                  @Override
                  public void run() {
                    String message = "Problem when creating rich client project: " + e.getMessage();
                    IStatus status =
                        PluginLog.createStatus(IStatus.ERROR, IStatus.CANCEL, e.getMessage(), e);
                    ErrorDialog.openError(
                        Display.getCurrent().getActiveShell(),
                        "Rich client project wizard",
                        message,
                        status);
                  }
                });
      }
    }