001 /** 002 * Copyright 2011 The Kuali Foundation Licensed under the 003 * Educational Community License, Version 2.0 (the "License"); you may 004 * not use this file except in compliance with the License. You may 005 * obtain a copy of the License at 006 * 007 * http://www.osedu.org/licenses/ECL-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, 010 * software distributed under the License is distributed on an "AS IS" 011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 012 * or implied. See the License for the specific language governing 013 * permissions and limitations under the License. 014 */ 015 016 package org.kuali.common.impex.database; 017 018 import org.kuali.common.impex.data.DumpDataExecutable; 019 import org.kuali.common.impex.model.Schema; 020 import org.kuali.common.impex.schema.execute.DumpSchemaExecutable; 021 import org.kuali.common.impex.schema.service.ExtractSchemaExecutable; 022 import org.kuali.common.util.Assert; 023 import org.kuali.common.util.execute.Executable; 024 025 /** 026 * Connect to a database using JDBC, extract schema information needed for Kuali applications, and dump it to disk as XML 027 */ 028 public class DumpDatabaseExecutable implements Executable { 029 030 boolean skip; 031 Executable showConfigExecutable; 032 ExtractSchemaExecutable extractSchemaExecutable; 033 DumpSchemaExecutable dumpSchemaExecutable; 034 DumpDataExecutable dumpDataExecutable; 035 036 @Override 037 public void execute() { 038 039 // May have nothing to do 040 if (skip) { 041 return; 042 } 043 044 // Make sure we are configured correctly 045 Assert.notNull(showConfigExecutable, "showConfigExecutable is null"); 046 Assert.notNull(extractSchemaExecutable, "extractSchemaExecutable is null"); 047 Assert.notNull(dumpSchemaExecutable, "dumpSchemaExecutable is null"); 048 Assert.notNull(dumpDataExecutable, "dumpDataExecutable is null"); 049 050 // Show the JDBC configuration we are using 051 showConfigExecutable.execute(); 052 053 // Connect to the database and extract the schema info 054 extractSchemaExecutable.execute(); 055 056 // Get the schema object generated during the extract 057 Schema schema = extractSchemaExecutable.getResult().getSchema(); 058 059 // Schema can't be null here 060 Assert.notNull(schema, "schema is null"); 061 062 // Dump the schema to disk as XML 063 dumpSchemaExecutable.getRequest().setSchema(schema); 064 dumpSchemaExecutable.execute(); 065 066 // Connect to the database, extract the data, and dump it to disk 067 dumpDataExecutable.setSchema(schema); 068 dumpDataExecutable.execute(); 069 } 070 071 public boolean isSkip() { 072 return skip; 073 } 074 075 public void setSkip(boolean skip) { 076 this.skip = skip; 077 } 078 079 public Executable getShowConfigExecutable() { 080 return showConfigExecutable; 081 } 082 083 public void setShowConfigExecutable(Executable showConfigExecutable) { 084 this.showConfigExecutable = showConfigExecutable; 085 } 086 087 public ExtractSchemaExecutable getExtractSchemaExecutable() { 088 return extractSchemaExecutable; 089 } 090 091 public void setExtractSchemaExecutable(ExtractSchemaExecutable extractSchemaExecutable) { 092 this.extractSchemaExecutable = extractSchemaExecutable; 093 } 094 095 public DumpSchemaExecutable getDumpSchemaExecutable() { 096 return dumpSchemaExecutable; 097 } 098 099 public void setDumpSchemaExecutable(DumpSchemaExecutable dumpSchemaExecutable) { 100 this.dumpSchemaExecutable = dumpSchemaExecutable; 101 } 102 103 public DumpDataExecutable getDumpDataExecutable() { 104 return dumpDataExecutable; 105 } 106 107 public void setDumpDataExecutable(DumpDataExecutable dumpDataExecutable) { 108 this.dumpDataExecutable = dumpDataExecutable; 109 } 110 111 }