1 /*
2 * $Id: GHDirectory.java 2993 2011-11-24 19:51:48Z andrewinkler $
3 * ============================================================================
4 * Project gluehloch-homepage-core
5 * Copyright (c) 2004-2007 by Andre Winkler. All rights reserved.
6 * ============================================================================
7 * GNU LESSER GENERAL PUBLIC LICENSE
8 * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
9 *
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 *
24 */
25
26 package de.awtools.homegen.directory;
27
28 import java.util.Iterator;
29 import java.util.List;
30
31 import de.awtools.homegen.directory.snippet.SnippetHtmlFile;
32
33 /**
34 * Schnittstelle für die Verwaltung eines Verzeichnisses.
35 *
36 * @version $LastChangedRevision: 2993 $ $LastChangedDate: 2011-11-24 20:51:48 +0100 (Thu, 24 Nov 2011) $
37 * @author by Andre Winkler, $LastChangedBy: andrewinkler $
38 *
39 * @since 1.3
40 */
41 public interface GHDirectory extends GHEntry {
42
43 /**
44 * Liefert <code>true</code>, wenn dies das Wurzelverzeichnis der
45 * Webpräsenz ist.
46 *
47 * @return Siehe Methodenbeschreibung.
48 *
49 * @see #getLevelFromRoot()
50 */
51 public boolean isRootDir();
52
53 /**
54 * Das übergeordnete Verzeichnis. Kann <code>null</code> sein, dann ist
55 * dies das Wurzelverzeichnis.
56 *
57 * @return Das übergeordnete Verzeichnis.
58 */
59 public GHDirectory getParent();
60
61 /**
62 * Liefert das Root-Verzeichnis für diese Verzeichnishierarchie.
63 *
64 * @return Das Wurzelverzeichnis.
65 */
66 public GHDirectory getRoot();
67
68 /**
69 * Liefert alle Unterverzeichnisse.
70 *
71 * @return Unterverzeichnisse.
72 */
73 public List<GHDirectory> getDirectories();
74
75 /**
76 * Liefert das Verzeichnis mit dem übergebenen Namen. Es werden
77 * <b>keine</b> Unterverzeichnisse durchsucht.
78 *
79 * @param name Der Name des gesuchten Verzeichnisses.
80 * @return Das gefundene Verzeichnis oder <code>null</code> wenn keins
81 * gefunden.
82 */
83 public GHDirectory getDirectory(String name);
84
85 /**
86 * Fügt ein Unterverzeichnis dem Verzeichnis hinzu.
87 *
88 * @param directory Ein Unterverzeichnis.
89 */
90 public void addDirectory(GHDirectory directory);
91
92 /**
93 * Liefert die {@link SnippetHtmlFile}s die sich in diesem Verzeichnis
94 * befinden.
95 *
96 * @return Die {@link SnippetHtmlFile}s die diesem Verzeichnis zugeordnet sind.
97 */
98 public List<GHFile> getFiles();
99
100 /**
101 * Iterator über alle Dateien in dem Verzeichnis und allen
102 * Unterverzeichnissen.
103 *
104 * @return Iterator über alle Dateien und Unterdateien.
105 */
106 public Iterator<GHFile> iterator();
107
108 /**
109 * Liefert alle Dateien aus allen Verzeichnissen und Unterverzeichnissen.
110 *
111 * @return Alle Dateien aus allen Unterverzeichnissen.
112 */
113 public List<GHFile> getAllFiles();
114
115 /**
116 * Sucht nach einer Datei mit dem angegebenen Namen. Es werden <b>keine</b>
117 * Unterverzeichnisse durchsucht!
118 *
119 * @param name Der Name der gesuchten Datei.
120 * @return Die gefundene Datei.
121 */
122 public GHFile getFile(String name);
123
124 /**
125 * Startet die Bearbeitung aller Verzeichnisse und Unterverzeichnisse
126 * durch einen {@link FileWorker}.
127 *
128 * @param fileWorker Bearbeitet eine Datei.
129 */
130 public void apply(FileWorker fileWorker);
131
132 /**
133 * Sucht nach einem {@link GHFile}, welches dem übergebenen File ähnlich
134 * ist in Dateiname und Pfad.
135 *
136 * @param findme Ein Muster der zu suchenden Datei.
137 * @return Die gefundene Datei oder <code>null</code> wenn nichts gefunden.
138 */
139 public GHFile findFile(GHFile findme);
140
141 /**
142 * Sucht nach einem {@link GHFile}, welches dem übergebenen File ähnlich
143 * ist in Dateiname und Pfad. Die Datei-Extension wird bei dem Vergleich,
144 * von <code>findMe</code> ignoriert und der Parameter
145 * <code>fileExtension</code> für die Suche herangezogen.
146 *
147 * @param findme Ein Muster der zu suchenden Datei.
148 * @param fileExtension .
149 * @return Die gefundene Datei oder <code>null</code> wenn nichts gefunden.
150 */
151 public GHFile findFile(GHFile findme, String fileExtension);
152
153 /**
154 * Fügt eine Datei dem Verzeichnis hinzu.
155 *
156 * @param file Die Datei, die diesem Verzeichnis zugeordnet werden soll.
157 */
158 public void addFile(GHFile file);
159
160 }