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
030 public class DBBuilder {
031
032 public static void main(String[] args) {
033 InitUtil.initWithSpring();
034
035 if (args.length == 1) {
036 new DBBuilder(args[0], DB.TYPE_ALL);
037 }
038 else if (args.length == 2) {
039 new DBBuilder(args[0], StringUtil.split(args[1]));
040 }
041 else {
042 throw new IllegalArgumentException();
043 }
044 }
045
046 public DBBuilder(String databaseName, String[] databaseTypes) {
047 try {
048 _databaseName = databaseName;
049 _databaseTypes = databaseTypes;
050
051 String sqlDir = System.getProperty("sql.dir", "../sql");
052
053 _buildSQLFile(sqlDir, "portal");
054 _buildSQLFile(sqlDir, "portal-minimal");
055 _buildSQLFile(sqlDir, "indexes");
056 _buildSQLFile(sqlDir, "sequences");
057 _buildSQLFile(sqlDir, "tables");
058 _buildSQLFile(sqlDir, "update-4.2.0-4.3.0");
059 _buildSQLFile(sqlDir, "update-4.3.0-4.3.1");
060 _buildSQLFile(sqlDir, "update-4.3.1-4.3.2");
061 _buildSQLFile(sqlDir, "update-4.3.2-4.3.3");
062 _buildSQLFile(sqlDir, "update-4.3.3-4.3.4");
063 _buildSQLFile(sqlDir, "update-4.3.6-4.4.0");
064 _buildSQLFile(sqlDir, "update-4.4.0-5.0.0");
065 _buildSQLFile(sqlDir, "update-5.0.1-5.1.0");
066 _buildSQLFile(sqlDir, "update-5.1.1-5.1.2");
067 _buildSQLFile(sqlDir, "update-5.1.2-5.2.0");
068 _buildSQLFile(sqlDir, "update-5.2.0-5.2.1");
069 _buildSQLFile(sqlDir, "update-5.2.2-5.2.3");
070 _buildSQLFile(sqlDir, "update-5.2.3-6.0.0");
071 _buildSQLFile(sqlDir, "update-5.2.5-6.0.0");
072 _buildSQLFile(sqlDir, "update-5.2.7-6.0.0");
073 _buildSQLFile(sqlDir, "update-5.2.8-6.0.3");
074 _buildSQLFile(sqlDir, "update-6.0.0-6.0.1");
075 _buildSQLFile(sqlDir, "update-6.0.1-6.0.2");
076 _buildSQLFile(sqlDir, "update-6.0.2-6.0.3");
077
078 _buildCreateFile(sqlDir);
079 }
080 catch (Exception e) {
081 e.printStackTrace();
082 }
083 }
084
085 private void _buildCreateFile(String sqlDir) throws IOException {
086 for (int i = 0; i < _databaseTypes.length; i++) {
087 String databaseType = _databaseTypes[i];
088
089 if (databaseType.equals(DB.TYPE_HYPERSONIC) ||
090 databaseType.equals(DB.TYPE_INTERBASE) ||
091 databaseType.equals(DB.TYPE_JDATASTORE) ||
092 databaseType.equals(DB.TYPE_SAP)) {
093
094 continue;
095 }
096
097 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
098
099 if (db != null) {
100 if (sqlDir.equals("../sql")) {
101 db.buildCreateFile(sqlDir, _databaseName);
102 }
103 else {
104 db.buildCreateFile(sqlDir, _databaseName, DB.POPULATED);
105 }
106 }
107 }
108 }
109
110 private void _buildSQLFile(String sqlDir, String fileName)
111 throws IOException {
112
113 if (!FileUtil.exists(sqlDir + "/" + fileName + ".sql")) {
114 return;
115 }
116
117 for (int i = 0; i < _databaseTypes.length; i++) {
118 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
119
120 if (db != null) {
121 db.buildSQLFile(sqlDir, fileName);
122 }
123 }
124 }
125
126 private String _databaseName;
127 private String[] _databaseTypes;
128
129 }