]> git.basschouten.com Git - openhab-addons.git/blob
962eedd155056a14d2e93f5b800e6775d6ccc67d
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.ftpupload.internal.ftp;
14
15 import java.io.IOException;
16 import java.io.InputStream;
17 import java.io.OutputStream;
18 import java.util.List;
19
20 import org.apache.ftpserver.ftplet.FtpFile;
21 import org.openhab.core.util.HexUtils;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 /**
26  * Simple FTP file implementation.
27  *
28  *
29  * @author Pauli Anttila - Initial contribution
30  */
31 public class SimpleFtpFile implements FtpFile {
32     private Logger logger = LoggerFactory.getLogger(SimpleFtpFile.class);
33
34     MyOutputStream file;
35
36     public byte[] getData() {
37         return file.getData();
38     }
39
40     @Override
41     public InputStream createInputStream(long arg0) throws IOException {
42         logger.trace("createInputStream: {}", arg0);
43         return null;
44     }
45
46     @Override
47     public OutputStream createOutputStream(long arg0) throws IOException {
48         logger.trace("createOutputStream: {}", arg0);
49         file = new MyOutputStream();
50         return file;
51     }
52
53     @Override
54     public boolean delete() {
55         logger.trace("delete");
56         return false;
57     }
58
59     @Override
60     public boolean doesExist() {
61         logger.trace("doesExist");
62         return false;
63     }
64
65     @Override
66     public String getAbsolutePath() {
67         logger.trace("getAbsolutePath");
68         return "/";
69     }
70
71     @Override
72     public String getGroupName() {
73         logger.trace("getGroupName");
74         return null;
75     }
76
77     @Override
78     public long getLastModified() {
79         logger.trace("getLastModified");
80         return 0;
81     }
82
83     @Override
84     public int getLinkCount() {
85         logger.trace("getLinkCount");
86         return 0;
87     }
88
89     @Override
90     public String getName() {
91         logger.trace("getName");
92         return "";
93     }
94
95     @Override
96     public String getOwnerName() {
97         logger.trace("getOwnerName");
98         return null;
99     }
100
101     @Override
102     public long getSize() {
103         logger.trace("getSize");
104         return 0;
105     }
106
107     @Override
108     public boolean isDirectory() {
109         logger.trace("isDirectory");
110         return false;
111     }
112
113     @Override
114     public boolean isFile() {
115         logger.trace("isFile");
116         return false;
117     }
118
119     @Override
120     public boolean isHidden() {
121         logger.trace("isHidden");
122         return false;
123     }
124
125     @Override
126     public boolean isReadable() {
127         logger.trace("isReadable");
128         return false;
129     }
130
131     @Override
132     public boolean isRemovable() {
133         logger.trace("isRemovable");
134         return false;
135     }
136
137     @Override
138     public boolean isWritable() {
139         logger.trace("isWritable");
140         return true;
141     }
142
143     @Override
144     public List<FtpFile> listFiles() {
145         logger.trace("listFiles");
146         return null;
147     }
148
149     @Override
150     public boolean mkdir() {
151         logger.trace("mkdir");
152         return false;
153     }
154
155     @Override
156     public boolean move(FtpFile arg0) {
157         logger.trace("move: {}", arg0);
158         return false;
159     }
160
161     @Override
162     public boolean setLastModified(long arg0) {
163         logger.trace("setLastModified: {}", arg0);
164         return false;
165     }
166
167     @Override
168     public Object getPhysicalFile() {
169         logger.trace("getPhysicalFile");
170         return null;
171     }
172
173     private class MyOutputStream extends OutputStream {
174         private StringBuilder data = new StringBuilder();
175
176         @Override
177         public void write(int b) throws IOException {
178             data.append(String.format("%02X", (byte) b));
179         }
180
181         public byte[] getData() {
182             try {
183                 byte[] d = HexUtils.hexToBytes(data.toString());
184                 logger.debug("File len: {}", d.length);
185                 return d;
186             } catch (IllegalArgumentException e) {
187                 logger.debug("Exception occured during data conversion: {}", e.getMessage());
188             }
189             return null;
190         }
191     }
192 }