View Javadoc

1   /**************************************************************************
2   Copyright 2005 Webstersmalley
3   
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7   
8       http://www.apache.org/licenses/LICENSE-2.0
9   
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15  *************************************************************************/
16  
17  
18  package com.webstersmalley.picweb.offline;
19  
20  import java.io.File;
21  import java.io.FileNotFoundException;
22  import java.util.Iterator;
23  import java.util.List;
24  
25  import org.apache.commons.logging.Log;
26  import org.apache.commons.logging.LogFactory;
27  
28  import com.webstersmalley.picweb.offline.config.ConfigurationModel;
29  import com.webstersmalley.picweb.utils.FolderContents;
30  import com.webstersmalley.picweb.utils.IOUtils;
31  import com.webstersmalley.picweb.utils.StringMapper;
32  
33  /***
34   * @author Matthew Smalley
35   */
36  public class HomepageGenerator
37  {
38  	/*** Logger for the class. */
39  	private static Log log = LogFactory.getLog(HomepageGenerator.class);
40  			
41  	private ConfigurationModel model;
42  	private StringMapper mapper;
43  	private TemplateModel template;
44  	private FolderContents folder;
45  	private int folderId = 0;
46  	
47  	/***
48  	 * @param model
49  	 * @param mapper
50  	 * @param template
51  	 * @param pictures
52  	 */
53  	public HomepageGenerator(ConfigurationModel model, StringMapper mapper, TemplateModel template, FolderContents folder)
54  	{
55  		this.model = model;
56  		this.mapper = mapper;
57  		this.template = template;
58  		this.folder = folder;
59  	}
60  	
61  	public void generate() throws FileNotFoundException
62  	{
63  		writeFramesetPage();
64  		writeHeaderPage();
65  		writeFooterPage();
66  		writeMainPage();
67  		writeContentsPage();
68  	}
69  	
70  	private void writeFramesetPage() throws FileNotFoundException
71  	{
72  		IOUtils.writeFile(model.getOutputFolder() + File.separator + "index.html", mapper.map(template.getFramesetPage()));
73  	}
74  
75  	private void writeHeaderPage() throws FileNotFoundException
76  	{
77  		IOUtils.writeFile(model.getOutputFolder() + File.separator + "header.html", mapper.map(template.getHeaderPage()));
78  	}
79  
80  	private void writeFooterPage() throws FileNotFoundException
81  	{
82  		IOUtils.writeFile(model.getOutputFolder() + File.separator + "footer.html", mapper.map(template.getFooterPage()));
83  	}
84  
85  	private void writeMainPage() throws FileNotFoundException
86  	{
87  		IOUtils.writeFile(model.getOutputFolder() + File.separator + "main.html", mapper.map(template.getMainPage()));
88  	}
89  
90  	private void writeContentsPage() throws FileNotFoundException
91  	{
92  		StringBuffer contents = new StringBuffer();
93  		contents.append(mapper.map(template.getContentsPageHeader()));
94  		contents.append(getFolderString(folder));
95  		contents.append(mapper.map(template.getContentsPageFooter()));
96  		IOUtils.writeFile(model.getOutputFolder() + File.separator + "contents.html", contents.toString());
97  	}
98  	
99  	private String getFolderString(FolderContents folder)
100 	{
101 		folderId++;
102 		String folderIdString = new Integer(folderId).toString();
103 		String childrenString = "";
104 		List children = folder.getChildren();
105 		Iterator it = children.iterator();
106 		while (it.hasNext())
107 		{
108 			FolderContents child = (FolderContents)it.next();
109 			childrenString += getFolderString(child);
110 		}
111 		mapper.addMapping("children", childrenString);
112 		mapper.addMapping("folder-id", folderIdString);
113 		mapper.addMapping("folder-path", folder.getRelativePath().replaceAll("////", "/").replaceAll("'", ""));
114 		if (folder.hasChildren())
115 		{
116 			mapper.addMapping("folder-expansion-image", mapper.map(template.getContentsPageImageChildren()));
117 		}
118 		else
119 		{
120 			mapper.addMapping("folder-expansion-image", mapper.map(template.getContentsPageImageNoChildren()));
121 		}
122 		mapper.addMapping("folder-name", folder.getDisplayName());
123 		return mapper.map(template.getContentsPageFolder());
124 	}
125 
126 }