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.5");
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 _buildSQLFile(sqlDir, "update-6.0.4-6.0.5");
078
079 _buildCreateFile(sqlDir);
080 }
081 catch (Exception e) {
082 e.printStackTrace();
083 }
084 }
085
086 private void _buildCreateFile(String sqlDir) throws IOException {
087 for (int i = 0; i < _databaseTypes.length; i++) {
088 String databaseType = _databaseTypes[i];
089
090 if (databaseType.equals(DB.TYPE_HYPERSONIC) ||
091 databaseType.equals(DB.TYPE_INTERBASE) ||
092 databaseType.equals(DB.TYPE_JDATASTORE) ||
093 databaseType.equals(DB.TYPE_SAP)) {
094
095 continue;
096 }
097
098 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
099
100 if (db != null) {
101 if (sqlDir.equals("../sql")) {
102 db.buildCreateFile(sqlDir, _databaseName);
103 }
104 else {
105 db.buildCreateFile(sqlDir, _databaseName, DB.POPULATED);
106 }
107 }
108 }
109 }
110
111 private void _buildSQLFile(String sqlDir, String fileName)
112 throws IOException {
113
114 if (!FileUtil.exists(sqlDir + "/" + fileName + ".sql")) {
115 return;
116 }
117
118 for (int i = 0; i < _databaseTypes.length; i++) {
119 DB db = DBFactoryUtil.getDB(_databaseTypes[i]);
120
121 if (db != null) {
122 db.buildSQLFile(sqlDir, fileName);
123 }
124 }
125 }
126
127 private String _databaseName;
128 private String[] _databaseTypes;
129
130 }