KinderElektro/src/main/java/de/ph87/electro/circuit/part/PartDto.java

47 lines
1.3 KiB
Java

package de.ph87.electro.circuit.part;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import de.ph87.electro.circuit.part.parts.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.awt.*;
@Getter
@ToString
@NoArgsConstructor
@JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS)
public abstract class PartDto {
private String uuid;
private String name;
private Point position;
private Orientation orientation;
protected PartDto(final Part part) {
this.uuid = part.getUuid();
this.name = part.getName();
this.position = part.getPosition();
this.orientation = part.getOrientation();
}
public static PartDto of(final Part abstractPart) {
return switch (abstractPart) {
case final Battery part -> new BatteryDto(part);
case final Light part -> new LightDto(part);
case final ConnectorSub part -> new ConnectorSubDto(part);
case final Switch1x1 part -> new Switch1x1Dto(part);
case final Switch1x2 part -> new Switch1x2Dto(part);
case final SwitchCross part -> new SwitchCrossDto(part);
case final Poti part -> new PotiDto(part);
case final Voltmeter part -> new VoltmeterDto(part);
case null, default -> throw new RuntimeException();
};
}
}