Package com.dynamic.model.project.builder

Source Code of com.dynamic.model.project.builder.AssignmentManager

package com.dynamic.model.project.builder;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Map;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.types.FileSet;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.NullProgressMonitor;

import com.dynamic.model.project.ProjectActivator;
import com.dynamic.model.project.parser.BuilderProperty;
import com.dynamic.model.project.parser.Task;


public class AssignmentManager {
  /**
   * ִ��PluginNature����
   * @param project
   */
  public void taskPlugin(IProject project, String natureId) {
    //get config task map
    Map<String, List<Task>> taskMap = BuilderProperty.getTaskMap();
    List<Task> taskList = taskMap.get(natureId);
    URL pluginRoot=ProjectActivator.class.getClassLoader().getResource("/resource");
    try {
      String baseRoot = FileLocator.toFileURL(pluginRoot).getFile();
      for (Task task : taskList) {
        if (task.getResource().contains("@")) {
          String resource = baseRoot+ task.getResource();
          String destination = project.getLocationURI().getPath()
              + task.getDestination();
          copyDirectory(resource, destination);
        } else {
          String resource = baseRoot
              + task.getResource();
          String destination = project.getLocationURI().getPath()
              + task.getDestination();
          fileCopy(resource, destination);
          project.refreshLocal(IResource.DEPTH_INFINITE,
              new NullProgressMonitor());
        }
      }
    } catch (IOException e1) {
      e1.printStackTrace();
    } catch (CoreException e) {
      e.printStackTrace();
    }
  }
 
  /**
   * ִ��PluginNature����
   * @param project
   */
  public void unPlugin(IProject project, String natureId) {
    Map<String, List<Task>> taskMap =BuilderProperty.getTaskMap();
    List<Task> taskList = taskMap.get(natureId);
    for (Task task : taskList) {
      String destination = project.getLocationURI().getPath()
          + task.getDestination();
      fileDelete(destination);
    }
    try {
      project.refreshLocal(IResource.DEPTH_INFINITE,
          new NullProgressMonitor());
    } catch (CoreException e) {
      e.printStackTrace();
    }
  }

  /***
   * �����ļ�
   * @param sourceFile2
   * @param realFile
   */
  private void fileCopy(String resource, String destination) {
    Project prj = new Project();
    Copy copy = new Copy();
    copy.setProject(prj);
    copy.setFile(new File(resource));
    File destDir = new File(destination).getParentFile();
    copy.setTodir(destDir);
    copy.execute();
  }

  /***
   * Ŀ¼����
   * @param resource
   * @param destination
   */
  private void copyDirectory(String resource, String destination) {
    Project prj = new Project();
    Copy copy = new Copy();
    copy.setProject(prj);
    String[] source = resource.split("@");
    copy.setOverwrite(true);
    copy.setTodir(new File(destination));
    // FileSet
    if (source.length > 1) {
      FileSet fileSet = new FileSet();
      fileSet.setDir(new File(source[0]));
      fileSet.setIncludes(source[1]);
      copy.addFileset(fileSet);
    }
    copy.execute();
  }

  /***
   * ɾ���ļ�
   *
   * @param realFile
   */
  private void fileDelete(String destination) {
    if (destination == null || destination.equals("")) {
      return;
    }
    File destFile = new File(destination);
    if (destFile.exists()) {
      destFile.delete();
    }
  }
}
TOP

Related Classes of com.dynamic.model.project.builder.AssignmentManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.