View Javadoc

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 }