Minor HTML Gen improvments
[aaf/authz.git] / misc / xgen / src / main / java / org / onap / aaf / misc / xgen / XGenBuff.java
1 /**\r
2  * ============LICENSE_START====================================================\r
3  * org.onap.aaf\r
4  * ===========================================================================\r
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.\r
6  * ===========================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END====================================================\r
19  *\r
20  */\r
21 \r
22 package org.onap.aaf.misc.xgen;\r
23 \r
24 import java.io.IOException;\r
25 \r
26 import org.onap.aaf.misc.env.APIException;\r
27 import org.onap.aaf.misc.env.Env;\r
28 import org.onap.aaf.misc.env.Trans;\r
29 import org.onap.aaf.misc.env.util.StringBuilderWriter;\r
30 import org.onap.aaf.misc.xgen.html.State;\r
31 \r
32 public class XGenBuff<G extends XGen<G>> {\r
33     private G xgen;\r
34     private StringBuilder sb;\r
35     // private String forward, backward;\r
36     \r
37     public XGenBuff(int flags, CacheGen<G> cg) {\r
38         sb = new StringBuilder();\r
39         xgen = cg.create(flags, new StringBuilderWriter(sb));\r
40     }\r
41 \r
42     /**\r
43      * Normal case of building up Cached HTML without transaction info\r
44      * \r
45      * @param cache\r
46      * @param code\r
47      * @throws APIException\r
48      * @throws IOException\r
49      */\r
50     public void run(Cache<G> cache, Code<G> code) throws APIException, IOException {\r
51         code.code(cache, xgen);\r
52     }\r
53 \r
54     /**\r
55      * Special Case where code is dynamic, so give access to State and Trans info\r
56      *  \r
57      * @param state\r
58      * @param trans\r
59      * @param cache\r
60      * @param code\r
61      * @throws APIException\r
62      * @throws IOException\r
63      */\r
64     @SuppressWarnings({ "unchecked", "rawtypes" })\r
65     public void run(State<Env> state, Trans trans, Cache cache, DynamicCode code) throws APIException, IOException {\r
66             code.code(state, trans, cache, xgen);\r
67     }\r
68     \r
69     public int getIndent() {\r
70         return xgen.getIndent();\r
71     }\r
72 \r
73     public void setIndent(int indent) {\r
74         xgen.setIndent(indent);\r
75     }\r
76 \r
77     public Section<G> newSection() {\r
78         Section<G> s = new Section<G>();\r
79         s.indent = xgen.getIndent();\r
80         s.forward = sb.toString();\r
81         sb.setLength(0);\r
82         s.backward = sb.toString();\r
83         sb.setLength(0);\r
84         return s;\r
85     }\r
86 }\r