a73bbc45d95ee44148038f695a68e7ee51b6c0af
[scilab.git] / scilab / modules / helptools / src / java / org / scilab / modules / helptools / TemplateHandler.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.helptools;
14
15 import java.io.File;
16 import java.io.FileOutputStream;
17 import java.io.OutputStream;
18 import java.io.IOException;
19 import java.io.OutputStreamWriter;
20 import java.io.BufferedReader;
21 import java.io.FileReader;
22 import java.nio.charset.Charset;
23
24 /**
25  * Class to handle a template
26  * @author Calixte DENIZET
27  */
28 public class TemplateHandler {
29
30     private String[] array;
31     private TemplateFiller filler;
32
33     public TemplateHandler(TemplateFiller filler, File f) {
34         this.filler = filler;
35         parseFile(f);
36     }
37
38     public void generateFileFromTemplate(String fileName, String id, String contents) {
39         try {
40             OutputStream out = new FileOutputStream(fileName);
41             OutputStreamWriter writer = new OutputStreamWriter(out, Charset.forName("UTF-8"));
42
43             for (int i = 0; i < array.length; i += 2) {
44                 writer.append(array[i]);
45                 String str = "";
46                 if (i + 1 < array.length) {
47                     if (array[i + 1].equals("content")) {
48                         str = contents;
49                     } else if (array[i + 1].equals("top")) {
50                         str = filler.makeTop(id);
51                     } else if (array[i + 1].equals("previous")) {
52                         str = filler.makePrevious(id);
53                     } else if (array[i + 1].equals("next")) {
54                         str = filler.makeNext(id);
55                     } else if (array[i + 1].equals("path")) {
56                         str = filler.makePath(id);
57                     } else if (array[i + 1].equals("title")) {
58                         str = filler.makeTitle(id);
59                     } else if (array[i + 1].equals("subtitle")) {
60                         str = filler.makeSubtitle(id);
61                     } else if (array[i + 1].equals("toclist")) {
62                         str = filler.makeTocList(id);
63                     } else if (array[i + 1].equals("lastmodified")) {
64                         str = filler.makeLastModified(id);
65                     } else if (array[i + 1].equals("generationdate")) {
66                         str = filler.makeGenerationDate(id);
67                     } else if (array[i + 1].equals("version")) {
68                         str = filler.makeVersion(id);;
69                     } else if (array[i + 1].equals("start")) {
70                         str = filler.makeStart(id);
71                     }
72                     writer.append(str);
73                 }
74             }
75
76             writer.flush();
77             writer.close();
78             out.flush();
79             out.close();
80         } catch (IOException e) {
81             System.err.println(e);
82         }
83     }
84
85     private void parseFile(File f) {
86         try {
87             BufferedReader reader = new BufferedReader(new FileReader(f));
88             String line = null;
89             StringBuilder stringBuilder = new StringBuilder();
90             while ((line = reader.readLine()) != null ) {
91                 stringBuilder.append(line);
92                 stringBuilder.append("\n");
93             }
94
95             array = stringBuilder.toString().split("(<!--<)|(>-->)");
96         } catch (IOException e) {
97             e.printStackTrace();
98         }
99     }
100 }