| 
									
										
										
										
											2021-07-15 20:47:28 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * 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 { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-18 14:52:09 +02:00
										 |  |  |     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[] | 
					
						
							| 
									
										
										
										
											2021-07-15 20:47:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |