23 lines
No EOL
658 B
TypeScript
23 lines
No EOL
658 B
TypeScript
/**
|
|
* An action is a change to the OSM-database
|
|
* It will generate some new/modified/deleted objects, which are all bundled by the 'changes'-object
|
|
*/
|
|
import {Changes} from "../Changes";
|
|
import {ChangeDescription} from "./ChangeDescription";
|
|
|
|
export default abstract class OsmChangeAction {
|
|
|
|
private isUsed = false
|
|
|
|
public Perform(changes: Changes) {
|
|
if (this.isUsed) {
|
|
throw "This ChangeAction is already used: " + this.constructor.name
|
|
}
|
|
this.isUsed = true;
|
|
return this.CreateChangeDescriptions(changes)
|
|
}
|
|
|
|
protected abstract CreateChangeDescriptions(changes: Changes): ChangeDescription[]
|
|
|
|
|
|
} |