177716187cd91c443358cbcd73eb8178469a6cd0
[appc.git] / appc-config / appc-config-generator / provider / src / main / java / org / onap / sdnc / config / generator / tool / EscapeUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.sdnc.config.generator.tool;
26
27 import org.apache.commons.lang3.StringUtils;
28
29 public class EscapeUtils {
30
31     public EscapeUtils() {
32         // TODO Auto-generated constructor stub
33     }
34
35     public static String escapeSql(String str) {
36         if (str == null) {
37             return null;
38         }
39         String[] searchList = new String[]{"'", "\\"};
40         String[] replacementList = new String[]{"''", "\\\\"};
41         return StringUtils.replaceEach(str, searchList, replacementList);
42     }
43
44     // Added for E2E defect 266908 Quote issue
45     public static String unescapeSql(String str) {
46         if (str == null) {
47             return null;
48         }
49         String[] searchList = new String[]{"''"};
50         String[] replacementList = new String[]{"'"};
51         return StringUtils.replaceEach(str, searchList, replacementList);
52     }
53
54
55     // For Generic Purpose
56     public static String escapeString(String s) {
57         if (s == null) {
58             return null;
59         }
60         int length = s.length();
61         int newLength = length;
62         for (char ch : s.toCharArray()) {
63             switch (ch) {
64                 case '\\':
65                 case '\"':
66                 case '\'':
67                 case '\0':
68                     newLength += 1;
69                     break;
70                 default:
71                     break;
72             }
73         }
74         if (length == newLength) {
75             // nothing to escape in the string
76             return s;
77         }
78         StringBuilder builder = new StringBuilder(newLength);
79         for (char ch : s.toCharArray()) {
80             switch (ch) {
81                 case '\\':
82                     builder.append("\\\\");
83                     break;
84                 case '\"':
85                     builder.append("\\\"");
86                     break;
87                 case '\'':
88                     builder.append("\\\'");
89                     break;
90                 case '\0':
91                     builder.append("\\0");
92                     break;
93                 default:
94                     builder.append(ch);
95             }
96         }
97         return builder.toString();
98     }
99 }