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