001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.camel.component.file.remote; 018 019 import java.net.URI; 020 021 import org.apache.camel.RuntimeCamelException; 022 023 public class RemoteFileConfiguration implements Cloneable { 024 private String protocol; 025 private String username; 026 private String host; 027 private int port; 028 private String password; 029 private String file; 030 private boolean binary; 031 private boolean directory = true; 032 033 public RemoteFileConfiguration() { 034 } 035 036 public RemoteFileConfiguration(URI uri) { 037 configure(uri); 038 } 039 040 public RemoteFileConfiguration copy() { 041 try { 042 return (RemoteFileConfiguration)clone(); 043 } catch (CloneNotSupportedException e) { 044 throw new RuntimeCamelException(e); 045 } 046 } 047 048 public String toString() { 049 return protocol + ":\\" + username + "@" + host + ":" + port + "/" + directory; 050 } 051 052 public void configure(URI uri) { 053 setProtocol(uri.getScheme()); 054 setDefaultPort(); 055 setUsername(uri.getUserInfo()); 056 setHost(uri.getHost()); 057 setPort(uri.getPort()); 058 setFile(uri.getPath()); 059 } 060 061 protected void setDefaultPort() { 062 if ("ftp".equalsIgnoreCase(protocol)) { 063 setPort(21); 064 } else if ("sftp".equalsIgnoreCase(protocol)) { 065 setPort(22); 066 } 067 } 068 069 public String getFile() { 070 return file; 071 } 072 073 public void setFile(String file) { 074 this.file = file; 075 } 076 077 public String getHost() { 078 return host; 079 } 080 081 public void setHost(String host) { 082 this.host = host; 083 } 084 085 public int getPort() { 086 return port; 087 } 088 089 public void setPort(int port) { 090 if (port != -1) { // use default 091 this.port = port; 092 } 093 } 094 095 public String getPassword() { 096 return password; 097 } 098 099 public void setPassword(String password) { 100 this.password = password; 101 } 102 103 public String getProtocol() { 104 return protocol; 105 } 106 107 public void setProtocol(String protocol) { 108 this.protocol = protocol; 109 } 110 111 public String getUsername() { 112 return username; 113 } 114 115 public void setUsername(String username) { 116 this.username = username; 117 } 118 119 public boolean isBinary() { 120 return binary; 121 } 122 123 public void setBinary(boolean binary) { 124 this.binary = binary; 125 } 126 127 public boolean isDirectory() { 128 return directory; 129 } 130 131 public void setDirectory(boolean directory) { 132 this.directory = directory; 133 } 134 135 public String dump() { 136 return "RemoteFileConfiguration{" + "protocol='" + protocol + '\'' + ", username='" + username + '\'' + ", host='" + host + '\'' + ", port=" + port + ", password='" + password + '\'' 137 + ", file='" + file + '\'' + ", binary=" + binary + ", directory=" + directory + '}'; 138 } 139 }