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