/*
* RRepositoryDirectoryImpl.java
*
* Copyright (C) 2010-2016, Microsoft Corporation
*
* This program is licensed to you under the terms of Version 2.0 of the
* Apache License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) for more details.
*
*/
package com.revo.deployr.client.core.impl;
import com.revo.deployr.client.RClientException;
import com.revo.deployr.client.RSecurityException;
import com.revo.deployr.client.core.RCoreResult;
import com.revo.deployr.client.core.RClientExecutor;
import com.revo.deployr.client.call.RCall;
import com.revo.deployr.client.call.repository.RepositoryDirectoryListCall;
import com.revo.deployr.client.call.repository.RepositoryDirectoryArchiveCall;
import com.revo.deployr.client.call.repository.RepositoryDirectoryRenameCall;
import com.revo.deployr.client.call.repository.RepositoryDirectoryUpdateCall;
import com.revo.deployr.client.call.repository.RepositoryDirectoryDeleteCall;
import com.revo.deployr.client.RRepositoryFile;
import com.revo.deployr.client.RRepositoryDirectory;
import com.revo.deployr.client.about.RRepositoryDirectoryDetails;
import com.revo.deployr.client.params.RepoAccessControlOptions;
import com.revo.deployr.client.params.RepoUploadOptions;
import com.revo.deployr.client.core.REndpoints;
import com.revo.deployr.client.util.REntityUtil;
import java.io.InputStream;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.net.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* DeployR repository directory.
*/
public class RRepositoryDirectoryImpl implements RRepositoryDirectory {
private Log log = LogFactory.getLog(RRepositoryDirectory.class);
RRepositoryDirectoryDetails about;
RLiveContext liveContext;
public RRepositoryDirectoryImpl(RRepositoryDirectoryDetails about,
RLiveContext liveContext) {
this.about = about;
this.liveContext = liveContext;
}
public RRepositoryDirectoryDetails about()
throws RClientException, RSecurityException {
return about;
}
public void update(RepoAccessControlOptions options,
List<RRepositoryFile> files)
throws RClientException, RSecurityException {
List<String> fileNames = null;
if(files != null) {
fileNames = new ArrayList<String>();
for(RRepositoryFile repoFile : files) {
fileNames.add(repoFile.about().filename);
}
}
RCall rCall = new RepositoryDirectoryUpdateCall(about, options, fileNames);
RCoreResult rResult = liveContext.executor.processCall(rCall);
boolean success = rResult.isSuccess();
String error = rResult.getError();
int errorCode = rResult.getErrorCode();
log.debug("update: repoDirectory, success=" + success + " error=" + error + " errorCode=" + errorCode);
}
public void upload(InputStream fileStream, RepoUploadOptions options)
throws RClientException, RSecurityException {
}
public RRepositoryDirectory archive(String archiveDirectoryName,
List<RRepositoryFile> files)
throws RClientException, RSecurityException {
List<String> fileNames = null;
if(files != null) {
fileNames = new ArrayList<String>();
for(RRepositoryFile repoFile : files) {
fileNames.add(repoFile.about().filename);
}
}
RCall rCall = new RepositoryDirectoryArchiveCall(about, archiveDirectoryName, fileNames);
RCoreResult rResult = liveContext.executor.processCall(rCall);
Map repoDirectoryMap = (Map) rResult.getRepoDirectory();
log.debug("archive: rResult.getRepoDirectory=" + repoDirectoryMap);
RRepositoryDirectoryDetails details = REntityUtil.getRepositoryDirectoryDetails(repoDirectoryMap, liveContext);
boolean success = rResult.isSuccess();
String error = rResult.getError();
int errorCode = rResult.getErrorCode();
log.debug("archive: repoDirectory, success=" + success + " error=" + error + " errorCode=" + errorCode);
return new RRepositoryDirectoryImpl(details, liveContext);
}
public RRepositoryDirectory rename(String newDirectoryName)
throws RClientException, RSecurityException {
RCall rCall = new RepositoryDirectoryRenameCall(about, newDirectoryName);
RCoreResult rResult = liveContext.executor.processCall(rCall);
Map repoDirectoryMap = (Map) rResult.getRepoDirectory();
log.debug("rename: rResult.getRepoDirectory=" + repoDirectoryMap);
RRepositoryDirectoryDetails details = REntityUtil.getRepositoryDirectoryDetails(repoDirectoryMap, liveContext);
boolean success = rResult.isSuccess();
String error = rResult.getError();
int errorCode = rResult.getErrorCode();
log.debug("rename: repoDirectory, success=" + success + " error=" + error + " errorCode=" + errorCode);
return new RRepositoryDirectoryImpl(details, liveContext);
}
public URL download(List<RRepositoryFile> files)
throws RClientException, RSecurityException {
String fileNames = null;
if(files != null) {
for(RRepositoryFile repoFile : files) {
if(fileNames != null) {
fileNames = fileNames + "," + repoFile.about().filename;
} else {
fileNames = repoFile.about().filename;
}
}
}
return null;
}
public void delete()
throws RClientException, RSecurityException {
RCall rCall = new RepositoryDirectoryDeleteCall(about);
RCoreResult rResult = liveContext.executor.processCall(rCall);
boolean success = rResult.isSuccess();
String error = rResult.getError();
int errorCode = rResult.getErrorCode();
log.debug("delete: repoDirectory, success=" + success + " error=" + error + " errorCode=" + errorCode);
}
}