1
22
23 package com.liferay.portal.tools.sql;
24
25 import com.liferay.portal.kernel.util.StringUtil;
26
27 import java.io.BufferedReader;
28 import java.io.IOException;
29 import java.io.StringReader;
30
31
39 public class HypersonicUtil extends DBUtil {
40
41 public static DBUtil getInstance() {
42 return _instance;
43 }
44
45 public String buildSQL(String template) throws IOException {
46 template = convertTimestamp(template);
47 template = replaceTemplate(template, getTemplate());
48
49 template = reword(template);
50 template = StringUtil.replace(template, "\\'", "''");
51
52 return template;
53 }
54
55 protected HypersonicUtil() {
56 super(TYPE_HYPERSONIC);
57 }
58
59 protected void buildCreateFile(String databaseName, boolean minimal) {
60 }
61
62 protected String getServerName() {
63 return "hypersonic";
64 }
65
66 protected String[] getTemplate() {
67 return _HYPERSONIC;
68 }
69
70 protected String reword(String data) throws IOException {
71 BufferedReader br = new BufferedReader(new StringReader(data));
72
73 StringBuilder sb = new StringBuilder();
74
75 String line = null;
76
77 while ((line = br.readLine()) != null) {
78 if (line.startsWith(ALTER_COLUMN_TYPE)) {
79 String[] template = buildColumnTypeTokens(line);
80
81 line = StringUtil.replace(
82 "alter table @table@ alter column @type@ @nullable@;",
83 REWORD_TEMPLATE, template);
84 }
85 else if (line.startsWith(ALTER_COLUMN_NAME)) {
86 String[] template = buildColumnNameTokens(line);
87
88 line = StringUtil.replace(
89 "alter table @table@ alter column @old-column@ rename to " +
90 "@new-column@;",
91 REWORD_TEMPLATE, template);
92 }
93
94 sb.append(line);
95 sb.append("\n");
96 }
97
98 br.close();
99
100 return sb.toString();
101 }
102
103 private static String[] _HYPERSONIC = {
104 "//", "true", "false",
105 "'1970-01-01'", "now()",
106 " binary", " bit", " timestamp",
107 " double", " int", " bigint",
108 " longvarchar", " longvarchar", " varchar",
109 "", "commit"
110 };
111
112 private static HypersonicUtil _instance = new HypersonicUtil();
113
114 }