diff --git a/app/src/main/java/de/twonirwana/infinity/ExportAll.java b/app/src/main/java/de/twonirwana/infinity/ExportAll.java index 9ce3d5e..11ea262 100644 --- a/app/src/main/java/de/twonirwana/infinity/ExportAll.java +++ b/app/src/main/java/de/twonirwana/infinity/ExportAll.java @@ -6,8 +6,10 @@ public class ExportAll { static void main() { - // Database db = DatabaseImp.createWithoutUpdate("resources"); - Database db = DatabaseImp.createTimedUpdate(); + Database db = DatabaseImp.createWithoutUpdate("resources"); + + + //Database db = DatabaseImp.createTimedUpdate(); HtmlPrinter htmlPrinter = new HtmlPrinter(LocalDateTime::now); diff --git a/app/src/test/java/de/twonirwana/infinity/HtmlPrinterTest.java b/app/src/test/java/de/twonirwana/infinity/HtmlPrinterTest.java index 54cdd1f..d9472af 100644 --- a/app/src/test/java/de/twonirwana/infinity/HtmlPrinterTest.java +++ b/app/src/test/java/de/twonirwana/infinity/HtmlPrinterTest.java @@ -135,7 +135,7 @@ void setup() { new ExtraValue(3, "extra distance", ExtraValue.Type.Distance, 10f) ) )); - TrooperProfile trooperProfile = new TrooperProfile(sectorial, 1, 2, 3, 4, "name", List.of(10, 10), 10, 10, 10, 10, 3, 3, 2, false, 2, "notes", "type", 3, weapons, skills, equipments, List.of("char1", "char2"), "logo.png", List.of("image.png"), List.of(new Order(Order.Type.REGULAR, 0, 1))); + TrooperProfile trooperProfile = new TrooperProfile(sectorial, 1, 2, 3, 4, "name", List.of(10, 10), 10, 10, 10, 10, 3, 3, 2, false, 2, "notes", "type", 3, weapons, skills, equipments, List.of("char1", "char2"), "logo.png", List.of("image.png"), List.of("box 1"), List.of(new Order(Order.Type.REGULAR, 0, 1))); Trooper trooper = new Trooper(sectorial, 1, 2, 3, "optionName", "category", "0.5", 20, List.of(trooperProfile), List.of(), "note", "groupNote"); martialArtLevels = List.of(new MartialArtLevel("-3", "-", "+3", "3", "+1SD")); diff --git a/data/api/src/main/java/de/twonirwana/infinity/unit/api/TrooperProfile.java b/data/api/src/main/java/de/twonirwana/infinity/unit/api/TrooperProfile.java index 930a809..281bde4 100644 --- a/data/api/src/main/java/de/twonirwana/infinity/unit/api/TrooperProfile.java +++ b/data/api/src/main/java/de/twonirwana/infinity/unit/api/TrooperProfile.java @@ -52,6 +52,8 @@ public class TrooperProfile { @NonNull List imageNames; @NonNull + List products; + @NonNull List orders; public String getCombinedProfileId() { diff --git a/data/core/src/main/java/de/twonirwana/infinity/CsvPrinter.java b/data/core/src/main/java/de/twonirwana/infinity/CsvPrinter.java index 9d3cadd..ae49986 100644 --- a/data/core/src/main/java/de/twonirwana/infinity/CsvPrinter.java +++ b/data/core/src/main/java/de/twonirwana/infinity/CsvPrinter.java @@ -28,7 +28,6 @@ public static void printList(String name, List printableUnits) { "MOV", "CC", "BS", "PH", "WIP", "ARM", "BTS", "Wounds", "Silhouette", "Orders", "AVA", "Points", "SWC", "Skills", "Equipment", "Weapons", "Characteristics", - "CB Image" }; try { @@ -114,8 +113,8 @@ private static void printUnitOptionProfile(CSVPrinter csvPrinter, UnitOption uni equipment, weapons, String.join(", ", profile.getCharacteristics()), - !profile.getImageNames().isEmpty() - + String.join(", ", profile.getImageNames()), + String.join(", ", profile.getProducts()) ); } catch (IOException e) { throw new RuntimeException(e); diff --git a/data/core/src/main/java/de/twonirwana/infinity/db/DataLoader.java b/data/core/src/main/java/de/twonirwana/infinity/db/DataLoader.java index 50aa47c..cae9f0c 100644 --- a/data/core/src/main/java/de/twonirwana/infinity/db/DataLoader.java +++ b/data/core/src/main/java/de/twonirwana/infinity/db/DataLoader.java @@ -203,7 +203,7 @@ public DataLoader(UpdateOption updateOption, String resourcesFolder) throws IOEx .sorted(Comparator.comparing(UnitOption::getCombinedId)) .toList(); - CsvPrinter.printList(DATE_TIME_FORMATTER.format(LocalDateTime.now()) + "_" + unitOptions.hashCode(), unitOptions); + CsvPrinter.printList(DATE_TIME_FORMATTER.format(LocalDateTime.now()) + "_" + unitOptions.toString().hashCode(), unitOptions); } //todo ref image } @@ -412,7 +412,7 @@ private static Optional getStreamForURL(String urlString) { urlConnection.setRequestProperty("Referer", "https://infinityuniverse.com/"); return Optional.of(new BufferedInputStream(urlConnection.getInputStream())); } catch (Exception e) { - log.error("Error downloading {}: {}", urlString, e.getMessage()); + log.error("Error downloading: {}", urlString, e); return Optional.empty(); } } diff --git a/data/core/src/main/java/de/twonirwana/infinity/db/UnitMapper.java b/data/core/src/main/java/de/twonirwana/infinity/db/UnitMapper.java index e75d77f..af1b4d5 100644 --- a/data/core/src/main/java/de/twonirwana/infinity/db/UnitMapper.java +++ b/data/core/src/main/java/de/twonirwana/infinity/db/UnitMapper.java @@ -5,6 +5,7 @@ import de.twonirwana.infinity.Sectorial; import de.twonirwana.infinity.model.*; import de.twonirwana.infinity.model.image.ImgOption; +import de.twonirwana.infinity.model.image.Product; import de.twonirwana.infinity.model.image.SectorialImage; import de.twonirwana.infinity.model.unit.*; import de.twonirwana.infinity.unit.api.ExtraValue; @@ -88,7 +89,6 @@ public static Map> getUnits(Map getUnitSkills(Unit un List extras = Optional.ofNullable(pi.getExtra()).stream() .flatMap(Collection::stream) .map(extraFilter::get) + .sorted(Comparator.comparing(ExtraValue::getId)) .toList(); if (s != null) { return Stream.of(s).map(skill -> mapSkill(skill, pi.getQ(), extras)); @@ -550,6 +553,7 @@ private static de.twonirwana.infinity.unit.api.Skill mapSkill(Skill skill, Integ quantity, // quantity is always null or 1 extras.stream() .filter(Objects::nonNull) + .sorted(Comparator.comparing(ExtraValue::getId)) .toList() ); } @@ -570,6 +574,7 @@ private static List getUnitEquipments List extras = Optional.ofNullable(pi.getExtra()).stream() .flatMap(Collection::stream) .map(extraFilter::get) + .sorted(Comparator.comparing(ExtraValue::getId)) .toList(); if (e != null) { return Stream.of(e).map(equip -> mapEquipment(equip, pi.getQ(), extras)); @@ -595,6 +600,7 @@ private static de.twonirwana.infinity.unit.api.Equipment mapEquipment(Equipment quantity, extras.stream() .filter(Objects::nonNull) + .sorted(Comparator.comparing(ExtraValue::getId)) .toList() ); } @@ -642,16 +648,28 @@ private static TrooperProfile getOptionProfile(Sectorial sectorial, sectorial.getName()); String type = sectorialFilter.typeFilter().get(profile.getType()); List characteristics = getUnitCharacteristics(profileOption, profile, sectorialFilter.characteristicsFilter()); - List imageNames = sectorialImage.getUnits().stream() + + List imgOptions = sectorialImage.getUnits().stream() .filter(u -> u.getId() == unit.getId()) .flatMap(u -> u.getProfileGroups().stream()) .filter(pg -> pg.getId() == profileGroupId) .flatMap(pg -> pg.getImgOptions().stream()) .filter(io -> io.getOptions().contains(profileOption.getId())) + .toList(); + + List imageNames = imgOptions.stream() .map(ImgOption::getUrl) .map(Utils::getFileNameFromUrl) + .filter(Objects::nonNull) .sorted() .toList(); + + List products = imgOptions.stream() + .flatMap(s -> s.getProducts().stream()) + .map(Product::getName) + .sorted() + .toList(); + List orders = profileOption.getOrders().stream() .map(UnitMapper::mapOrder) .sorted(Comparator.comparing(de.twonirwana.infinity.unit.api.Order::getType)) @@ -683,6 +701,7 @@ private static TrooperProfile getOptionProfile(Sectorial sectorial, characteristics, Utils.getFileNameFromUrl(profile.getLogo()), imageNames, + products, orders); } @@ -820,11 +839,13 @@ private static List mapTurrets(Unit unit, List turretWeapons, Li String turretName = extra2WeaponModeNameMapping.getOrDefault(turretTypeExtra.get().getText(), turretTypeExtra.get().getText()); List turrets = turretWeapons.stream() .filter(w -> Objects.equals(w.getMode(), turretName)) + .sorted(Comparator.comparing(Weapon::getName)) .toList(); //fallback to all weapons if (turrets.isEmpty()) { turrets = allWeapons.stream() .filter(w -> Objects.equals(w.getName(), turretName)) + .sorted(Comparator.comparing(Weapon::getName)) .toList(); } if (turrets.isEmpty()) { @@ -844,6 +865,7 @@ private static List mapTurrets(Unit unit, List turretWeapons, Li //use only base version return turretWeapons.stream() .filter(w -> Strings.isNullOrEmpty(w.getMode())) + .sorted(Comparator.comparing(Weapon::getName)) .toList(); } } diff --git a/web/playwright/expected/chromium_a4_image_expected.png b/web/playwright/expected/chromium_a4_image_expected.png index 126e19b..3d17003 100644 Binary files a/web/playwright/expected/chromium_a4_image_expected.png and b/web/playwright/expected/chromium_a4_image_expected.png differ diff --git a/web/playwright/expected/chromium_a4_overview_expected.png b/web/playwright/expected/chromium_a4_overview_expected.png index 2fbc86b..2eda66e 100644 Binary files a/web/playwright/expected/chromium_a4_overview_expected.png and b/web/playwright/expected/chromium_a4_overview_expected.png differ diff --git a/web/playwright/expected/chromium_a7_image_expected.png b/web/playwright/expected/chromium_a7_image_expected.png index 252ada4..3352565 100644 Binary files a/web/playwright/expected/chromium_a7_image_expected.png and b/web/playwright/expected/chromium_a7_image_expected.png differ diff --git a/web/playwright/expected/chromium_c6onA4_image_expected.png b/web/playwright/expected/chromium_c6onA4_image_expected.png index 8b184a2..b572fd1 100644 Binary files a/web/playwright/expected/chromium_c6onA4_image_expected.png and b/web/playwright/expected/chromium_c6onA4_image_expected.png differ diff --git a/web/playwright/expected/chromium_letter_image_expected.png b/web/playwright/expected/chromium_letter_image_expected.png index a2cc723..77f72cd 100644 Binary files a/web/playwright/expected/chromium_letter_image_expected.png and b/web/playwright/expected/chromium_letter_image_expected.png differ diff --git a/web/playwright/expected/firefox_a4_image_expected.png b/web/playwright/expected/firefox_a4_image_expected.png index 55c5bf4..f924822 100644 Binary files a/web/playwright/expected/firefox_a4_image_expected.png and b/web/playwright/expected/firefox_a4_image_expected.png differ diff --git a/web/playwright/expected/firefox_a4_overview_expected.png b/web/playwright/expected/firefox_a4_overview_expected.png index ec90882..a01690a 100644 Binary files a/web/playwright/expected/firefox_a4_overview_expected.png and b/web/playwright/expected/firefox_a4_overview_expected.png differ diff --git a/web/playwright/expected/firefox_a7_image_expected.png b/web/playwright/expected/firefox_a7_image_expected.png index bc760b3..b9950b9 100644 Binary files a/web/playwright/expected/firefox_a7_image_expected.png and b/web/playwright/expected/firefox_a7_image_expected.png differ diff --git a/web/playwright/expected/firefox_c6onA4_image_expected.png b/web/playwright/expected/firefox_c6onA4_image_expected.png index c780938..00a3a93 100644 Binary files a/web/playwright/expected/firefox_c6onA4_image_expected.png and b/web/playwright/expected/firefox_c6onA4_image_expected.png differ diff --git a/web/playwright/expected/firefox_letter_image_expected.png b/web/playwright/expected/firefox_letter_image_expected.png index ba144e8..e51d037 100644 Binary files a/web/playwright/expected/firefox_letter_image_expected.png and b/web/playwright/expected/firefox_letter_image_expected.png differ diff --git a/web/playwright/expected/webkit_a4_image_expected.png b/web/playwright/expected/webkit_a4_image_expected.png index a38b13b..a78a006 100644 Binary files a/web/playwright/expected/webkit_a4_image_expected.png and b/web/playwright/expected/webkit_a4_image_expected.png differ diff --git a/web/playwright/expected/webkit_a4_overview_expected.png b/web/playwright/expected/webkit_a4_overview_expected.png index c7493b0..9704a64 100644 Binary files a/web/playwright/expected/webkit_a4_overview_expected.png and b/web/playwright/expected/webkit_a4_overview_expected.png differ diff --git a/web/playwright/expected/webkit_a7_image_expected.png b/web/playwright/expected/webkit_a7_image_expected.png index 084bc1a..903112c 100644 Binary files a/web/playwright/expected/webkit_a7_image_expected.png and b/web/playwright/expected/webkit_a7_image_expected.png differ diff --git a/web/playwright/expected/webkit_c6onA4_image_expected.png b/web/playwright/expected/webkit_c6onA4_image_expected.png index 6f70758..b12cc2e 100644 Binary files a/web/playwright/expected/webkit_c6onA4_image_expected.png and b/web/playwright/expected/webkit_c6onA4_image_expected.png differ diff --git a/web/playwright/expected/webkit_letter_image_expected.png b/web/playwright/expected/webkit_letter_image_expected.png index 90d1124..adad15b 100644 Binary files a/web/playwright/expected/webkit_letter_image_expected.png and b/web/playwright/expected/webkit_letter_image_expected.png differ