1 /*
2 * $Id: GHEntry.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.io.File;
29 import java.util.List;
30
31 /**
32 * Gemeinsame Schnittstelle von {@link GHDirectory} und {@link GHFile}.
33 *
34 * @version $LastChangedRevision: 2993 $ $LastChangedDate: 2011-11-24 20:51:48 +0100 (Thu, 24 Nov 2011) $
35 * @author by Andre Winkler, $LastChangedBy: andrewinkler $
36 *
37 * @since 1.5
38 */
39 public interface GHEntry {
40
41 /** Kennzeichnung/Name für das Wurzelverzeichnis. */
42 public final String ROOT_DIR = "/";
43
44 /**
45 * Der Name des Verzeichnisses. Für das Root-Verzeichnis ist das
46 * {@link #ROOT_DIR}.
47 *
48 * @return Verzeichnisname.
49 */
50 public String getName();
51
52 /**
53 * Liefert einen Pfad von der Wurzel bis in dieses Verzeichnis. Die
54 * einzelnen Verzeichnisse auf diesem Pfad sind '/' separiert.
55 *
56 * @return Eine '/' separierte Aufzählung von Verzeichnissen.
57 */
58 public String getPath();
59
60 /**
61 * Liefert den {@link GHDirectory} Pfad von der Wurzel bis zu diesem
62 * Eintrag.
63 *
64 * @return Eine Liste mit dem {@link GHDirectory}-Pfad von der Wurzel bis
65 * zu diesem Eintrag.
66 */
67 public List<GHDirectory> getDirectoryPath();
68
69 /**
70 * Liefert das <code>File</code> Objekt für dieses Verzeichnis. Für das
71 * Maven-Homepage-Plugin ist dies i.d.R. das Verzeichnis
72 * <code>target/www-prep</code>.
73 *
74 * @return Das <code>File</code> Objekt zu diesem Verzeichnis.
75 */
76 public File getFile();
77
78 /**
79 * Prüft, ob das übergebene {@link GHEntry} ein jüngeres Erstellungsdatum
80 * besitzt.
81 *
82 * @param file Mit diesem {@link GHEntry} findet der Vergleich statt.
83 * @return Liefert <code>true</code>, wenn das übergebene {@link GHEntry}
84 * ein jüngeres Erstellungsdatum besitzt.
85 */
86 public boolean isNewer(GHEntry file);
87
88 /**
89 * Liefert die Anzahl der <code>cd ..</code> Aufrufe bis man sich im
90 * Root-Verzeichnis der Webpräsenz befindet. Liefert diese Methode
91 * <code>0</code> zurück, ist dies das Root-SnippetDirectory der
92 * Anwendung.
93 *
94 * @return Anzahl der Stufen bis in das Root-Verzeichnis der Webpräsenz.
95 */
96 public int getLevelFromRoot();
97
98 /**
99 * Liefert eine Skizze der Verzeichnisstruktur.
100 *
101 * @return Siehe Beschreibung.
102 */
103 public String printGraph();
104
105 }