package com.mobilesorcery.sdk.core.build; import java.io.IOException; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IMemento; import com.mobilesorcery.sdk.core.BuildResult; import com.mobilesorcery.sdk.core.IBuildResult; import com.mobilesorcery.sdk.core.IBuildSession; import com.mobilesorcery.sdk.core.IBuildState; import com.mobilesorcery.sdk.core.IBuildVariant; import com.mobilesorcery.sdk.core.IFileTreeDiff; import com.mobilesorcery.sdk.core.IFilter; import com.mobilesorcery.sdk.core.MoSyncBuilder; import com.mobilesorcery.sdk.core.MoSyncProject; import com.mobilesorcery.sdk.internal.builder.MoSyncResourceBuilderVisitor; public class ResourceBuildStep extends AbstractBuildStep { public static final String ID = "resource"; public static final String RESOURCE_FILES = ResourceBuildStep.class.getName() + "resource.files"; public static class Factory extends AbstractBuildStepFactory { @Override public IBuildStep create() { return new ResourceBuildStep(); } @Override public String getId() { return ID; } @Override public String getName() { return "Compile resources"; } } public ResourceBuildStep() { setId(ID); setName("Build Resources"); } @Override public int incrementalBuild(MoSyncProject mosyncProject, IBuildSession session, IBuildVariant variant, IFileTreeDiff diff, IBuildResult result, IProgressMonitor monitor) throws CoreException, IOException { IProject project = mosyncProject.getWrappedProject(); MoSyncResourceBuilderVisitor resourceVisitor = new MoSyncResourceBuilderVisitor(); resourceVisitor.setProject(project); resourceVisitor.setVariant(variant); resourceVisitor.setPipeTool(getPipeTool()); resourceVisitor.setParameterResolver(getParameterResolver()); IPath resource = MoSyncBuilder.getResourceOutputPath(project, variant); resourceVisitor.setOutputFile(resource); resourceVisitor.setDependencyProvider(getDependencyProvider()); resourceVisitor.setDiff(diff); resourceVisitor.setResourceFilter(getResourceFilter()); monitor.setTaskName("Assembling resources"); resourceVisitor.incrementalCompile(monitor, getBuildState().getDependencyManager(), result.getDependencyDelta()); session.getProperties().put(RESOURCE_FILES, resourceVisitor.getResourceFiles()); return CONTINUE; } @Override public boolean shouldAdd(IBuildSession session) { return session.doBuildResources(); } }