1 package com.rapide_act;
3 import java.io.BufferedInputStream;
4 import java.io.FileInputStream;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
9 import java.io.FileReader;
10 import java.io.FileWriter;
11 import java.io.BufferedWriter;
12 import java.io.BufferedReader;
13 import java.io.PrintWriter;
14 import java.io.PrintWriter;
15 import java.util.Date;
16 import java.util.ArrayList;
17 import java.util.Iterator;
18 import java.util.Properties;
19 import java.sql.Connection;
20 import java.sql.DriverManager;
21 import java.sql.ResultSet;
22 import java.sql.ResultSetMetaData;
23 import java.sql.SQLException;
24 import java.sql.PreparedStatement;
25 import java.sql.Timestamp;
29 public class RapideMetaLoader{
31 private String database = null;
33 public static void main(String args[]){
36 RapideMetaLoader RapideMetaLoader = new RapideMetaLoader(args[0]);
37 RapideMetaLoader.metaLoad();
39 RapideMetaLoader RapideMetaLoader = new RapideMetaLoader(null);
40 RapideMetaLoader.metaLoad();
42 } catch (Exception e) {
47 RapideMetaLoader(String _database) {
53 private void metaLoad(){
54 Connection conn = null;
55 PreparedStatement stmt = null;
56 BufferedReader br = null;
58 File subFolder = null;
59 String strLine = null;
60 String strMltLine = null;
62 String viewName = null;
63 String procName = null;
64 String [] flName = null;
65 File [] inFiles = null;
67 String [] sqlLine = null;
70 CmnAccessObjects dao = null;
74 cp.setProperty(database);
76 if (cp.dbType > cp.DB_TYPE_MYSQL || cp.dbType <0){
77 throw new Exception("
\83f
\81[
\83^
\83x
\81[
\83X
\82ª
\91Î
\8fÛ
\8aO
\82Å
\82·
\81B[" + cp.DB_TYPE_NAME[cp.dbType] + "]");
79 if(cp.inFolder != null){
80 folder = new File(cp.inFolder);
82 if (database != null){
83 folder = new File(cp.DEFAULT_IN_FOLDER + "/DDL_" + database.toUpperCase());
85 folder = new File(cp.DEFAULT_IN_FOLDER + "/DDL_" + cp.DB_TYPE_NAME[cp.dbType].toUpperCase());
88 CmnUtils.infoPrint("-->
\93ü
\97Í
\8c³
\83t
\83H
\83\8b\83_='" + folder + "'");
89 CmnUtils.infoPrint("
\83\81\83^
\83f
\81[
\83^
\83\8d\81[
\83h
\82ð
\8aJ
\8en
\82µ
\82Ü
\82µ
\82½
\81B");
92 dao = new CmnAccessObjects(cp);
96 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_FK], cp, true, false);
97 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_VIEW], cp, true, false);
98 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_PROCEDURE], cp, true, false);
99 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SYNONYM], cp, true, false);
100 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SEQUENCE], cp, true, false);
101 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.DROP_TABLE], cp, true, false);
103 subFolder = new File(folder + "/TABLES");
104 inFiles = subFolder.listFiles();
106 if(inFiles != null) {
107 for(int k=0;k<inFiles.length;k++){
108 flName = CmnUtils.splitDot(inFiles[k].getName());
110 executeSqlFile(dao, stmt, subFolder + "/" + inFiles[k].getName(), cp, false, false);
111 CmnUtils.infoPrint(String.format("%1$-42s","[TABLE] " + tbName) + "
\83\81\83^
\83f
\81[
\83^
\82ª
\83\8d\81[
\83h
\82³
\82ê
\82Ü
\82µ
\82½
\81B");
114 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY], cp, false, false);
115 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY], cp, false, false);
116 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX], cp, false, false);
117 subFolder = new File(folder + "/VIEWS");
118 inFiles = subFolder.listFiles();
120 if(inFiles != null) {
121 for(int k=0;k<inFiles.length;k++){
122 flName = CmnUtils.splitDot(inFiles[k].getName());
123 viewName = flName[0];
124 executeSqlFile(dao, stmt, subFolder + "/" + inFiles[k].getName(), cp, false, false);
125 CmnUtils.infoPrint(String.format("%1$-42s","[VIEW] " + viewName) + "
\83\81\83^
\83f
\81[
\83^
\82ª
\83\8d\81[
\83h
\82³
\82ê
\82Ü
\82µ
\82½
\81B");
128 subFolder = new File(folder + "/PROCEDURES");
129 inFiles = subFolder.listFiles();
131 if(inFiles != null) {
132 for(int k=0;k<inFiles.length;k++){
133 flName = CmnUtils.splitDot(inFiles[k].getName());
134 procName = flName[0];
135 executeSqlFile(dao, stmt, subFolder + "/" + inFiles[k].getName(), cp, false, true);
136 CmnUtils.infoPrint(String.format("%1$-42s","[PROCEDURE] " + procName) + "
\83\81\83^
\83f
\81[
\83^
\82ª
\83\8d\81[
\83h
\82³
\82ê
\82Ü
\82µ
\82½
\81B");
139 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SYNONYM], cp, false, false);
140 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SEQUENCE], cp, false, false);
141 executeSqlFile(dao, stmt, folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_FK], cp, false, false);
143 CmnUtils.infoPrint("
\83\81\83^
\83f
\81[
\83^
\83\8d\81[
\83h
\82ð
\8fI
\97¹
\82µ
\82Ü
\82µ
\82½
\81B");
145 } catch(SQLException se) {
147 CmnUtils.errorPrint(se.toString());
148 se.printStackTrace();
149 se = se.getNextException();
151 System.out.println(se.getMessage());
154 } catch (Exception see) {}
155 } catch (Exception e) {
157 CmnUtils.errorPrint(e.toString());
160 } catch (Exception ee) {}
172 } catch (Exception e) {}
176 private void executeSqlFile(CmnAccessObjects _dao, PreparedStatement _stmt, String _infile, CmnProps _cp, boolean _isResume, boolean _isReplace) throws Exception{
177 BufferedReader br = null;
178 String strLine = null;
179 String strMltLine = "";
180 String [] sqlLine = null;
182 File infile = new File(_infile);
183 if (infile.exists()){
184 br = new BufferedReader(new InputStreamReader(new FileInputStream(_infile), _cp.fileEncoding));
185 while((strLine=br.readLine()) != null){
186 if (_cp.dbType == _cp.DB_TYPE_SQLSERVER){
187 if(!strLine.equals("GO")){
188 strMltLine += _cp.inColLineSeparator + strLine;
191 strMltLine += _cp.inColLineSeparator + strLine;
194 strMltLine += _cp.lineSeparator;
196 if(!strMltLine.equals("")){
198 if (_cp.dbType == _cp.DB_TYPE_ORACLE){
199 _stmt = _dao.prepareSql(strMltLine.replaceAll("\r",""));
201 _stmt = _dao.prepareSql(strMltLine);
203 _stmt.executeUpdate();
208 } catch (Exception e) {
215 sqlLine = CmnUtils.split(strMltLine, _cp.SQL_TERMINATOR[_cp.dbType]);
216 for(int l = 0;l<sqlLine.length;l++){
217 if(!sqlLine[l].equals("") && !sqlLine[l].equals(_cp.lineSeparator)){
219 CmnUtils.debugPrint("'" + sqlLine[l] + "'");
220 if (_cp.dbType == _cp.DB_TYPE_ORACLE){
221 _stmt = _dao.prepareSql(sqlLine[l].replaceAll("\r",""));
223 _stmt = _dao.prepareSql(sqlLine[l]);
225 _stmt.executeUpdate();
230 } catch (Exception e) {