step-sequence-generator
Version:
A step sequence generator for figure skating programs
52 lines (51 loc) • 2.67 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FilterCompositeMapFactory = void 0;
const DefaultMovementFilterStrategy_1 = require("./strategies/DefaultMovementFilterStrategy");
const DifficultTurnsFilterStrategy_1 = require("./strategies/DifficultTurnsFilterStrategy");
const IsChangeLegFilterStrategy_1 = require("./strategies/IsChangeLegFilterStrategy");
const CompositeMovementFiltersFactory_1 = require("./CompositeMovementFiltersFactory");
const filter_stategy_name_enum_1 = require("../../shared/enums/filter-stategy-name.enum");
class FilterCompositeMapFactory {
static createMap(filtersNames) {
const map = new Map();
filtersNames.forEach((filterName) => {
const strategy = this.orderMap.get(filterName);
if (!strategy)
throw new Error(`Filter ${filterName} not found`);
map.set(filterName, strategy);
});
return map;
}
static createDefaultComposite() {
const defaultStrategy = this.createDefaultStrategy();
return CompositeMovementFiltersFactory_1.CompositeMovementFiltersFactory.create([defaultStrategy]);
}
static createThreeDifficultTurnsComposite() {
const defaultStrategy = this.createDefaultStrategy();
const threeDifficultTurnsStrategy = this.createThreeDifficultTurnsStrategy();
return CompositeMovementFiltersFactory_1.CompositeMovementFiltersFactory.create([defaultStrategy, threeDifficultTurnsStrategy]);
}
static createIsChangeLegComposite() {
const defaultStrategy = this.createDefaultStrategy();
const isChangeLegStrategy = this.createIsChangeLegStrategy();
return CompositeMovementFiltersFactory_1.CompositeMovementFiltersFactory.create([defaultStrategy, isChangeLegStrategy]);
}
static createDefaultStrategy() {
return new DefaultMovementFilterStrategy_1.DefaultMovementFilterStrategy();
}
static createThreeDifficultTurnsStrategy() {
return new DifficultTurnsFilterStrategy_1.DifficultTurnsFilterStrategy();
}
static createIsChangeLegStrategy() {
return new IsChangeLegFilterStrategy_1.IsChangeLegFilterStrategy();
}
}
exports.FilterCompositeMapFactory = FilterCompositeMapFactory;
_a = FilterCompositeMapFactory;
FilterCompositeMapFactory.orderMap = new Map([
[filter_stategy_name_enum_1.FilterStrategyName.DEFAULT, _a.createDefaultComposite()],
[filter_stategy_name_enum_1.FilterStrategyName.THREE_DIFFICULT_TURNS, _a.createThreeDifficultTurnsComposite()],
[filter_stategy_name_enum_1.FilterStrategyName.IS_CHANGE_LEG, _a.createIsChangeLegComposite()],
]);