diff --git a/build.gradle b/build.gradle index 2b5087269..562320a27 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ apply plugin: 'org.springframework.boot' apply plugin: 'propdeps' group = 'micheljung' -version = '0.5.4' +version = '0.5.5' sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/src/main/java/com/faforever/api/mod/ModRepository.java b/src/main/java/com/faforever/api/mod/ModRepository.java index 5075a48a0..b75ada3ac 100644 --- a/src/main/java/com/faforever/api/mod/ModRepository.java +++ b/src/main/java/com/faforever/api/mod/ModRepository.java @@ -10,6 +10,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; + @Repository @Transactional(propagation = Propagation.MANDATORY) public interface ModRepository extends JpaRepository { @@ -30,4 +32,6 @@ public interface ModRepository extends JpaRepository { "AND NOT EXISTS (SELECT mod_id FROM mod_stats WHERE mod_id = id)", nativeQuery = true) @Modifying void insertModStats(@Param("displayName") String displayName); + + Optional findOneByDisplayName(String name); } diff --git a/src/main/java/com/faforever/api/mod/ModService.java b/src/main/java/com/faforever/api/mod/ModService.java index 3d6bcdf69..db4460ceb 100644 --- a/src/main/java/com/faforever/api/mod/ModService.java +++ b/src/main/java/com/faforever/api/mod/ModService.java @@ -95,10 +95,10 @@ public void processUploadedMod(Path uploadedFile, Player uploader) { private boolean modExists(String displayName, short version) { ModVersion probe = new ModVersion() - .setVersion(version) - .setMod(new Mod() - .setDisplayName(displayName) - ); + .setVersion(version) + .setMod(new Mod() + .setDisplayName(displayName) + ); return modVersionRepository.exists(Example.of(probe, ExampleMatcher.matching().withIgnoreCase())); } @@ -172,9 +172,9 @@ private String generateFolderName(String displayName, short version) { private String generateFileName(String displayName) { return Normalizer.normalize(displayName.toLowerCase(Locale.US) - .replace("..", ".") - .replaceAll("[/\\\\ ]", "_"), - Form.NFKC); + .replace("..", ".") + .replaceAll("[/\\\\ ]", "_"), + Form.NFKC); } private void store(com.faforever.commons.mod.Mod modInfo, Optional thumbnailPath, Player uploader, String zipFileName) { @@ -186,14 +186,13 @@ private void store(com.faforever.commons.mod.Mod modInfo, Optional thumbna .setFilename(MOD_PATH_PREFIX + zipFileName) .setIcon(thumbnailPath.map(path -> path.getFileName().toString()).orElse(null)); - List modVersions = new ArrayList<>(); - modVersions.add(modVersion); - - Mod mod = new Mod() - .setAuthor(modInfo.getAuthor()) - .setDisplayName(modInfo.getName()) - .setVersions(modVersions) - .setUploader(uploader); + Mod mod = modRepository.findOneByDisplayName(modInfo.getName()) + .orElse(new Mod() + .setAuthor(modInfo.getAuthor()) + .setDisplayName(modInfo.getName()) + .setVersions(new ArrayList<>()) + .setUploader(uploader)); + mod.getVersions().add(modVersion); modVersion.setMod(mod);