Adding generator app
This commit is contained in:
commit
4b3d36f689
135
.gitignore
vendored
Normal file
135
.gitignore
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
######################
|
||||
# Project Specific
|
||||
######################
|
||||
/src/main/webapp/content/css/main.css
|
||||
/target/classes/static/**
|
||||
/src/test/javascript/coverage/
|
||||
|
||||
|
||||
|
||||
######################
|
||||
# Eclipse
|
||||
######################
|
||||
*.pydevproject
|
||||
.project
|
||||
.metadata
|
||||
tmp/
|
||||
tmp/**/*
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.classpath
|
||||
.settings/
|
||||
.loadpath
|
||||
.factorypath
|
||||
/src/main/resources/rebel.xml
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/**
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# CDT-specific
|
||||
.cproject
|
||||
|
||||
# PDT-specific
|
||||
.buildpath
|
||||
|
||||
# STS-specific
|
||||
/.sts4-cache/*
|
||||
|
||||
######################
|
||||
# IntelliJ
|
||||
######################
|
||||
.idea/
|
||||
*.iml
|
||||
*.iws
|
||||
*.ipr
|
||||
*.ids
|
||||
*.orig
|
||||
classes/
|
||||
out/
|
||||
|
||||
######################
|
||||
# Visual Studio Code
|
||||
######################
|
||||
.vscode/
|
||||
|
||||
######################
|
||||
# Maven
|
||||
######################
|
||||
/log/
|
||||
/target/
|
||||
|
||||
######################
|
||||
# Gradle
|
||||
######################
|
||||
.gradle/
|
||||
/build/
|
||||
|
||||
######################
|
||||
# Package Files
|
||||
######################
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
*.db
|
||||
|
||||
######################
|
||||
# Windows
|
||||
######################
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
######################
|
||||
# Mac OSX
|
||||
######################
|
||||
.DS_Store
|
||||
.svn
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear on external disk
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
|
||||
######################
|
||||
# Directories
|
||||
######################
|
||||
/bin/
|
||||
/deploy/
|
||||
|
||||
######################
|
||||
# Logs
|
||||
######################
|
||||
*.log*
|
||||
|
||||
######################
|
||||
# Others
|
||||
######################
|
||||
*.class
|
||||
*.*~
|
||||
*~
|
||||
.merge_file*
|
||||
|
||||
######################
|
||||
# Gradle Wrapper
|
||||
######################
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
######################
|
||||
# Maven Wrapper
|
||||
######################
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
######################
|
||||
# ESLint
|
||||
######################
|
||||
.eslintcache
|
15
README.md
Normal file
15
README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Script Generator
|
||||
|
||||
This small app helps to generate DDL statements from the excel file
|
||||
|
||||
## Usage
|
||||
|
||||
Before you start to generate the scripts, follow below
|
||||
1. Java: The running machine should have at least java 8 installed
|
||||
2. File: The sample xlxs file is located in resources folder. This can be modified as but the format should remain the same
|
||||
3. Open the application in any IDE (eclipse / Intellij)
|
||||
4. Right click on App.java and run
|
||||
5. The scripts will be generated in the console log
|
||||
|
||||
|
||||
> Note: `id` column will be auto generated for all tables
|
51
pom.xml
Normal file
51
pom.xml
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>scripts-generator</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
139
src/main/java/App.java
Normal file
139
src/main/java/App.java
Normal file
@ -0,0 +1,139 @@
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class App {
|
||||
public static void main(String args[]) throws IOException
|
||||
{
|
||||
//obtaining input bytes from a file
|
||||
App tc = new App();
|
||||
|
||||
InputStream fis = tc.getClass().getClassLoader().getResourceAsStream("Data_Dictionary.xlsx");
|
||||
|
||||
//creating workbook instance that refers to .xls file
|
||||
XSSFWorkbook wb=new XSSFWorkbook(fis);
|
||||
//creating a Sheet object to retrieve the object
|
||||
XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object
|
||||
Iterator<Row> itr = sheet.iterator(); //iterating over excel file
|
||||
|
||||
String prevTableName = "";
|
||||
|
||||
int rowCount = 0;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder foreignKeyBuilder = new StringBuilder();
|
||||
|
||||
while (itr.hasNext())
|
||||
{
|
||||
|
||||
Row row = itr.next();
|
||||
|
||||
// Skip first row. It's header
|
||||
if(rowCount == 0){
|
||||
rowCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
String tempTableName = "";
|
||||
|
||||
|
||||
|
||||
tempTableName = row.getCell(0).getStringCellValue();
|
||||
|
||||
if(tempTableName !=null && tempTableName.length() > 0){
|
||||
|
||||
if(!tempTableName.equals(prevTableName)){
|
||||
|
||||
|
||||
System.out.println(_finishOffCreate(sb.append(foreignKeyBuilder.toString())));
|
||||
sb = new StringBuilder();
|
||||
foreignKeyBuilder = new StringBuilder();
|
||||
|
||||
|
||||
sb.append(Constants.CREATE_TABLE +
|
||||
tempTableName +
|
||||
Constants.BRACKET_OPEN +
|
||||
Constants.NEW_LINE);
|
||||
|
||||
sb.append(Constants.constructColumn(
|
||||
"id",
|
||||
"bigint,\n"
|
||||
));
|
||||
|
||||
|
||||
sb.append(Constants.constructColumn(
|
||||
row.getCell(1).getStringCellValue(),
|
||||
row.getCell(2).getStringCellValue()
|
||||
));
|
||||
sb.append(Constants.COMMA + Constants.NEW_LINE);
|
||||
|
||||
_buildForeignKeys(row, foreignKeyBuilder);
|
||||
|
||||
prevTableName = tempTableName;
|
||||
}else{
|
||||
sb.append(Constants.constructColumn(
|
||||
row.getCell(1).getStringCellValue(),
|
||||
row.getCell(2).getStringCellValue()
|
||||
));
|
||||
|
||||
_buildForeignKeys(row, foreignKeyBuilder);
|
||||
|
||||
sb.append(Constants.COMMA + Constants.NEW_LINE);
|
||||
}
|
||||
|
||||
}
|
||||
rowCount++;
|
||||
}
|
||||
}
|
||||
|
||||
private static void _buildForeignKeys(Row row, StringBuilder foreignKeyBuilder) {
|
||||
// Check for any foreign keys
|
||||
if( row.getCell(3) != null && "Y".equalsIgnoreCase(row.getCell(3).getStringCellValue()) ){
|
||||
String currentTableName = row.getCell(0).getStringCellValue();
|
||||
String parentTableName = row.getCell(4).getStringCellValue();
|
||||
|
||||
foreignKeyBuilder.append(
|
||||
Constants.SPACE + Constants.SPACE + Constants.SPACE +
|
||||
|
||||
Constants.CONSTRAINT + Constants.SPACE +
|
||||
|
||||
(Constants.FK_PREFIX + Constants.UNDERSCORE +
|
||||
currentTableName.substring(0,8) + Constants.UNDERSCORE +
|
||||
parentTableName.substring(0,8) +
|
||||
Constants.SPACE + Constants.NEW_LINE ) +
|
||||
|
||||
Constants.SPACE + Constants.SPACE + Constants.SPACE + Constants.SPACE +
|
||||
|
||||
Constants.FOREIGN_KEY+
|
||||
|
||||
(Constants.BRACKET_OPEN + row.getCell(1).getStringCellValue() + Constants.BRACKET_CLOSE)+ Constants.SPACE +
|
||||
|
||||
Constants.REFERENCES + Constants.SPACE +
|
||||
|
||||
(row.getCell(5).getStringCellValue() + Constants.BRACKET_OPEN + row.getCell(1).getStringCellValue() + Constants.BRACKET_CLOSE)+
|
||||
|
||||
Constants.COMMA + Constants.NEW_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
private static String _finishOffCreate(StringBuilder createStatement){
|
||||
|
||||
if(createStatement.length() > 0){
|
||||
// System.out.println(createStatement.toString());
|
||||
int lastIndexOfComma=createStatement.lastIndexOf(Constants.COMMA);
|
||||
|
||||
createStatement.deleteCharAt(lastIndexOfComma);
|
||||
|
||||
createStatement.append( Constants.BRACKET_CLOSE + Constants.SEMI_COLON + Constants.NEW_LINE);
|
||||
|
||||
|
||||
createStatement.replace(lastIndexOfComma, lastIndexOfComma, "");
|
||||
return createStatement.toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
33
src/main/java/Constants.java
Normal file
33
src/main/java/Constants.java
Normal file
@ -0,0 +1,33 @@
|
||||
import com.sun.org.apache.bcel.internal.generic.NEW;
|
||||
|
||||
public class Constants {
|
||||
public static final String CREATE_TABLE="CREATE TABLE ";
|
||||
public static final String BRACKET_OPEN="(";
|
||||
public static final String BRACKET_CLOSE=")";
|
||||
public static final String SPACE="\t";
|
||||
public static final String NEW_LINE="\n";
|
||||
public static final String COMMA=",";
|
||||
|
||||
|
||||
//Data types
|
||||
public static final String TYPE_VARCHAR="VARCHAR";
|
||||
public static final String TYPE_INT="INT";
|
||||
public static final String TYPE_DECIMAL="DECIMAL";
|
||||
public static final String TYPE_DATETIME="DATETIME";
|
||||
public static final String TYPE_DATE="DATE";
|
||||
public static final String BIT="bit";
|
||||
public static final String SEMI_COLON = ";";
|
||||
|
||||
|
||||
//Foreign Key Constraint
|
||||
public static final String REFERENCES = "REFERENCES";
|
||||
public static final String CONSTRAINT = "CONSTRAINT";
|
||||
public static final String FOREIGN_KEY = "FOREIGN KEY";
|
||||
public static final String FK_PREFIX = "fk";
|
||||
public static final String UNDERSCORE = "_";
|
||||
|
||||
|
||||
public static String constructColumn(String columnName, String dataType){
|
||||
return SPACE + SPACE + SPACE + columnName + SPACE + dataType;
|
||||
}
|
||||
}
|
BIN
src/main/resources/Data_Dictionary.xlsx
Normal file
BIN
src/main/resources/Data_Dictionary.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user