import { Base64Message } from './Base64Message' import { Destroyable } from './Destroyable' import { Edge, Tree, TreeNode } from './' export abstract class TreeNodeFactory { private static messageCounter = 0 public static insertNodeAtPosition( edgeNames: Array, node: TreeNode ) { let currentNode: TreeNode = new Tree() let edge for (const edgeName of edgeNames) { edge = new Edge(edgeName) currentNode.addEdge(edge) currentNode = new TreeNode(edge) edge.target = currentNode } node.sourceEdge = edge node.sourceEdge!.target = node } public static fromEdgesAndValue( edgeNames: Array, value?: Base64Message | null, receiveDate: Date = new Date() ): TreeNode { const node = new TreeNode() node.setMessage({ value: value || undefined, length: value ? value.length : 0, received: receiveDate, messageNumber: this.messageCounter, }) this.messageCounter += 1 this.insertNodeAtPosition(edgeNames, node) return node } }