org.axdt.launch.AxdtCompilerTarget.java Source code

Java tutorial

Introduction

Here is the source code for org.axdt.launch.AxdtCompilerTarget.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 ******************************************************************************/
package org.axdt.launch;

import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.axdt.compiler.AxdtCompilerConfig;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;

import com.google.common.base.Function;
import com.google.common.collect.Lists;

/**
 * @author mb0
 */
public class AxdtCompilerTarget {

    protected final IResource resource;
    protected final Map<String, Object> contexts;

    public AxdtCompilerTarget(IResource resource) {
        if (resource == null || !resource.getProject().exists())
            throw new IllegalArgumentException("resource cannot be null and needs to reside with a project.");
        this.resource = resource;
        contexts = new HashMap<String, Object>(4);
    }

    public Object getContext(String key) {
        return contexts.get(key);
    }

    public void setContext(String key, Object value) {
        contexts.put(key, value);
    }

    @SuppressWarnings("unchecked")
    public <T> T getContextValue(String key, Class<T> clazz) {
        Object context = contexts.get(key);
        if (context != null && clazz.isAssignableFrom(context.getClass())) {
            return (T) context;
        }
        return null;
    }

    public IResource getTarget() {
        return resource;
    }

    public IProject getProject() {
        return resource.getProject();
    }

    public IPath getTargetFileLocation() {
        return resource.getLocation();
    }

    public String getTargetName() {
        return getTargetFileLocation().removeFileExtension().lastSegment();
    }

    public String getTargetFileName() {
        return getTargetFileLocation().lastSegment();
    }

    public String getDeployFileName() {
        return String.format("%s.swf", getTargetName());
    }

    public String getConfigFileName() {
        return String.format("%s-config.xml", getTargetName());
    }

    public IContainer getDeployContainer() {
        return getProject();
    }

    public IContainer getConfigContainer() {
        return getProject();
    }

    public List<IPath> getSourceLocations() {
        return Lists.newArrayList(getProject().getLocation());
    }

    public List<IPath> getLibraryLocations() {
        return Collections.singletonList(getProject().getLocation());
    }

    public List<File> getResolvedLibraries() {
        return Collections.emptyList();
    }

    public IPath getDeployFileLocation() {
        return getDeployContainer().getLocation().append(getDeployFileName());
    }

    public IPath getConfigFileLocation() {
        return getConfigContainer().getLocation().append(getConfigFileName());
    }

    public static File[] pathsToFileArray(List<IPath> paths) {
        List<File> list = Lists.transform(paths, new Path2File());
        return list.toArray(new File[list.size()]);
    }

    public static List<IPath> resourcesToPaths(List<IResource> resources) {
        return Lists.transform(resources, new Resource2Path());
    }

    private static class Path2File implements Function<IPath, File> {
        public File apply(IPath from) {
            return new File(from.toOSString());
        }
    }

    private static class Resource2Path implements Function<IResource, IPath> {
        public IPath apply(IResource from) {
            return from.getLocation();
        }
    }

    public String getLaunchMode() {
        return getContextValue(AxdtCompilerConfig.LAUNCH_MODE, String.class);
    }

    public void setLaunchMode(String launchMode) {
        setContext(AxdtCompilerConfig.LAUNCH_MODE, launchMode);
    }
}