1 package com.wakaleo.schemaspy;
2
3 import org.schemaspy.LayoutFolder;
4 import org.schemaspy.SchemaAnalyzer;
5 import org.schemaspy.cli.CommandLineArgumentParser;
6 import org.schemaspy.cli.CommandLineArguments;
7 import org.schemaspy.connection.ScSimple;
8 import org.schemaspy.connection.SqlConnection;
9 import org.schemaspy.input.dbms.ConnectionConfig;
10 import org.schemaspy.input.dbms.ConnectionURLBuilder;
11 import org.schemaspy.input.dbms.DriverFromConfig;
12 import org.schemaspy.input.dbms.service.DatabaseServiceFactory;
13 import org.schemaspy.input.dbms.service.SqlService;
14 import org.schemaspy.output.OutputProducer;
15 import org.schemaspy.output.xml.dom.XmlProducerUsingDOM;
16
17 import java.io.IOException;
18 import java.sql.SQLException;
19 import java.util.List;
20 import java.util.Objects;
21
22
23
24
25
26 public class MavenSchemaAnalyzer {
27 private SchemaAnalyzer analyzer;
28
29 private CommandLineArguments cliArgs;
30
31
32
33
34
35 public void applyConfiguration(List<String> argList) {
36 CommandLineArgumentParser parser = new CommandLineArgumentParser(argList.toArray(new String[0]));
37 cliArgs = parser.commandLineArguments();
38 }
39
40
41
42
43 public void analyze() throws SQLException, IOException {
44 cliArgs = Objects.requireNonNull(cliArgs, "cliArgs must be initialized. Call applyConfiguration(...) before analyze().");
45 ConnectionConfig connectionConfig = cliArgs.getConnectionConfig();
46 SqlConnection connection = new ScSimple(connectionConfig, new ConnectionURLBuilder(connectionConfig), new DriverFromConfig(connectionConfig));
47 SqlService sqlService = new SqlService();
48 DatabaseServiceFactory databaseServiceFactory = new DatabaseServiceFactory(sqlService);
49 OutputProducer outputProducer = new XmlProducerUsingDOM();
50 LayoutFolder layoutFolder = new LayoutFolder(SchemaAnalyzer.class.getClassLoader());
51 analyzer = new SchemaAnalyzer(sqlService, databaseServiceFactory, cliArgs, outputProducer, layoutFolder, connection);
52 analyzer.analyze();
53 }
54 }