package com.intellij.flex.build; import com.intellij.flex.model.bc.JpsFlexBuildConfigurationManager; import com.intellij.flex.model.module.JpsFlexModuleType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.builders.BuildTargetLoader; import org.jetbrains.jps.builders.ModuleBasedBuildTargetType; import org.jetbrains.jps.model.JpsModel; import org.jetbrains.jps.model.module.JpsTypedModule; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FlexResourceBuildTargetType extends ModuleBasedBuildTargetType<FlexResourceBuildTarget> { public static final FlexResourceBuildTargetType PRODUCTION = new FlexResourceBuildTargetType("flex-resource-production", false); public static final FlexResourceBuildTargetType TEST = new FlexResourceBuildTargetType("flex-resource-test", true); private final boolean myIsTests; private FlexResourceBuildTargetType(final String typeId, boolean isTests) { super(typeId); myIsTests = isTests; } public boolean isTests() { return myIsTests; } @NotNull @Override public List<FlexResourceBuildTarget> computeAllTargets(@NotNull JpsModel model) { final List<FlexResourceBuildTarget> targets = new ArrayList<>(); for (JpsTypedModule<JpsFlexBuildConfigurationManager> module : model.getProject().getModules(JpsFlexModuleType.INSTANCE)) { targets.add(new FlexResourceBuildTarget(this, module)); } return targets; } @NotNull @Override public BuildTargetLoader<FlexResourceBuildTarget> createLoader(@NotNull JpsModel model) { final Map<String, JpsTypedModule<JpsFlexBuildConfigurationManager>> modules = new HashMap<>(); for (JpsTypedModule<JpsFlexBuildConfigurationManager> module : model.getProject().getModules(JpsFlexModuleType.INSTANCE)) { modules.put(module.getName(), module); } return new BuildTargetLoader<FlexResourceBuildTarget>() { @Nullable @Override public FlexResourceBuildTarget createTarget(@NotNull String targetId) { final JpsTypedModule<JpsFlexBuildConfigurationManager> module = modules.get(targetId); return module != null ? new FlexResourceBuildTarget(FlexResourceBuildTargetType.this, module) : null; } }; } }