GithubHelp home page GithubHelp logo

othreecodes / apx Goto Github PK

View Code? Open in Web Editor NEW
41.0 6.0 9.0 24.33 MB

A Javafx Library for building MVC Applications.

Home Page: http://davidmadethis.com/APX/

License: MIT License

Java 100.00%
javafx javafx-library sqlite-jdbc fxml gson mvc desktop-app java java-8

apx's Introduction

A JavaFx Library For Making MVC Type Desktop Applications Say Thanks! Readme Score

Installation

  • requires Java jdk > 7 for windows
  • requres openjdk-7 or 8 and openjfx for linux

Download the Binaries and Jar file

Or Clone the repo

git clone https://github.com/othreecodes/APX.git

Demo Project

For a sample project check out this repo othreecodes/apxdemo

Adding Directory to PATH

After cloning the repo, Open the binaries folder and add the correct folder to path for your corresponing OS

Also, You will need to add the apx.jar file to your library class path

Starting a new project

Open a terminal (cmd for windows users) in the directory in which you want to start the project and run

apx start MySampleProject

MySampleProject Being the name of your project NB: Do not use java keywords to create a project

Directory Structure

The Project is Structured in such a way as to help you keep track of your where all files are being placed.

  • layout (FXML files) go in the views directory

  • controllers go in the controllers directory

  • Stylesheets go in the stylesheet directory

You get the point eh? Your Project can then be easily imported into your favourite IDE without stress

Heres the best part

There's a project.apxprop file that marks the project as an apx project (Do Not delete or Edit !!!) It contains basic info about your project. With that in place, you can

Generate pages

apx g page Login

This will generate 3 files.

  • A LoginView.fxml automatically Linked to
  • A LoginController.java
  • A LoginStylesheet.css already linked to the LoginView.fxml

Create tables in database (db.sqlite)

Using Sqlite with Java NB: No need to download the jDBC sqlite Driver. Its already included in apx.jar

apx create model database.json

The next parameter after model is the file location of the json file to read from

sample database.json
{
    "table": "user",
    "properties": {
        "username": {
            "type": "string",
            "null": true,
            "unique": true,
            "default":"Anonymous",
            "title":"The Username of the LoggedIn individual",
            "description":"Whatever This is meant to do"
        },
        "pin": {
            "type": "integer",
             "null": true,
            "unique": false,
            "default":1234
        },
        "number": {
            "type":"number",
             "null": true,
            "unique": false
        }

    }
}

will generate

package com.othree.apx;

import com.google.gson.annotations.SerializedName;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName = "user")
public class User {

    /**
     * This is compulsory for both the database and to access models
     * 
     */
    @DatabaseField(generatedId = true, columnName = "id")
    @SerializedName("id")
    private int id;
    /**
     * The Username of the LoggedIn individual
     * <p>
     * Whatever This is meant to do
     * 
     */
    @DatabaseField(columnName = "username", canBeNull = true, unique = true)
    @SerializedName("username")
    private String username = "Anonymous";
    @DatabaseField(columnName = "pin", canBeNull = true, unique = false)
    @SerializedName("pin")
    private int pin = 1234;
    @DatabaseField(columnName = "number", canBeNull = true, unique = false)
    @SerializedName("number")
    private double number;

    /**
     * No args constructor for use in serialization
     * 
     */
    public User() {
    }

    /**
     * 
     * @param number
     * @param pin
     * @param username
     */
    public User(String username, int pin, double number) {
        super();
        this.username = username;
        this.pin = pin;
        this.number = number;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
    }

    /**
     * The Username of the LoggedIn individual
     * <p>
     * Whatever This is meant to do
     * 
     * @return
     *     The username
     */
    public String getUsername() {
        return username;
    }

    /**
     * The Username of the LoggedIn individual
     * <p>
     * Whatever This is meant to do
     * 
     * @param username
     *     The username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 
     * @return
     *     The pin
     */
    public int getPin() {
        return pin;
    }

    /**
     * 
     * @param pin
     *     The pin
     */
    public void setPin(int pin) {
        this.pin = pin;
    }

    /**
     * 
     * @return
     *     The number
     */
    public double getNumber() {
        return number;
    }

    /**
     * 
     * @param number
     *     The number
     */
    public void setNumber(double number) {
        this.number = number;
    }

}

This command will create a single Table with corresponding columns And also create a model file as seen above

Why is apx.jar ~7mb?

This is because in contains certain libraries needed for a simple MVC REST applictaion

  1. GSON: A Java serialization/deserialization library that can convert Java Objects into JSON and back. link to project: Google Gson
  2. SQLite JDBC Driver: SQLite JDBC, developed by Taro L. Saito, is a library for accessing and creating SQLite database files in Java. link to project Xserial SQLite JDBC
  3. Unirest: Unirest in Java: Simplified, lightweight HTTP client library. http://unirest.io/java link to project Mashape Unirest-java
  4. ORMLite Database Library ORMlite.com
  5. JSONSchema2pojo Generates Java types from JSON Schema (or example JSON) and annotates those types for data-binding with Jackson 1.x or 2.x, Gson, etc http://www.jsonschema2pojo.org Project Link

All Libraries Remain work of the original Author

Useful Links and resources

Todos

  • Generate Models (done)
  • Include support for Other databases
  • Make http connections neater
  • A lot... Feel free to contribute.

License

The MIT License (MIT). Please see LICENSE.md for more information.

Copyright (c) 2016 Obi Uchenna David

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR

apx's People

Contributors

othreecodes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

apx's Issues

๐Ÿงš๐Ÿค– Pixeebot Activity Dashboard

DashList

๐Ÿ‘‹ This dashboard summarizes my activity on the repository, including available improvement opportunities.

Recommendations

Last analysis: May 30 | Next scheduled analysis: Jun 06

Open

Available

โœ… Nothing yet, but I'm continuing to monitor your PRs.

Metrics

What would you like to see here? Let us know!

Resources

๐Ÿ“š Quick links
Pixee Docs | Codemodder by Pixee

๐Ÿงฐ Tools I work with
Sonar, CodeQL, Semgrep

๐Ÿš€ Pixee CLI
The power of my codemods in your local development environment. Learn more

๐Ÿ’ฌ Reach out
Feedback | Support


โค๏ธ Follow, share, and engage with Pixee: GitHub | LinkedIn | Slack

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.