@geoapify/route-planner-sdk
Version:
TypeScript SDK for the Geoapify Route Planner API. Supports route optimization, delivery planning, and timeline visualization in browser and Node.js
33 lines (32 loc) • 1.43 kB
JavaScript
import { REOPTIMIZE, PRESERVE_ORDER, UnknownStrategy } from "../../../../models";
import { JobAssignReoptimizeStrategy } from "./job-assign-reoptimize-strategy";
import { JobAssignPreserveOrderStrategy } from "./job-assign-preserve-order-strategy";
import { JobRemoveReoptimizeStrategy } from "./job-remove-reoptimize-strategy";
import { JobRemovePreserveOrderStrategy } from "./job-remove-preserve-order-strategy";
/**
* Factory for creating job-related strategies
*/
export class JobStrategyFactory {
static createAssignStrategy(strategy) {
const strategyInstance = this.assignStrategies.get(strategy);
if (!strategyInstance) {
throw new UnknownStrategy(`Unknown assign strategy: ${strategy}`, strategy, 'assign');
}
return strategyInstance;
}
static createRemoveStrategy(strategy) {
const strategyInstance = this.removeStrategies.get(strategy);
if (!strategyInstance) {
throw new UnknownStrategy(`Unknown remove strategy: ${strategy}`, strategy, 'remove');
}
return strategyInstance;
}
}
JobStrategyFactory.assignStrategies = new Map([
[REOPTIMIZE, new JobAssignReoptimizeStrategy()],
[PRESERVE_ORDER, new JobAssignPreserveOrderStrategy()],
]);
JobStrategyFactory.removeStrategies = new Map([
[REOPTIMIZE, new JobRemoveReoptimizeStrategy()],
[PRESERVE_ORDER, new JobRemovePreserveOrderStrategy()],
]);