1
22
23 package com.liferay.portal.dao.db;
24
25 import com.liferay.portal.kernel.dao.db.DB;
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
39 public class FirebirdDB extends BaseDB {
40
41 public static DB 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 = removeInserts(template);
51 template = removeNull(template);
52
53 return template;
54 }
55
56 protected FirebirdDB() {
57 super(TYPE_FIREBIRD);
58 }
59
60 protected FirebirdDB(String type) {
61 super(type);
62 }
63
64 protected String buildCreateFileContent(String databaseName, int population)
65 throws IOException {
66
67 String suffix = getSuffix(population);
68
69 StringBuilder sb = new StringBuilder();
70
71 sb.append(
72 "create database '" + databaseName +
73 ".gdb' page_size 8192 user 'sysdba' password 'masterkey';\n");
74 sb.append(
75 "connect '" + databaseName +
76 ".gdb' user 'sysdba' password 'masterkey';\n");
77 sb.append(
78 readSQL(
79 "../sql/portal" + suffix + "/portal" + suffix + "-firebird.sql",
80 _FIREBIRD[0], ";\n"));
81
82 return sb.toString();
83 }
84
85 protected String getServerName() {
86 return "firebird";
87 }
88
89 protected String[] getTemplate() {
90 return _FIREBIRD;
91 }
92
93 protected String reword(String data) throws IOException {
94 BufferedReader br = new BufferedReader(new StringReader(data));
95
96 StringBuilder sb = new StringBuilder();
97
98 String line = null;
99
100 while ((line = br.readLine()) != null) {
101 if (line.startsWith(ALTER_COLUMN_NAME)) {
102 String[] template = buildColumnNameTokens(line);
103
104 line = StringUtil.replace(
105 "alter table @table@ alter column \"@old-column@\" to " +
106 "\"@new-column@\";",
107 REWORD_TEMPLATE, template);
108 }
109 else if (line.startsWith(ALTER_COLUMN_TYPE)) {
110 String[] template = buildColumnTypeTokens(line);
111
112 line = StringUtil.replace(
113 "alter table @table@ alter column \"@old-column@\" " +
114 "type @type@;",
115 REWORD_TEMPLATE, template);
116 }
117
118 sb.append(line);
119 sb.append("\n");
120 }
121
122 br.close();
123
124 return sb.toString();
125 }
126
127 private static String[] _FIREBIRD = {
128 "--", "1", "0",
129 "'01/01/1970'", "current_timestamp",
130 " blob", " smallint", " timestamp",
131 " double precision", " integer", " int64",
132 " varchar(4000)", " blob", " varchar",
133 "", "commit"
134 };
135
136 private static FirebirdDB _instance = new FirebirdDB();
137
138 }