1 24 package org.riotfamily.revolt.support; 25 26 import java.util.Iterator ; 27 28 import org.riotfamily.revolt.Dialect; 29 import org.riotfamily.revolt.Script; 30 import org.riotfamily.revolt.definition.Database; 31 import org.riotfamily.revolt.definition.ForeignKey; 32 import org.riotfamily.revolt.definition.Index; 33 import org.riotfamily.revolt.definition.Table; 34 import org.riotfamily.revolt.definition.UniqueConstraint; 35 36 40 public class ScriptBuilder { 41 42 private Database model; 43 44 private Dialect dialect; 45 46 private Script script; 47 48 public ScriptBuilder(Database model, Dialect dialect) { 49 this.model = model; 50 this.dialect = dialect; 51 } 52 53 public Script buildScript() { 54 script = new Script(); 55 Iterator it = model.getSequences().iterator(); 56 while (it.hasNext()) { 57 String sequence = (String ) it.next(); 58 script.append(dialect.createAutoIncrementSequence(sequence)); 59 } 60 it = model.getTables().iterator(); 61 while (it.hasNext()) { 62 Table table = (Table) it.next(); 63 script.append(dialect.createTable(table)); 64 createIndices(table); 65 createUniqueConstraints(table); 66 } 67 it = model.getTables().iterator(); 68 while (it.hasNext()) { 69 Table table = (Table) it.next(); 70 createForeignKeys(table); 71 } 72 return script; 73 } 74 75 private void createIndices(Table table) { 76 Iterator it = table.getIndices().iterator(); 77 while (it.hasNext()) { 78 Index index = (Index) it.next(); 79 script.append(dialect.createIndex(table.getName(), index)); 80 } 81 } 82 83 private void createUniqueConstraints(Table table) { 84 Iterator it = table.getUniqueConstraints().iterator(); 85 while (it.hasNext()) { 86 UniqueConstraint constraint = (UniqueConstraint) it.next(); 87 script.append(dialect.addUniqueConstraint(table.getName(), constraint)); 88 } 89 } 90 91 private void createForeignKeys(Table table) { 92 Iterator it = table.getForeignKeys().iterator(); 93 while (it.hasNext()) { 94 ForeignKey fk = (ForeignKey) it.next(); 95 script.append(dialect.addForeignKey(table.getName(), fk)); 96 } 97 } 98 } 99 | Popular Tags |