diff --git a/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java b/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java index 31773d6..87ac342 100644 --- a/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java +++ b/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java @@ -25,6 +25,9 @@ import ru.ulstu.extractor.model.LineChange; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; import java.nio.file.Path; import java.time.Instant; import java.util.ArrayList; @@ -141,10 +144,22 @@ public class GitRepositoryService { } private File getProjectDirectoryFile(String url) { + validateUrl(url); return Path.of(getProjectDirectory(url)) .toFile(); } + private void validateUrl(String url) { + if (url == null || url.isEmpty()) { + throw new RuntimeException("Repository url must not empty"); + } + try { + new URL(url).toURI(); + } catch (MalformedURLException | URISyntaxException e) { + throw new RuntimeException("Repository url not valid"); + } + } + private boolean projectDirExists(File file) { return file.exists(); } diff --git a/src/main/java/ru/ulstu/extractor/service/IndexService.java b/src/main/java/ru/ulstu/extractor/service/IndexService.java index 4ffdb62..62925db 100644 --- a/src/main/java/ru/ulstu/extractor/service/IndexService.java +++ b/src/main/java/ru/ulstu/extractor/service/IndexService.java @@ -48,15 +48,16 @@ public class IndexService { public void index(@NotNull String repositoryUrl, @NotNull String branchName) throws GitAPIException, IOException { Repository repository = repositoryRepository.findByUrl(repositoryUrl); if (repository == null) { - repositoryRepository.save(new Repository(repositoryUrl)); + repository = repositoryRepository.save(new Repository(repositoryUrl)); } Branch branch = branchRepository.findByRepositoryAndName(repository, branchName); if (branch == null) { branch = branchRepository.save(new Branch(repository, branchName)); } List commits = gitRepositoryService.getCommits(repositoryUrl, branchName); - commitRepository.deleteAll(branch.getCommits()); + List commitsToRemove = branch.getCommits(); branch.getCommits().clear(); + commitRepository.deleteAll(commitsToRemove); branch.setCommits(commits); branchRepository.save(branch); } diff --git a/src/main/resources/templates/indexNewRepository.html b/src/main/resources/templates/indexNewRepository.html index 56da344..894024c 100644 --- a/src/main/resources/templates/indexNewRepository.html +++ b/src/main/resources/templates/indexNewRepository.html @@ -11,11 +11,12 @@
-
@@ -34,7 +35,8 @@
-
+