Update project structure to org.onap.aaf
[aaf/inno.git] / xgen / src / main / java / org / onap / aaf / xgen / XGenBuff.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 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  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package org.onap.aaf.xgen;\r
24 \r
25 import java.io.IOException;\r
26 \r
27 import org.onap.aaf.inno.env.APIException;\r
28 import org.onap.aaf.inno.env.Env;\r
29 import org.onap.aaf.inno.env.Trans;\r
30 import org.onap.aaf.inno.env.util.StringBuilderWriter;\r
31 import org.onap.aaf.xgen.html.State;\r
32 \r
33 public class XGenBuff<G extends XGen<G>> {\r
34         private G xgen;\r
35         private StringBuilder sb;\r
36         // private String forward, backward;\r
37         \r
38         public XGenBuff(int flags, CacheGen<G> cg) {\r
39                 sb = new StringBuilder();\r
40                 xgen = cg.create(flags, new StringBuilderWriter(sb));\r
41         }\r
42 \r
43         /**\r
44          * Normal case of building up Cached HTML without transaction info\r
45          * \r
46          * @param cache\r
47          * @param code\r
48          * @throws APIException\r
49          * @throws IOException\r
50          */\r
51         public void run(Cache<G> cache, Code<G> code) throws APIException, IOException {\r
52                 code.code(cache, xgen);\r
53         }\r
54 \r
55         /**\r
56          * Special Case where code is dynamic, so give access to State and Trans info\r
57          *  \r
58          * @param state\r
59          * @param trans\r
60          * @param cache\r
61          * @param code\r
62          * @throws APIException\r
63          * @throws IOException\r
64          */\r
65         @SuppressWarnings({ "unchecked", "rawtypes" })\r
66         public void run(State<Env> state, Trans trans, Cache cache, DynamicCode code) throws APIException, IOException {\r
67                         code.code(state, trans, cache, xgen);\r
68         }\r
69         \r
70         public int getIndent() {\r
71                 return xgen.getIndent();\r
72         }\r
73 \r
74         public void setIndent(int indent) {\r
75                 xgen.setIndent(indent);\r
76         }\r
77 \r
78         public Section<G> newSection() {\r
79                 Section<G> s = new Section<G>();\r
80                 s.indent = xgen.getIndent();\r
81                 s.forward = sb.toString();\r
82                 sb.setLength(0);\r
83                 s.backward = sb.toString();\r
84                 sb.setLength(0);\r
85                 return s;\r
86         }\r
87 }\r