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
022 import java.io.IOException;
023
024 import java.util.Map;
025
026
032 public class DBBuilder {
033
034 public static void main(String[] args) throws Exception {
035 ToolDependencies.wireBasic();
036
037 Map<String, String> arguments = ArgumentsUtil.parseArguments(args);
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 try {
055 new DBBuilder(databaseName, databaseTypes, sqlDir);
056 }
057 catch (Exception e) {
058 ArgumentsUtil.processMainException(arguments, e);
059 }
060 }
061
062 public DBBuilder(String databaseName, String[] databaseTypes, String sqlDir)
063 throws Exception {
064
065 _databaseName = databaseName;
066 _databaseTypes = databaseTypes;
067
068 if (!sqlDir.endsWith("/META-INF/sql") &&
069 !sqlDir.endsWith("/WEB-INF/sql")) {
070
071 _buildSQLFile(sqlDir, "portal");
072 _buildSQLFile(sqlDir, "portal-tables");
073 }
074 else {
075 _buildSQLFile(sqlDir, "tables");
076 }
077
078 _buildSQLFile(sqlDir, "indexes");
079 _buildSQLFile(sqlDir, "sequences");
080 _buildSQLFile(sqlDir, "update-5.0.1-5.1.0");
081 _buildSQLFile(sqlDir, "update-5.1.1-5.1.2");
082 _buildSQLFile(sqlDir, "update-5.1.2-5.2.0");
083 _buildSQLFile(sqlDir, "update-5.2.0-5.2.1");
084 _buildSQLFile(sqlDir, "update-5.2.2-5.2.3");
085 _buildSQLFile(sqlDir, "update-5.2.3-6.0.0");
086 _buildSQLFile(sqlDir, "update-5.2.5-6.0.0");
087 _buildSQLFile(sqlDir, "update-5.2.7-6.0.0");
088 _buildSQLFile(sqlDir, "update-5.2.8-6.0.5");
089 _buildSQLFile(sqlDir, "update-6.0.0-6.0.1");
090 _buildSQLFile(sqlDir, "update-6.0.1-6.0.2");
091 _buildSQLFile(sqlDir, "update-6.0.2-6.0.3");
092 _buildSQLFile(sqlDir, "update-6.0.4-6.0.5");
093 _buildSQLFile(sqlDir, "update-6.0.5-6.0.6");
094 _buildSQLFile(sqlDir, "update-6.0.6-6.1.0");
095 _buildSQLFile(sqlDir, "update-6.0.12-6.1.0");
096 _buildSQLFile(sqlDir, "update-6.1.0-6.1.1");
097 _buildSQLFile(sqlDir, "update-6.1.1-6.2.0");
098
099 _buildCreateFile(sqlDir);
100 }
101
102 private void _buildCreateFile(String sqlDir) throws IOException {
103 for (String databaseType : _databaseTypes) {
104 if (databaseType.equals(DB.TYPE_HYPERSONIC) ||
105 databaseType.equals(DB.TYPE_INTERBASE) ||
106 databaseType.equals(DB.TYPE_JDATASTORE) ||
107 databaseType.equals(DB.TYPE_SAP)) {
108
109 continue;
110 }
111
112 DB db = DBFactoryUtil.getDB(databaseType);
113
114 if (db != null) {
115 if (!sqlDir.endsWith("/WEB-INF/sql")) {
116 db.buildCreateFile(sqlDir, _databaseName);
117 }
118 else {
119 db.buildCreateFile(sqlDir, _databaseName, DB.DEFAULT);
120 }
121 }
122 }
123 }
124
125 private void _buildSQLFile(String sqlDir, String fileName)
126 throws IOException {
127
128 if (!FileUtil.exists(sqlDir + "/" + fileName + ".sql")) {
129 return;
130 }
131
132 for (String _databaseType : _databaseTypes) {
133 DB db = DBFactoryUtil.getDB(_databaseType);
134
135 if (db != null) {
136 db.buildSQLFile(sqlDir, fileName);
137 }
138 }
139 }
140
141 private final String _databaseName;
142 private final String[] _databaseTypes;
143
144 }