diff --git a/application/src/main/java/nl/jixxed/eliteodysseymaterials/domain/ships/Slot.java b/application/src/main/java/nl/jixxed/eliteodysseymaterials/domain/ships/Slot.java index 220527cc..78d71f89 100644 --- a/application/src/main/java/nl/jixxed/eliteodysseymaterials/domain/ships/Slot.java +++ b/application/src/main/java/nl/jixxed/eliteodysseymaterials/domain/ships/Slot.java @@ -56,7 +56,11 @@ public Slot(final Slot slot) { } //some ships have their last slotnumbers offset due to military slots public int getNamedIndex() { - return namedIndex != null ? namedIndex : index + 1; + return hasNamedIndex() ? namedIndex : index + 1; + } + //some ships have their last slotnumbers offset due to military slots + public boolean hasNamedIndex() { + return namedIndex != null; } public boolean isOccupied() { diff --git a/application/src/main/java/nl/jixxed/eliteodysseymaterials/service/ships/LoadoutMapper.java b/application/src/main/java/nl/jixxed/eliteodysseymaterials/service/ships/LoadoutMapper.java index b3b18942..5bbd7698 100644 --- a/application/src/main/java/nl/jixxed/eliteodysseymaterials/service/ships/LoadoutMapper.java +++ b/application/src/main/java/nl/jixxed/eliteodysseymaterials/service/ships/LoadoutMapper.java @@ -222,10 +222,11 @@ private static Slot getHardpointSlot(List hardpointSlots, String slot final int slotNumber = Integer.parseInt(slotName.substring(slotName.length() - 1)); try { return getHardpointSlots(hardpointSlots, slotName).stream() + .filter(Slot::hasNamedIndex) .filter(slot -> slot.getNamedIndex() == slotNumber) .findFirst() - .orElseThrow(IllegalArgumentException::new); - } catch (IllegalArgumentException ex) { + .orElseGet(() -> getHardpointSlots(hardpointSlots, slotName).get(slotNumber - 1)); + } catch (IllegalStateException ex) { hardpointSlots.stream().map(slot -> slot.toString()).forEach(log::debug); throw ex; }