package com.intellij.lang.javascript.flex.projectStructure;
import com.intellij.internal.statistic.AbstractApplicationUsagesCollector;
import com.intellij.internal.statistic.CollectUsagesException;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.lang.javascript.flex.FlexModuleType;
import com.intellij.lang.javascript.flex.projectStructure.model.FlexBuildConfiguration;
import com.intellij.lang.javascript.flex.projectStructure.model.FlexBuildConfigurationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.project.Project;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
import java.util.Set;
public class FlashBuildConfigurationsUsagesCollector extends AbstractApplicationUsagesCollector {
private static final String GROUP_ID = "Flash build configurations";
@NotNull
@Override
public Set<UsageDescriptor> getProjectUsages(@NotNull final Project project) throws CollectUsagesException {
Set<String> usedBcs = new HashSet<>();
for (Module module : ModuleManager.getInstance(project).getModules()) {
if (ModuleType.get(module) != FlexModuleType.getInstance()) {
continue;
}
for (FlexBuildConfiguration bc : FlexBuildConfigurationManager.getInstance(module).getBuildConfigurations()) {
usedBcs.add(bc.getStatisticsEntry());
}
}
return ContainerUtil.map2Set(usedBcs, s -> new UsageDescriptor(s, 1));
}
@NotNull
@Override
public GroupDescriptor getGroupId() {
return GroupDescriptor.create(GROUP_ID, GroupDescriptor.DEFAULT_PRIORITY);
}
}