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}