You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2014/12/22 10:23:18 UTC
incubator-ignite git commit: # IGNITE-32 WIP: work UI.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-32 e5e50db4b -> 1ab0424bf
# IGNITE-32 WIP: work UI.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1ab0424b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1ab0424b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1ab0424b
Branch: refs/heads/ignite-32
Commit: 1ab0424bf1207a83a2346450e8437ef581837922
Parents: e5e50db
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Dec 22 16:23:04 2014 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Dec 22 16:23:04 2014 +0700
----------------------------------------------------------------------
.../apache/ignite/schema/db/DbConnection.java | 2 +-
.../ignite/schema/pojo/PojoCodeGenerator.java | 85 +++++--
.../apache/ignite/schema/ui/SchemaLoadApp.java | 225 ++++++++++++++++---
3 files changed, 262 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1ab0424b/modules/schema-load/src/main/java/org/apache/ignite/schema/db/DbConnection.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/db/DbConnection.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/db/DbConnection.java
index 1d42eef..86c7f2d 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/db/DbConnection.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/db/DbConnection.java
@@ -88,7 +88,7 @@ public class DbConnection {
transformer.transform(meta, res);
- codeGen.generate(meta, destFolder);
+ codeGen.generate(meta, "C:/temp/ignite", "org.apache.ignite");
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1ab0424b/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java
index 2ec5708..fbb5c42 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java
@@ -14,6 +14,8 @@ import org.gridgain.grid.cache.query.*;
import java.io.*;
import java.util.*;
+import static org.apache.ignite.schema.util.SchemaUtils.*;
+
/**
* TODO: Add class description.
*/
@@ -21,56 +23,91 @@ public class PojoCodeGenerator {
/** */
private static final String TAB = " ";
- private final StringBuilder sb = new StringBuilder(4096);
+ /** */
+ private final Collection<String> src = new ArrayList<>(256);
+ /** */
private int indent = 0;
- private PojoCodeGenerator append(String s) {
- sb.append(s);
-
- return this;
- }
+ private String indent() {
+ switch (indent) {
+ case 0: return "";
+ case 1: return TAB;
+ default:
+ StringBuilder sb = new StringBuilder(TAB.length() * indent);
- private PojoCodeGenerator line(String s) {
- for (int i = 0; i < indent; i++)
- sb.append(TAB);
+ for (int i = 0; i < indent; i++)
+ sb.append(TAB);
- append(s).nl();
+ return sb.toString();
+ }
+ }
- return this;
+ private void line(String s) {
+ src.add(indent() + s);
}
- private PojoCodeGenerator empty() {
- return line("");
+ private void empty() {
+ src.add("");
}
- private PojoCodeGenerator nl() {
- return append("\n");
+ private void newLine(String s) {
+ empty();
+ line(s);
}
- public void generate(GridCacheQueryTypeMetadata meta, File outFolder) throws IOException {
- sb.setLength(0);
+ public void generate(GridCacheQueryTypeMetadata meta, String outFolder, String pkg) throws IOException {
+ src.clear();
- File res = new File(outFolder, meta.getType() + ".java");
+ File res = new File(outFolder, pkg.replace('.', File.separatorChar));
- line("package some.pakage;");
+ res.mkdirs();
- empty();
+ res = new File(res, meta.getType() + ".java");
+
+ line(pkg + ";");
- line("public class " + meta.getType() + " {");
+ newLine("public class " + meta.getType() + " {");
+
+ Set<Map.Entry<String, Class<?>>> fields = meta.getQueryFields().entrySet();
indent++;
- for(Map.Entry<String, Class<?>> field : meta.getQueryFields().entrySet()) {
+ // Generate declarations.
+ for(Map.Entry<String, Class<?>> field : fields)
line("private " + field.getValue().getSimpleName() + " " + field.getKey() + ";");
+
+ // Generate getters and setters.
+ for(Map.Entry<String, Class<?>> field : fields) {
+ String fldType = field.getValue().getSimpleName();
+ String fldName = field.getKey();
+ String mtdName = capitalize(fldName);
+
+ newLine("public " + fldType + " get" + mtdName + "() {");
+
+ indent++;
+ line("return " + fldName + ";");
+ indent--;
+
+ line("}");
+
+ newLine("public void set" + mtdName + "(" + fldName + ": " + fldType+ ") {");
+
+ indent++;
+ line("this." + fldName + " = " + fldName + ";");
+ indent--;
+
+ line("}");
}
+
indent--;
line("}");
- try (FileWriter writer = new FileWriter(res)) {
- writer.write(sb.toString());
+ try (Writer writer = new BufferedWriter(new FileWriter(res))) {
+ for (String line : src)
+ writer.write(line + '\n');
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1ab0424b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
index ae9d30e..4c26e9f 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
@@ -10,60 +10,235 @@
package org.apache.ignite.schema.ui;
import javafx.application.*;
+import javafx.collections.*;
import javafx.event.*;
import javafx.geometry.*;
import javafx.scene.*;
import javafx.scene.control.*;
+import javafx.scene.image.*;
import javafx.scene.layout.*;
+import javafx.scene.text.*;
import javafx.stage.*;
import org.apache.ignite.schema.db.*;
+import javax.imageio.*;
+import java.util.*;
+
/**
* Schema load application.
*/
public class SchemaLoadApp extends Application {
+ /** */
+ private int step = 0;
+
+ /** */
+ private Pane contentPane;
+
+ /** */
+ private Label titleLb;
+
+ /** */
+ private Button prevBtn;
+
+ /** */
+ private Button nextBtn;
+
+ /** */
+ private List<WizardPage> pages;
+
+ private abstract class WizardPage {
+ protected Pane contentPane;
+
+ protected final String title;
+
+ protected WizardPage(String title) {
+ this.title = title;
+ }
+
+ protected abstract Pane createContent();
+
+ protected Pane content() {
+ if (contentPane == null)
+ contentPane = createContent();
+
+ return contentPane;
+ }
+
+ }
+
+ private class DbChooserPage extends WizardPage {
+ public DbChooserPage() {
+ super("Choose Database");
+ }
+
+ @Override protected Pane createContent() {
+ HBox hb = new HBox();
+
+ return hb;
+ }
+ }
+
+ private class SelectTablesPage extends WizardPage {
+ public SelectTablesPage() {
+ super("Select tables");
+ }
+
+ @Override protected Pane createContent() {
+ return new HBox();
+ }
+ }
+
+ private class ImportDbSchemaPage extends WizardPage {
+ public ImportDbSchemaPage() {
+ super("Import Database Schema");
+ }
+
+ @Override protected Pane createContent() {
+ return new HBox();
+ }
+ }
+
+ private class GeneratePage extends WizardPage {
+ public GeneratePage() {
+ super("Generate");
+ }
+
+ @Override protected Pane createContent() {
+ HBox hb = new HBox();
+
+ Button btn = new Button("Generate");
+ btn.setOnAction(new EventHandler<ActionEvent>() {
+ @Override public void handle(ActionEvent evt) {
+ DbConnection.main(null);
+
+ System.exit(0);
+ }
+ });
+
+ hb.getChildren().addAll(btn);
+
+ return hb;
+ }
+ }
+
/**
+ * Schema load utility launcher.
*
- * @param args
+ * @param args Command line arguments passed to the application.
*/
public static void main(String[] args) {
launch(args);
}
- /** {@inheritDoc} */
- @Override public void start(Stage primaryStage) {
- primaryStage.setTitle("Schema Load");
+ /**
+ * @return Header pane with title label.
+ */
+ private Pane createHeaderPane() {
+ HBox hb = new HBox();
+ hb.setPadding(new Insets(10, 10, 10, 10));
- Button btn1 = new Button();
- btn1.setText("Parse DB metadata...");
- btn1.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- DbConnection.main(null);
+ titleLb = new Label("");
+ titleLb.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
+
+ hb.getChildren().add(titleLb);
+
+ return hb;
+ }
+
+ /**
+ * @return Panel with control buttons.
+ */
+ private Pane createButtonsPane() {
+ prevBtn = new Button("Prev");
+ prevBtn.setOnAction(new EventHandler<ActionEvent>() {
+ @Override public void handle(ActionEvent evt) {
+ go(false);
}
});
- Button btn2 = new Button();
- btn2.setText("Generate POJOs...");
- btn2.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- DbConnection.main(null);
+ nextBtn = new Button("Next");
+ nextBtn.setOnAction(new EventHandler<ActionEvent>() {
+ @Override public void handle(ActionEvent evt) {
+ go(true);
}
});
- GridPane grid = new GridPane();
- grid.setAlignment(Pos.CENTER);
- grid.setHgap(10);
- grid.setVgap(10);
- grid.setPadding(new Insets(25, 25, 25, 25));
+ HBox hb = new HBox(10);
+ hb.getChildren().addAll(prevBtn, nextBtn);
+
+ AnchorPane ap = new AnchorPane();
+
+ ap.getChildren().add(hb);
+
+ AnchorPane.setBottomAnchor(hb, 10.0);
+ AnchorPane.setRightAnchor(hb, 10.0);
+
+ return ap;
+ }
+
+ /**
+ * Go to selected page.
+ *
+ * @param next If {@code true} then go to next page otherwise go to previous page.
+ */
+ private void go(boolean next) {
+ if (next) {
+ if (step < pages.size())
+ step++;
+ } else if (step > 0)
+ step--;
+
+ WizardPage page = pages.get(step);
+
+ contentPane.getChildren().clear();
+ contentPane.getChildren().add(page.createContent());
+
+ titleLb.setText(page.title);
- grid.add(btn1, 0, 0);
- grid.add(btn2, 0, 1);
+ prevBtn.setDisable(step == 0);
+ nextBtn.setDisable(step == pages.size() - 1);
+ }
+
+ /**
+ * Gets image by its filename.
+ *
+ * @param fname Image filename.
+ */
+ private Image image(String fname, int sz) {
+ return new Image(getClass().getResourceAsStream(String.format("media/%1$s_%2$dx%2$d.png", fname, sz)));
+ }
+
+ /** {@inheritDoc} */
+ @Override public void start(Stage primaryStage) {
+ primaryStage.getIcons()
+ .addAll(image("branch", 16), image("branch", 32), image("branch", 48), image("branch", 128));
- grid.setGridLinesVisible(true);
+ pages = new ArrayList<>();
- primaryStage.setScene(new Scene(grid, 300, 250));
+ pages.add(new DbChooserPage());
+ pages.add(new SelectTablesPage());
+ pages.add(new ImportDbSchemaPage());
+ pages.add(new GeneratePage());
+
+ primaryStage.setTitle("Schema Load");
+
+ contentPane = new HBox();
+
+ BorderPane layerPnl = new BorderPane();
+
+ layerPnl.setTop(createHeaderPane());
+ layerPnl.setCenter(contentPane);
+ layerPnl.setBottom(createButtonsPane());
+
+ primaryStage.setMinWidth(300);
+ primaryStage.setMinHeight(250);
+
+ primaryStage.setMaxWidth(600);
+ primaryStage.setMaxHeight(500);
+
+ primaryStage.setScene(new Scene(layerPnl, 300, 250));
primaryStage.show();
+
+ go(false);
}
}