Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B5651C8AC for ; Mon, 22 Dec 2014 02:12:46 +0000 (UTC) Received: (qmail 91328 invoked by uid 500); 22 Dec 2014 02:12:46 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 91300 invoked by uid 500); 22 Dec 2014 02:12:46 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 91291 invoked by uid 99); 22 Dec 2014 02:12:46 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Dec 2014 02:12:46 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Mon, 22 Dec 2014 02:12:45 +0000 Received: (qmail 88246 invoked by uid 99); 22 Dec 2014 02:11:10 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Dec 2014 02:11:10 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C56A69CC7D4; Mon, 22 Dec 2014 02:11:09 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.incubator.apache.org Date: Mon, 22 Dec 2014 02:11:12 -0000 Message-Id: <6fc8d133183046458b0bd7f223847db1@git.apache.org> In-Reply-To: <8d14ae5e630c4158b37913dc1d454a92@git.apache.org> References: <8d14ae5e630c4158b37913dc1d454a92@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/4] incubator-ignite git commit: # ignite-32 WIP: UI and POJO generation. X-Virus-Checked: Checked by ClamAV on apache.org # ignite-32 WIP: UI and POJO generation. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e5e50db4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e5e50db4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e5e50db4 Branch: refs/heads/ignite-32 Commit: e5e50db4bec96c1f3c90cec1d6cd08f98f80f566 Parents: f4b908c Author: AKuznetsov Authored: Mon Dec 22 09:10:56 2014 +0700 Committer: AKuznetsov Committed: Mon Dec 22 09:10:56 2014 +0700 ---------------------------------------------------------------------- .../apache/ignite/schema/db/DbConnection.java | 17 +++-- .../ignite/schema/pojo/PojoCodeGenerator.java | 76 ++++++++++++++++++++ .../apache/ignite/schema/ui/SchemaLoadApp.java | 69 ++++++++++++++++++ 3 files changed, 157 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e5e50db4/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 d6bce39..1d42eef 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 @@ -9,6 +9,7 @@ package org.apache.ignite.schema.db; +import org.apache.ignite.schema.pojo.*; import org.apache.ignite.schema.xml.*; import org.gridgain.grid.cache.query.*; @@ -68,6 +69,10 @@ public class DbConnection { ResultSet tbls = parser.tables(cat, schema); + File destFolder = new File("C:/temp/ignite"); + + PojoCodeGenerator codeGen = new PojoCodeGenerator(); + while(tbls.next()) { String tbl = tbls.getString(3); @@ -79,17 +84,19 @@ public class DbConnection { XmlTransformer transformer = new XmlTransformer(4); - Result res = new StreamResult(new File("C:/temp/ignite/" + tbl + ".xml")); + Result res = new StreamResult(new File(destFolder, tbl + ".xml")); transformer.transform(meta, res); + + codeGen.generate(meta, destFolder); } + } - XmlTransformer transformer = new XmlTransformer(4); + XmlTransformer transformer = new XmlTransformer(4); - Result res = new StreamResult(new File("C:/temp/ignite/all.xml")); + Result res = new StreamResult(new File("C:/temp/ignite/all.xml")); - transformer.transform(all, res); - } + transformer.transform(all, res); conn.close(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e5e50db4/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 new file mode 100644 index 0000000..2ec5708 --- /dev/null +++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/pojo/PojoCodeGenerator.java @@ -0,0 +1,76 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.schema.pojo; + +import org.gridgain.grid.cache.query.*; + +import java.io.*; +import java.util.*; + +/** + * TODO: Add class description. + */ +public class PojoCodeGenerator { + /** */ + private static final String TAB = " "; + + private final StringBuilder sb = new StringBuilder(4096); + + private int indent = 0; + + private PojoCodeGenerator append(String s) { + sb.append(s); + + return this; + } + + private PojoCodeGenerator line(String s) { + for (int i = 0; i < indent; i++) + sb.append(TAB); + + append(s).nl(); + + return this; + } + + private PojoCodeGenerator empty() { + return line(""); + } + + private PojoCodeGenerator nl() { + return append("\n"); + } + + public void generate(GridCacheQueryTypeMetadata meta, File outFolder) throws IOException { + sb.setLength(0); + + File res = new File(outFolder, meta.getType() + ".java"); + + line("package some.pakage;"); + + empty(); + + line("public class " + meta.getType() + " {"); + + indent++; + + for(Map.Entry> field : meta.getQueryFields().entrySet()) { + line("private " + field.getValue().getSimpleName() + " " + field.getKey() + ";"); + } + + indent--; + + line("}"); + + try (FileWriter writer = new FileWriter(res)) { + writer.write(sb.toString()); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e5e50db4/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 new file mode 100644 index 0000000..ae9d30e --- /dev/null +++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java @@ -0,0 +1,69 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.schema.ui; + +import javafx.application.*; +import javafx.event.*; +import javafx.geometry.*; +import javafx.scene.*; +import javafx.scene.control.*; +import javafx.scene.layout.*; +import javafx.stage.*; +import org.apache.ignite.schema.db.*; + +/** + * Schema load application. + */ +public class SchemaLoadApp extends Application { + /** + * + * @param args + */ + public static void main(String[] args) { + launch(args); + } + + /** {@inheritDoc} */ + @Override public void start(Stage primaryStage) { + primaryStage.setTitle("Schema Load"); + + Button btn1 = new Button(); + btn1.setText("Parse DB metadata..."); + btn1.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + DbConnection.main(null); + } + }); + + Button btn2 = new Button(); + btn2.setText("Generate POJOs..."); + btn2.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + DbConnection.main(null); + } + }); + + GridPane grid = new GridPane(); + grid.setAlignment(Pos.CENTER); + grid.setHgap(10); + grid.setVgap(10); + grid.setPadding(new Insets(25, 25, 25, 25)); + + grid.add(btn1, 0, 0); + grid.add(btn2, 0, 1); + + grid.setGridLinesVisible(true); + + primaryStage.setScene(new Scene(grid, 300, 250)); + primaryStage.show(); + } +}