@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.51 kB
JavaScript
import { REOPTIMIZE, PRESERVE_ORDER, UnknownStrategy } from "../../../../models";
import { ShipmentAssignReoptimizeStrategy } from "./shipment-assign-reoptimize-strategy";
import { ShipmentAssignPreserveOrderStrategy } from "./shipment-assign-preserve-order-strategy";
import { ShipmentRemoveReoptimizeStrategy } from "./shipment-remove-reoptimize-strategy";
import { ShipmentRemovePreserveOrderStrategy } from "./shipment-remove-preserve-order-strategy";
/**
* Factory for creating shipment-related strategies
*/
export class ShipmentStrategyFactory {
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;
}
}
ShipmentStrategyFactory.assignStrategies = new Map([
[REOPTIMIZE, new ShipmentAssignReoptimizeStrategy()],
[PRESERVE_ORDER, new ShipmentAssignPreserveOrderStrategy()],
]);
ShipmentStrategyFactory.removeStrategies = new Map([
[REOPTIMIZE, new ShipmentRemoveReoptimizeStrategy()],
[PRESERVE_ORDER, new ShipmentRemovePreserveOrderStrategy()],
]);