001package co.codewizards.cloudstore.rest.client.request; 002 003import static java.util.Objects.*; 004 005import javax.ws.rs.client.WebTarget; 006import javax.ws.rs.core.MediaType; 007 008import co.codewizards.cloudstore.core.dto.ChangeSetDto; 009 010public class GetChangeSetDto extends AbstractRequest<ChangeSetDto> { 011 012 private final String repositoryName; 013 private final boolean localSync; 014 private final Long lastSyncToRemoteRepoLocalRepositoryRevisionSynced; 015 016 public GetChangeSetDto(final String repositoryName, final boolean localSync, final Long lastSyncToRemoteRepoLocalRepositoryRevisionSynced) { 017 this.repositoryName = requireNonNull(repositoryName, "repositoryName"); 018 this.localSync = localSync; 019 this.lastSyncToRemoteRepoLocalRepositoryRevisionSynced = lastSyncToRemoteRepoLocalRepositoryRevisionSynced; 020 } 021 022 @Override 023 public ChangeSetDto execute() { 024 WebTarget webTarget = createWebTarget(getPath(ChangeSetDto.class), urlEncode(repositoryName)); 025 026 if (localSync) 027 webTarget = webTarget.queryParam("localSync", localSync); 028 029 if (lastSyncToRemoteRepoLocalRepositoryRevisionSynced != null) 030 webTarget = webTarget.queryParam("lastSyncToRemoteRepoLocalRepositoryRevisionSynced", lastSyncToRemoteRepoLocalRepositoryRevisionSynced); 031 032 final ChangeSetDto changeSetDto = assignCredentials(webTarget.request(MediaType.APPLICATION_XML)).get(ChangeSetDto.class); 033 return changeSetDto; 034 } 035 036 @Override 037 public boolean isResultNullable() { 038 return false; 039 } 040 041}