abstractplugintask.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 136 行

JAVA
136
字号
/*
 * $Id: AbstractPluginTask.java,v 1.1 2003/11/25 11:54:01 epr Exp $
 */
package org.jnode.build;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;

import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Jar;
import org.apache.tools.ant.types.ZipFileSet;
import org.jnode.plugin.Library;

/**
 * @author Ewout Prangsma (epr@users.sourceforge.net)
 */
public abstract class AbstractPluginTask extends Task {

	protected String targetArch;
	private final LinkedList aliases = new LinkedList();

	/**
	 * @return The target architecture
	 */
	protected String getTargetArch() {
		return targetArch;
	}

	/**
	 * @param string
	 */
	public void setTargetArch(String string) {
		targetArch = string;
	}

	protected void processLibrary(Jar jarTask, Library lib, HashMap fileSets, File srcDir) {

		final LibAlias libAlias = getAlias(lib.getName());
		final File f;
		if (libAlias == null) {
			f = new File(srcDir, lib.getName());
		} else {
			f = libAlias.getAlias();
		}

		ZipFileSet fs = (ZipFileSet) fileSets.get(f);
		if (fs == null) {
			fs = new ZipFileSet();
			if (f.isFile()) {
				fs.setSrc(f);
			} else {
				fs.setDir(f);
			}
			fileSets.put(f, fs);
			jarTask.addFileset(fs);
		}

		final String[] exports = lib.getExports();
		for (int i = 0; i < exports.length; i++) {
			final String export = exports[i];
			if (export.equals("*")) {
				fs.createInclude().setName("**/*");
			} else {
				fs.createInclude().setName(export.replace('.', '/') + ".*");
			}
		}
	}

	protected File pluginDir;

	/**
	 * @param file
	 */
	public void setPluginDir(File file) {
		pluginDir = file;
	}

	/**
	 * @return The plugin directory
	 */
	protected File getPluginDir() {
		return pluginDir;
	}

	public LibAlias createLibAlias() {
		LibAlias a = new LibAlias();
		aliases.add(a);
		return a;
	}

	public LibAlias getAlias(String name) {
		for (Iterator i = aliases.iterator(); i.hasNext();) {
			final LibAlias a = (LibAlias) i.next();
			if (name.equals(a.getName())) {
				return a;
			}
		}
		return null;
	}

	public static class LibAlias {
		private String name;
		private File alias;

		/**
		 * @return The alias
		 */
		public final File getAlias() {
			return this.alias;
		}

		/**
		 * @param alias
		 */
		public final void setAlias(File alias) {
			this.alias = alias;
		}

		/**
		 * @return The name
		 */
		public final String getName() {
			return this.name;
		}

		/**
		 * @param name
		 */
		public final void setName(String name) {
			this.name = name;
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?