1 /**
2 This file is part of GoldenGate Project (named also GoldenGate or GG).
3
4 Copyright 2009, Frederic Bregier, and individual contributors by the @author
5 tags. See the COPYRIGHT.txt in the distribution for a full listing of
6 individual contributors.
7
8 All GoldenGate Project is free software: you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as published
10 by the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 GoldenGate is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GoldenGate . If not, see <http://www.gnu.org/licenses/>.
20 */
21 package goldengate.ftp.core.data.handler;
22
23 import goldengate.ftp.core.session.FtpSession;
24
25 import org.jboss.netty.channel.Channel;
26 import org.jboss.netty.channel.ExceptionEvent;
27
28 /**
29 * This class is to be implemented in order to allow Business actions according
30 * to FTP service
31 *
32 * @author Frederic Bregier
33 *
34 */
35 public abstract class DataBusinessHandler {
36 /**
37 * NettyHandler that holds this DataBusinessHandler
38 */
39 private DataNetworkHandler dataNetworkHandler = null;
40
41 /**
42 * Ftp SessionInterface
43 */
44 private FtpSession session = null;
45
46 /**
47 * Constructor with no argument (mandatory)
48 *
49 */
50 public DataBusinessHandler() {
51 // nothing to do
52 }
53
54 /**
55 * Call when the DataNetworkHandler is created
56 *
57 * @param dataNetworkHandler
58 * the dataNetworkHandler to set
59 */
60 public void setDataNetworkHandler(DataNetworkHandler dataNetworkHandler) {
61 this.dataNetworkHandler = dataNetworkHandler;
62 }
63
64 /**
65 * @return the dataNetworkHandler
66 */
67 public DataNetworkHandler getDataNetworkHandler() {
68 return dataNetworkHandler;
69 }
70
71 /**
72 * Called when the connection is opened
73 *
74 * @param session
75 * the session to set
76 */
77 public void setFtpSession(FtpSession session) {
78 this.session = session;
79 }
80
81 // Some helpful functions
82 /**
83 *
84 * @return the ftpSession
85 */
86 public FtpSession getFtpSession() {
87 return session;
88 }
89
90 /**
91 * Is executed when the channel is closed, just before the test on the
92 * finish status.
93 */
94 public abstract void executeChannelClosed();
95
96 /**
97 * To Clean the session attached objects for Data Network
98 */
99 protected abstract void cleanSession();
100
101 /**
102 * Clean the DataBusinessHandler
103 *
104 */
105 public void clear() {
106 cleanSession();
107 }
108
109 /**
110 * Is executed when the channel is connected after the handler is on, before
111 * answering OK or not on connection, except if the global service is going
112 * to shutdown.
113 *
114 * @param channel
115 */
116 public abstract void executeChannelConnected(Channel channel);
117
118 /**
119 * Run when an exception is get before the channel is closed.
120 *
121 * @param e
122 */
123 public abstract void exceptionLocalCaught(ExceptionEvent e);
124 }