From af5cd88691d47cbe7f5d681ec099502fac10b284 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Sun, 8 Jun 2025 16:38:01 +0200 Subject: [PATCH] Add floppy drive asset --- .../seeseepuff/pcinv/meta/AssetProperty.java | 5 ++ .../pcinv/models/FloppyDriveAsset.java | 52 +++++++++++++++++++ .../repositories/FloppyDriveRepository.java | 12 +++++ .../pcinv/services/AssetService.java | 6 +++ .../resources/templates/create_asset.html | 9 ++++ 5 files changed, 84 insertions(+) create mode 100644 src/main/java/be/seeseepuff/pcinv/models/FloppyDriveAsset.java create mode 100644 src/main/java/be/seeseepuff/pcinv/repositories/FloppyDriveRepository.java diff --git a/src/main/java/be/seeseepuff/pcinv/meta/AssetProperty.java b/src/main/java/be/seeseepuff/pcinv/meta/AssetProperty.java index a3c94f5..a1e31b5 100644 --- a/src/main/java/be/seeseepuff/pcinv/meta/AssetProperty.java +++ b/src/main/java/be/seeseepuff/pcinv/meta/AssetProperty.java @@ -55,6 +55,7 @@ public class AssetProperty { public enum Type { STRING(false), INTEGER(false), + BOOLEAN(false), CAPACITY(false), CONDITION(true), ; @@ -150,6 +151,8 @@ public class AssetProperty { return Type.CAPACITY; } else if (property.getType() == Integer.class || property.getType() == int.class || property.getType() == Long.class || property.getType() == long.class) { return Type.INTEGER; + } else if (property.getType() == Boolean.class || property.getType() == boolean.class) { + return Type.BOOLEAN; } else if (property.getType() == AssetCondition.class) { return Type.CONDITION; } else { @@ -197,6 +200,8 @@ public class AssetProperty { var value = getValue(asset); if (value == null) { return "Unknown"; + } else if (type == Type.BOOLEAN) { + return (boolean) value ? "Yes" : "No"; } else if (type == Type.INTEGER || type == Type.STRING) { return value.toString(); } else if (type == Type.CAPACITY) { diff --git a/src/main/java/be/seeseepuff/pcinv/models/FloppyDriveAsset.java b/src/main/java/be/seeseepuff/pcinv/models/FloppyDriveAsset.java new file mode 100644 index 0000000..36169fe --- /dev/null +++ b/src/main/java/be/seeseepuff/pcinv/models/FloppyDriveAsset.java @@ -0,0 +1,52 @@ +package be.seeseepuff.pcinv.models; + +import be.seeseepuff.pcinv.meta.*; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Entity +@AssetInfo( + displayName = "Floppy Drive", + pluralName = "Floppy Drives", + type = "floppy_drive" +) +@Table(name = "floppy_drive_assets") +public class FloppyDriveAsset implements Asset +{ + @Id + @GeneratedValue + private long id; + + /// The generic asset associated with this RAM. + @OneToOne(orphanRemoval = true) + private GenericAsset asset; + + @Description("Indicates if the floppy drive supports double density (DD) disks.") + @Property("doubleDensitySupported") + @HideInOverview + private Boolean supportsDoubleDensity; + + @Description("Indicates if the floppy drive supports high density (HD) disks.") + @Property("highDensitySupported") + @HideInOverview + private Boolean supportsHighDensity; + + @Description("Indicates if the floppy drive supports extra high density (ED) disks.") + @Property("extraHighDensitySupported") + @HideInOverview + private Boolean supportsExtraHighDensity; + + @Description("The type of interface used by the floppy drive. E.g.: 34-pin, 50-pin, etc.") + @Property("Interface Type") + @HideInOverview + @InputList + private String interfaceType; + + @Description("The form factor of the floppy drive. E.g.: 3.5\", 5.25\", etc.") + @Property("Form Factor") + @InputList + private String formFactor; +} diff --git a/src/main/java/be/seeseepuff/pcinv/repositories/FloppyDriveRepository.java b/src/main/java/be/seeseepuff/pcinv/repositories/FloppyDriveRepository.java new file mode 100644 index 0000000..1f274b7 --- /dev/null +++ b/src/main/java/be/seeseepuff/pcinv/repositories/FloppyDriveRepository.java @@ -0,0 +1,12 @@ +package be.seeseepuff.pcinv.repositories; + +import be.seeseepuff.pcinv.models.FloppyDriveAsset; +import org.springframework.data.jpa.repository.JpaRepository; + +@SuppressWarnings("unused") +public interface FloppyDriveRepository extends JpaRepository, AssetRepository { + @Override + default Class getAssetType() { + return FloppyDriveAsset.class; + } +} diff --git a/src/main/java/be/seeseepuff/pcinv/services/AssetService.java b/src/main/java/be/seeseepuff/pcinv/services/AssetService.java index 37db028..6c2d547 100644 --- a/src/main/java/be/seeseepuff/pcinv/services/AssetService.java +++ b/src/main/java/be/seeseepuff/pcinv/services/AssetService.java @@ -216,6 +216,12 @@ public class AssetService { return Integer.parseInt(stringValue); } else if (property.getType() == AssetProperty.Type.STRING) { return stringValue; + } else if (property.getType() == AssetProperty.Type.BOOLEAN) { + return switch (stringValue.toLowerCase()) { + case "true" -> true; + case "false" -> false; + default -> null; + }; } else if (property.getType().isEnum) { for (var option : property.getOptions()) { if (option.getValue().equals(stringValue)) { diff --git a/src/main/resources/templates/create_asset.html b/src/main/resources/templates/create_asset.html index e900583..55ffa48 100644 --- a/src/main/resources/templates/create_asset.html +++ b/src/main/resources/templates/create_asset.html @@ -18,6 +18,15 @@ + + + + + + + + +