ParseDBStructFile.java
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 4k
Category:

Java Develop

Development Platform:

Java

  1. /*
  2.  * Copyright (c) JForum Team
  3.  * All rights reserved.
  4.  * 
  5.  * Redistribution and use in source and binary forms, 
  6.  * with or without modification, are permitted provided 
  7.  * that the following conditions are met:
  8.  * 
  9.  * 1) Redistributions of source code must retain the above 
  10.  * copyright notice, this list of conditions and the 
  11.  * following  disclaimer.
  12.  * 2)  Redistributions in binary form must reproduce the 
  13.  * above copyright notice, this list of conditions and 
  14.  * the following disclaimer in the documentation and/or 
  15.  * other materials provided with the distribution.
  16.  * 3) Neither the name of "Rafael Steil" nor 
  17.  * the names of its contributors may be used to endorse 
  18.  * or promote products derived from this software without 
  19.  * specific prior written permission.
  20.  * 
  21.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT 
  22.  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
  23.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
  24.  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  25.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  26.  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
  27.  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  29.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  30.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
  31.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  32.  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  33.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
  34.  * IN CONTRACT, STRICT LIABILITY, OR TORT 
  35.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  36.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  37.  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
  38.  * 
  39.  * Created on 16/11/2005 18:42:42
  40.  * The JForum Project
  41.  * http://www.jforum.net
  42.  */
  43. package net.jforum.view.install;
  44. import java.io.BufferedReader;
  45. import java.io.FileReader;
  46. import java.util.ArrayList;
  47. import java.util.List;
  48. import net.jforum.exceptions.ForumException;
  49. /**
  50.  * @author Rafael Steil
  51.  * @version $Id: ParseDBStructFile.java,v 1.7 2007/07/28 14:17:13 rafaelsteil Exp $
  52.  */
  53. public class ParseDBStructFile
  54. {
  55.     public static List parse(String filename)
  56. {
  57. List statements = new ArrayList();
  58. BufferedReader reader = null;
  59. try {
  60. reader = new BufferedReader(new FileReader(filename));
  61. StringBuffer sb = new StringBuffer(512);
  62. boolean processing = false;
  63. char delimiter = ';';
  64. String[] creators = { "CREATE INDEX", "CREATE TABLE", "CREATE SEQUENCE", "DROP TABLE", "IF EXISTS",
  65. "DROP SEQUENCE", "DROP INDEX" };
  66.             String line ;
  67. while ((line = reader.readLine()) != null) {
  68. if (line.length() == 0) {
  69. continue;
  70. }
  71. char charAt = line.charAt(0);
  72. // Ignore comments
  73. if (charAt == '-' || charAt == '#') {
  74. continue;
  75. }
  76. if (processing) {
  77. sb.append(line);
  78. if (line.indexOf(delimiter) > -1) {
  79. sb.delete(sb.length() - 1, sb.length());
  80. statements.add(sb.toString());
  81. processing = false;
  82. }
  83. }
  84. else {
  85. for (int i = 0; i < creators.length; i++) {
  86. if (line.indexOf(creators[i]) > -1) {
  87. sb.delete(0, sb.length());
  88. if (line.indexOf(delimiter) > -1) {
  89. if (line.indexOf(';') > -1) {
  90. line = line.replace(';', ' ');
  91. }
  92. statements.add(line);
  93. }
  94. else {
  95. sb.append(line);
  96. processing = true;
  97. }
  98. break;
  99. }
  100. }
  101. }
  102. }
  103. }
  104.         catch (Exception e)
  105.         {
  106.             throw new ForumException(e);
  107.         }
  108.         finally {
  109. if (reader != null) {
  110. try { reader.close(); }
  111.                 catch (Exception e) {
  112.                     // catch close BufferedReader
  113.                 }
  114. }
  115. }
  116. return statements;
  117. }
  118. }