12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package com.rthoni.intellij.codefromds.business;
-
- import com.intellij.database.psi.DbDataSource;
- import com.rthoni.intellij.codefromds.dbo.GenerateOptions;
- import com.rthoni.intellij.codefromds.dbo.TableSelection;
- import org.json.JSONObject;
- import org.jtwig.JtwigModel;
- import org.jtwig.JtwigTemplate;
-
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.HashMap;
-
- /**
- * Created by robin on 11/15/16.
- */
- public abstract class Generator {
-
- public static void saveOptions(GenerateOptions options) throws Exception
- {
- HashMap<String, Object> map = options.toMap();
- JSONObject obj = new JSONObject(map);
- FileOutputStream file = new FileOutputStream(options.getConfigPath());
- file.write(obj.toString(4).getBytes());
- file.close();
- }
-
- public static GenerateOptions loadOptions(String configPath) throws Exception
- {
- String data = Files.readAllLines(Paths.get(configPath), StandardCharsets.UTF_8).stream().reduce("", (s1, s2) -> s1 + s2 + "\n");
-
- JSONObject obj = new JSONObject(data);
- String src = obj.getJSONObject("selection").getString("source");
-
- DbDataSource dataSource = Helper.findDataSource(src);
- if (dataSource == null) {
- throw new Exception("Data source " + src + " not found");
- }
-
- GenerateOptions options = new GenerateOptions(dataSource);
- options.setConfigPath(configPath);
- options.fromJson(obj);
- return options;
- }
-
- public static void generateFile(String templatePath, String outputFile, GenerateOptions options, TableSelection table) throws IOException
- {
- String data = Helper.readFile(templatePath);
-
- FileOutputStream file = new FileOutputStream(outputFile);
-
- JtwigTemplate template = JtwigTemplate.inlineTemplate(data);
- JtwigModel model = JtwigModel.newModel().with("options", options).with("table", table);
-
- template.render(model, file);
-
- file.close();
- }
-
- public static void generate(GenerateOptions options) throws IOException
- {
- generateFile(options.getDataSourceTemplatePath(), options.getModelsPath() + File.separator + "Database.cs", options, null);
- for (TableSelection table : options.getSelection().getTables()) {
- if (!table.hasNone()) {
- generateFile(options.getModelsTemplatePath(), options.getModelsPath() + File.separator + table.getTable().getName() + ".cs", options, table);
- }
- }
- }
- }
|