Code refactoring
[meviz.git] / src / main / java / eu / svjatoslav / meviz / htmlindexer / layouts / Layout.java
1 /*
2  * Meviz - Various tools collection to work with multimedia.
3  * Copyright (C) 2012 -- 2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of version 3 of the GNU Lesser General Public License
7  * or later as published by the Free Software Foundation.
8 */
9
10 package eu.svjatoslav.meviz.htmlindexer.layouts;
11
12 import eu.svjatoslav.meviz.htmlindexer.IndexingContext;
13 import eu.svjatoslav.meviz.htmlindexer.indexer.AbstractIndexer;
14 import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
15 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile;
16 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture;
17 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Video;
18
19 import java.util.List;
20
21 /**
22  * In order to have possibility of several different layouts per directory.
23  * Universal interface is defined.
24  * <p>
25  * Layout implementation is responsible for actual HTML generation.
26  */
27
28 public interface Layout {
29
30     /**
31      * Enlist directory.
32      */
33     void enlistDirectory(AbstractFile directory,
34                          DirectoryMetadata parentDirectoryMetadata);
35
36     /**
37      * Enlist simple file.
38      */
39     void enlistFile(AbstractFile file,
40                     DirectoryMetadata parentDirectoryMetadata);
41
42     /**
43      * Enlist image file.
44      */
45     void enlistImage(Picture picture,
46                      DirectoryMetadata parentDirectoryMetadata);
47
48     /**
49      * Enlist video file.
50      */
51     void enlistVideo(Video file);
52
53     /**
54      * Return layout specific suffix that will be appended between
55      * index(suffix).html of generated file. This way multiple layouts can
56      * coexist in the same directory, each residing in its own HTML file.
57      */
58     String getFileNameSuffix();
59
60     /**
61      * After necessary files have been enlisted for particular directory, use
62      * this method to retrieve generated HTML result.
63      */
64     String getHtml(final boolean showTitle,
65                    final boolean doHtmlHeaderAndFooter, DirectoryMetadata metadata)
66     ;
67
68     /**
69      * Initialize layout for particular directory.
70      */
71     void init(String galleryTitle, List<String> path,
72               final AbstractIndexer indexer, IndexingContext context);
73
74 }