package de.ph87.data.view.tree; import lombok.Getter; import lombok.NonNull; import lombok.ToString; @Getter @ToString public abstract class ViewDto { public final String _type_; public final String uuid; public final String name; protected ViewDto(@NonNull final View view) { this._type_ = view.get_type_(); this.uuid = view.getUuid(); this.name = view.getName(); } @NonNull public static ViewDto map(@NonNull final View view) { return switch (view) { case final ViewLiteral viewLiteral -> new ViewLiteralDto(viewLiteral); case final ViewSeries viewSeries -> new ViewSeriesDto(viewSeries); case final ViewUnary viewUnary -> new ViewUnaryDto(viewUnary); case final ViewBinary viewBinary -> new ViewBinaryDto(viewBinary); default -> throw new RuntimeException("DTO mapping of View type not implemented: " + view.getClass()); }; } }