remove Id keyword
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreListener.java
1 /*
2  * jSite2 - UserInterface.java -
3  * Copyright © 2008 David Roden
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 package net.pterodactylus.jsite.core;
21
22 import net.pterodactylus.jsite.project.Project;
23
24 /**
25  * Interface definition for user interfaces.
26  * 
27  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
28  */
29 public interface CoreListener {
30
31         //
32         // project configuration
33         //
34
35         /**
36          * Notifies a listener that loading the projects finished successfully.
37          * 
38          * @param directory
39          *            The directory the nodes were loaded from
40          */
41         public void loadingProjectsDone(String directory);
42
43         /**
44          * Notifies all listeners that loading the projects has failed.
45          * 
46          * @param directory
47          *            The directory the projects were tried to load from
48          * @param throwable
49          *            The exception that occured while saving, if any
50          */
51         public void loadingProjectsFailed(String directory, Throwable throwable);
52
53         /**
54          * Notifies a listener that the projects were successfully saved to the
55          * given directory.
56          * 
57          * @param directory
58          *            The directory the projects were saved to
59          */
60         public void savingProjectsDone(String directory);
61
62         /**
63          * Notifies a listener that saving the projects has failed.
64          * 
65          * @param directory
66          *            The directory the projects were to be saved to
67          * @param throwable
68          *            The exception that occured when saving the projects, if any
69          */
70         public void savingProjectsFailed(String directory, Throwable throwable);
71
72         //
73         // node configuration
74         //
75
76         /**
77          * Notifies a listener that the nodes were successfully loaded.
78          * 
79          * @param directory
80          *            The directory the nodes were loaded from
81          */
82         public void loadingNodesDone(String directory);
83
84         /**
85          * Notifies a listener that loading the nodes has failed.
86          * 
87          * @param directory
88          *            The directory the nodes were loaded from
89          * @param throwable
90          *            The exception that occured while loading the nodes
91          */
92         public void loadingNodesFailed(String directory, Throwable throwable);
93
94         /**
95          * Notifies a listener that the nodes were successfully saved.
96          * 
97          * @param directory
98          *            The directory the nodes were saved to
99          */
100         public void savingNodesDone(String directory);
101
102         /**
103          * Notifies a listener that saving the nodes has failed.
104          * 
105          * @param directory
106          *            The directory the nodes were saved to
107          * @param throwable
108          *            The exception that occured while saving the nodes
109          */
110         public void savingNodesFailed(String directory, Throwable throwable);
111
112         //
113         // basic core functionality
114         //
115
116         /**
117          * Notifies all listeners that the core has loaded.
118          */
119         public void coreLoaded();
120
121         /**
122          * Notifies a listener that the core was stopped.
123          */
124         public void coreStopped();
125
126         //
127         // node stuff
128         //
129
130         /**
131          * Notifies a listener that a node was added to the core.
132          * 
133          * @param node
134          *            The node that was added.
135          */
136         public void nodeAdded(Node node);
137
138         /**
139          * Notifies a listener that a node was removed from the core. Before a node
140          * is removed, it will be disconnected (and
141          * {@link #nodeDisconnected(Node, Throwable)} will be called).
142          * 
143          * @param node
144          *            The node that was removed
145          */
146         public void nodeRemoved(Node node);
147
148         /**
149          * Notifies all listeners that the core started connecting to the given
150          * node. Before a node is connected, it will be added (and
151          * {@link #nodeAdded(Node)} will be called).
152          * 
153          * @param node
154          *            The node that is being connected
155          */
156         public void nodeConnecting(Node node);
157
158         /**
159          * Notifies all listeners that the core connected to the given node.
160          * 
161          * @param node
162          *            The node that is connected
163          */
164         public void nodeConnected(Node node);
165
166         /**
167          * Notifies a listener that a connection to a node has failed.
168          * 
169          * @param node
170          *            The node that could not be connected
171          * @param cause
172          *            The cause of the failure
173          */
174         public void nodeConnectionFailed(Node node, Throwable cause);
175
176         /**
177          * Notifies all listeners that the core disconnected from the given node.
178          * 
179          * @param node
180          *            The node that was diconnected
181          * @param throwable
182          *            The exception that caused the disconnect, or <code>null</code>
183          *            if there was no exception
184          */
185         public void nodeDisconnected(Node node, Throwable throwable);
186
187         //
188         // project insertion stuff
189         //
190
191         /**
192          * Notifies a listener that a project insert started.
193          * 
194          * @param project
195          *            The project that is now inserting
196          */
197         public void projectInsertStarted(Project project);
198
199         /**
200          * Notifies a listener that a project insert made progress.
201          * 
202          * @param project
203          *            The project that made progress
204          * @param totalBlocks
205          *            The number of total blocks
206          * @param requiredBlocks
207          *            The number of required blocks
208          * @param successfulBlocks
209          *            The number of successfully inserted blocks
210          * @param failedBlocks
211          *            The number of blocks that could not be inserted
212          * @param fatallyFailedBlocks
213          *            The number of blocks that can not be inserted even with
214          *            retries
215          * @param finalizedTotal
216          *            <code>true</code> if the number of total blocks is already
217          *            finalized, <code>false</code> otherwise
218          */
219         public void projectInsertProgressed(Project project, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal);
220
221         /**
222          * Notifies a listener that a project insert has generated a URI.
223          * 
224          * @param project
225          *            The project that generated a URI
226          * @param uri
227          *            The URI that was generated
228          */
229         public void projectInsertGeneratedURI(Project project, String uri);
230
231         /**
232          * Notifies a listener that a project insert has finished.
233          * 
234          * @param project
235          *            The project that has finished
236          * @param success
237          *            <code>true</code> if the project was inserted successfully,
238          *            <code>false</code> otherwise
239          */
240         public void projectInsertFinished(Project project, boolean success);
241
242 }