@ -1,22 +1,18 @@
package ru.ulstu.extractor.controller ;
package ru.ulstu.extractor.controller ;
import org.eclipse.jgit.api.errors.GitAPIException ;
import org.springframework.data.domain.Page ;
import org.springframework.data.domain.Page ;
import org.springframework.data.domain.PageRequest ;
import org.springframework.stereotype.Controller ;
import org.springframework.stereotype.Controller ;
import org.springframework.ui.Model ;
import org.springframework.ui.Model ;
import org.springframework.web.bind.annotation.ModelAttribute ;
import org.springframework.web.bind.annotation.ModelAttribute ;
import org.springframework.web.bind.annotation.PostMapping ;
import org.springframework.web.bind.annotation.RequestMapping ;
import org.springframework.web.bind.annotation.RequestMapping ;
import org.springframework.web.bind.annotation.RequestMethod ;
import org.springframework.web.bind.annotation.RequestMethod ;
import org.springframework.web.bind.annotation.RequestParam ;
import org.springframework.web.bind.annotation.RequestParam ;
import ru.ulstu.extractor.model.Commit ;
import ru.ulstu.extractor.model.Commit ;
import ru.ulstu.extractor.model.OffsetablePageRequest ;
import ru.ulstu.extractor.model.mvc.FilterForm ;
import ru.ulstu.extractor.model.mvc.FilterForm ;
import ru.ulstu.extractor.service.CommitService ;
import ru.ulstu.extractor.service.FilteringService ;
import ru.ulstu.extractor.service.FilteringService ;
import ru.ulstu.extractor.service. GitRepository Service;
import ru.ulstu.extractor.service. Index Service;
import java.io.IOException ;
import java.util.List ;
import java.util.List ;
import java.util.Optional ;
import java.util.Optional ;
import java.util.stream.Collectors ;
import java.util.stream.Collectors ;
@ -25,18 +21,15 @@ import java.util.stream.IntStream;
@Controller
@Controller
public class GitFilteringController {
public class GitFilteringController {
private final FilteringService filteringService ;
private final FilteringService filteringService ;
private final GitRepositoryService gitRepositoryService ;
private final IndexService indexService ;
private final CommitService commitService ;
public GitFilteringController ( FilteringService filteringService ,
public GitFilteringController ( FilteringService filteringService ,
GitRepositoryService gitRepositoryService ,
IndexService indexService ) {
CommitService commitService ) {
this . filteringService = filteringService ;
this . filteringService = filteringService ;
this . gitRepositoryService = gitRepositoryService ;
this . indexService = indexService ;
this . commitService = commitService ;
}
}
@PostMapping ( "/sendFilter" )
/ * @PostMapping ( "/sendFilter" )
public String sendFilter ( @ModelAttribute FilterForm filterForm , Model model ) throws GitAPIException , IOException {
public String sendFilter ( @ModelAttribute FilterForm filterForm , Model model ) throws GitAPIException , IOException {
List < Commit > list = gitRepositoryService . getCommits ( filterForm . getUrl ( ) , filterForm . getBranch ( ) ) ;
List < Commit > list = gitRepositoryService . getCommits ( filterForm . getUrl ( ) , filterForm . getBranch ( ) ) ;
model . addAttribute ( "commits" , list ) ;
model . addAttribute ( "commits" , list ) ;
@ -45,7 +38,7 @@ public class GitFilteringController {
return "filtering" ;
return "filtering" ;
}
}
return "resultRepo" ;
return "resultRepo" ;
}
} * /
@RequestMapping ( value = "/filtering" , method = RequestMethod . GET )
@RequestMapping ( value = "/filtering" , method = RequestMethod . GET )
public String listCommits (
public String listCommits (
@ -54,18 +47,23 @@ public class GitFilteringController {
@RequestParam ( "page" ) Optional < Integer > page ,
@RequestParam ( "page" ) Optional < Integer > page ,
@RequestParam ( "size" ) Optional < Integer > size ,
@RequestParam ( "size" ) Optional < Integer > size ,
@RequestParam String repositoryUrl ,
@RequestParam String repositoryUrl ,
@RequestParam String branchName ) throws GitAPIException , IOException {
@RequestParam String branchName ) {
int currentPage = page . orElse ( 1 ) ;
int currentPage = page . orElse ( 1 ) ;
int pageSize = size . orElse ( 5 ) ;
int pageSize = size . orElse ( 5 ) ;
Page < Commit > commitPage = commitService . findPaginated ( PageRequest . of ( currentPage - 1 , pageSize ) , repositoryUrl , branchName ) ;
model. addAttribute ( "commitPage" , commitPage ) ;
Page< Commit > commitsPage = indexService . getCommits ( repositoryUrl , branchName , new OffsetablePageRequest ( currentPage , pageSize ) ) ;
int totalPages = commit Page. getTotalPages ( ) ;
int totalPages = commit s Page. getTotalPages ( ) ;
if ( totalPages > 0 ) {
if ( totalPages > 0 ) {
List < Integer > pageNumbers = IntStream . rangeClosed ( 1 , totalPages )
List < Integer > pageNumbers = IntStream . rangeClosed ( 1 , totalPages )
. boxed ( )
. boxed ( )
. collect ( Collectors . toList ( ) ) ;
. collect ( Collectors . toList ( ) ) ;
model . addAttribute ( "pageNumbers" , pageNumbers ) ;
model . addAttribute ( "pageNumbers" , pageNumbers ) ;
}
}
filterForm = new FilterForm ( ) ;
filterForm . setCommitsPage ( commitsPage ) ;
filterForm . setBranch ( branchName ) ;
filterForm . setUrl ( repositoryUrl ) ;
model . addAttribute ( "filterForm" , filterForm ) ;
return "filtering" ;
return "filtering" ;
}
}
}
}