ProductModule.java

/* *******************************************************************
 * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors:
 *     Xerox/PARC     initial implementation
 * ******************************************************************/
package org.aspectj.internal.tools.build;

import java.io.File;

/**
 * Struct associating module with target product distribution jar
 * and assembly instructions.
 * When building product distributions, a zero-length jar file
 * in the dist directory may signify a module to be built,
 * renamed, and included in the distribution.
 */
public class ProductModule {
    /** name of distribution directory in product directory */
    private static final String DIST = "dist";

    /** top-level product directory being produced */
    public final File productDir;

    /** path to file in distribution template dir for this module jar */
    public final File replaceFile;

    /** relative path within distribution of this product module jar */
    public final String relativePath;

    /** the module jar is the file to replace */
    public final Module module;

    /** if true, assemble all when building module */
    public final boolean assembleAll;

    public ProductModule(File productDir, File replaceFile, Module module, boolean assembleAll) {
        this.replaceFile = replaceFile;
        this.module = module;
        this.productDir = productDir;
        this.assembleAll = assembleAll;
        Util.iaxIfNull(module, "module");
        Util.iaxIfNotCanReadDir(productDir, "productDir");
        Util.iaxIfNotCanReadFile(replaceFile, "replaceFile");
        String productDirPath = productDir.getAbsolutePath();
        String replaceFilePath = replaceFile.getAbsolutePath();
        if (!replaceFilePath.startsWith(productDirPath)) {
            String m = "\"" + replaceFilePath
                + "\" does not start with \""
                + productDirPath
                + "\"";
            throw new IllegalArgumentException(m);
        }
        replaceFilePath = replaceFilePath.substring(1+productDirPath.length());
        if (!replaceFilePath.startsWith(DIST)) {
            String m = "\"" + replaceFilePath
                + "\" does not start with \"" + DIST + "\"";
            throw new IllegalArgumentException(m);
        }
        relativePath = replaceFilePath.substring(1 + DIST.length());
    }
    public String toString() {
        return "" + module + " for " + productDir;
    }
}