/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.publication.deploy.provider;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemManager;
import org.apache.commons.vfs2.FileSystemOptions;
import org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ewcms.publication.deploy.DeployOperatorable;
/**
* 发布指定的资源到ftp服务器上
*
* @author wangwei
*/
public class FtpDeployOperator extends DeployOperatorBase{
private static final Logger logger = LoggerFactory.getLogger(FtpDeployOperator.class);
protected static final String DEFAULT_PORT = "21";
public static class Builder extends BuilderBase{
public Builder(String hostname,String path){
this.hostname = hostname;
this.path = path;
}
@Override
public DeployOperatorable build() {
return new FtpDeployOperator(this);
}
}
public FtpDeployOperator(Builder builder) {
super(builder);
}
@Override
protected FileObject getRootFileObject(FileSystemOptions opts,BuilderBase builder,FileSystemManager manager) throws FileSystemException {
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, false);
String port = StringUtils.isBlank(builder.getPort()) ? DEFAULT_PORT :builder.getPort();
StringBuilder connBuilder = new StringBuilder();
connBuilder.append("ftp://");
connBuilder.append(builder.getHostname()).append(":").append(port);
connBuilder.append(builder.getPath());
String conn = connBuilder.toString();
logger.debug("uri is {}",conn);
return manager.resolveFile(conn, opts);
}
}