001
014
015 package com.liferay.portal.tools;
016
017 import com.liferay.portal.kernel.dao.db.DB;
018 import com.liferay.portal.kernel.dao.db.DBFactoryUtil;
019 import com.liferay.portal.kernel.util.FileUtil;
020 import com.liferay.portal.kernel.util.StringUtil;
021 import com.liferay.portal.util.InitUtil;
022
023 import java.io.IOException;
024
025 import java.util.Map;
026
027
032 public class DBBuilder {
033
034 public static void main(String[] args) {
035 Map<String, String> arguments = ArgumentsUtil.parseArguments(args);
036
037 InitUtil.initWithSpring(true);
038
039 String databaseName = arguments.get("db.database.name");
040
041 String databaseTypesString = arguments.get("db.database.types");
042
043 String[] databaseTypes = null;
044
045 if (databaseTypesString == null) {
046 databaseTypes = DB.TYPE_ALL;
047 }
048 else {
049 databaseTypes = StringUtil.split(databaseTypesString);
050 }
051
052 String sqlDir = arguments.get("db.sql.dir");
053
054 new DBBuilder(databaseName, databaseTypes, sqlDir);
055
056 System.exit(0);
057 }
058
059 public DBBuilder(
060 String databaseName, String[] databaseTypes, String sqlDir) {
061
062 try {
063 _databaseName = databaseName;
064 _databaseTypes = databaseTypes;
065
066 if (!sqlDir.endsWith("/WEB-INF/sql")) {
067 _buildSQLFile(sqlDir, "portal");
068 _buildSQLFile(sqlDir, "portal-minimal");
069 _buildSQLFile(sqlDir, "portal-tables");
070 }
071 else {
072 _buildSQLFile(sqlDir, "tables");
073 }
074
075 _buildSQLFile(sqlDir, "indexes");
076 _buildSQLFile(sqlDir, "sequences");
077 _buildSQLFile(sqlDir, "update-5.0.1-5.1.0");
078 _buildSQLFile(sqlDir, "update-5.1.1-5.1.2");
079 _buildSQLFile(sqlDir, "update-5.1.2-5.2.0");
080 _buildSQLFile(sqlDir, "update-5.2.0-5.2.1");
081 _buildSQLFile(sqlDir, "update-5.2.2-5.2.3");
082 _buildSQLFile(sqlDir, "update-5.2.3-6.0.0");
083 _buildSQLFile(sqlDir, "update-5.2.5-6.0.0");
084 _buildSQLFile(sqlDir, "update-5.2.7-6.0.0");
085 _buildSQLFile(sqlDir, "update-5.2.8-6.0.5");
086 _buildSQLFile(sqlDir, "update-6.0.0-6.0.1");
087 _buildSQLFile(sqlDir, "update-6.0.1-6.0.2");
088 _buildSQLFile(sqlDir, "update-6.0.2-6.0.3");
089 _buildSQLFile(sqlDir, "update-6.0.4-6.0.5");
090 _buildSQLFile(sqlDir, "update-6.0.5-6.0.6");
091 _buildSQLFile(sqlDir, "update-6.0.6-6.1.0");
092 _buildSQLFile(sqlDir, "update-6.0.12-6.1.0");
093 _buildSQLFile(sqlDir, "update-6.1.0-6.1.1");
094 _buildSQLFile(sqlDir, "update-6.1.1-6.2.0");
095
096 _buildCreateFile(sqlDir);
097 }
098 catch (Exception e) {
099 e.printStackTrace();
100 }
101 }
102
103 private void _buildCreateFile(String sqlDir) throws IOException {
104 for (int i = 0; i < _databaseTypes.length; i++) {
105 String databaseType = _databaseTypes[i];
106
107 if (databaseType.equals(DB.TYPE_HYPERSONIC) ||
108 databaseType.equals(DB.TYPE_INTERBASE) ||
109 databaseType.equals(DB.TYPE_JDATASTORE) ||
110 databaseType.equals(DB.TYPE_SAP)) {
111
112 continue;
113 }
114
115 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
116
117 if (db != null) {
118 if (!sqlDir.endsWith("/WEB-INF/sql")) {
119 db.buildCreateFile(sqlDir, _databaseName);
120 }
121 else {
122 db.buildCreateFile(sqlDir, _databaseName, DB.POPULATED);
123 }
124 }
125 }
126 }
127
128 private void _buildSQLFile(String sqlDir, String fileName)
129 throws IOException {
130
131 if (!FileUtil.exists(sqlDir + "/" + fileName + ".sql")) {
132 return;
133 }
134
135 for (int i = 0; i < _databaseTypes.length; i++) {
136 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
137
138 if (db != null) {
139 db.buildSQLFile(sqlDir, fileName);
140 }
141 }
142 }
143
144 private String _databaseName;
145 private String[] _databaseTypes;
146
147 }