Adding more testcases to Misc xgen
[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