Nick Satinover пре 5 година
родитељ
комит
3bb9f8f5a6

+ 16
- 0
.idea/compiler.xml Прегледај датотеку

@@ -0,0 +1,16 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="CompilerConfiguration">
4
+    <annotationProcessing>
5
+      <profile name="Maven default annotation processors profile" enabled="true">
6
+        <sourceOutputDir name="target/generated-sources/annotations" />
7
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
8
+        <outputRelativeToContentRoot value="true" />
9
+        <module name="ZCW-ORM-SimpleAccount" />
10
+      </profile>
11
+    </annotationProcessing>
12
+    <bytecodeTargetLevel>
13
+      <module name="ZCW-ORM-SimpleAccount" target="1.5" />
14
+    </bytecodeTargetLevel>
15
+  </component>
16
+</project>

+ 13
- 0
.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_6_1.xml Прегледај датотеку

@@ -0,0 +1,13 @@
1
+<component name="libraryTable">
2
+  <library name="Maven: com.google.protobuf:protobuf-java:3.6.1">
3
+    <CLASSES>
4
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1.jar!/" />
5
+    </CLASSES>
6
+    <JAVADOC>
7
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1-javadoc.jar!/" />
8
+    </JAVADOC>
9
+    <SOURCES>
10
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1-sources.jar!/" />
11
+    </SOURCES>
12
+  </library>
13
+</component>

+ 13
- 0
.idea/libraries/Maven__com_j256_ormlite_ormlite_core_4_48.xml Прегледај датотеку

@@ -0,0 +1,13 @@
1
+<component name="libraryTable">
2
+  <library name="Maven: com.j256.ormlite:ormlite-core:4.48">
3
+    <CLASSES>
4
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-core/4.48/ormlite-core-4.48.jar!/" />
5
+    </CLASSES>
6
+    <JAVADOC>
7
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-core/4.48/ormlite-core-4.48-javadoc.jar!/" />
8
+    </JAVADOC>
9
+    <SOURCES>
10
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-core/4.48/ormlite-core-4.48-sources.jar!/" />
11
+    </SOURCES>
12
+  </library>
13
+</component>

+ 13
- 0
.idea/libraries/Maven__com_j256_ormlite_ormlite_jdbc_4_48.xml Прегледај датотеку

@@ -0,0 +1,13 @@
1
+<component name="libraryTable">
2
+  <library name="Maven: com.j256.ormlite:ormlite-jdbc:4.48">
3
+    <CLASSES>
4
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-jdbc/4.48/ormlite-jdbc-4.48.jar!/" />
5
+    </CLASSES>
6
+    <JAVADOC>
7
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-jdbc/4.48/ormlite-jdbc-4.48-javadoc.jar!/" />
8
+    </JAVADOC>
9
+    <SOURCES>
10
+      <root url="jar://$MAVEN_REPOSITORY$/com/j256/ormlite/ormlite-jdbc/4.48/ormlite-jdbc-4.48-sources.jar!/" />
11
+    </SOURCES>
12
+  </library>
13
+</component>

+ 13
- 0
.idea/libraries/Maven__mysql_mysql_connector_java_8_0_13.xml Прегледај датотеку

@@ -0,0 +1,13 @@
1
+<component name="libraryTable">
2
+  <library name="Maven: mysql:mysql-connector-java:8.0.13">
3
+    <CLASSES>
4
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar!/" />
5
+    </CLASSES>
6
+    <JAVADOC>
7
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13-javadoc.jar!/" />
8
+    </JAVADOC>
9
+    <SOURCES>
10
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13-sources.jar!/" />
11
+    </SOURCES>
12
+  </library>
13
+</component>

+ 13
- 0
.idea/misc.xml Прегледај датотеку

@@ -0,0 +1,13 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="MavenProjectsManager">
4
+    <option name="originalFiles">
5
+      <list>
6
+        <option value="$PROJECT_DIR$/pom.xml" />
7
+      </list>
8
+    </option>
9
+  </component>
10
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
11
+    <output url="file://$PROJECT_DIR$/classes" />
12
+  </component>
13
+</project>

+ 8
- 0
.idea/modules.xml Прегледај датотеку

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="ProjectModuleManager">
4
+    <modules>
5
+      <module fileurl="file://$PROJECT_DIR$/ZCW-ORM-SimpleAccount.iml" filepath="$PROJECT_DIR$/ZCW-ORM-SimpleAccount.iml" />
6
+    </modules>
7
+  </component>
8
+</project>

+ 6
- 0
.idea/vcs.xml Прегледај датотеку

@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="VcsDirectoryMappings">
4
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+  </component>
6
+</project>

+ 36
- 0
.idea/workspace.xml Прегледај датотеку

@@ -0,0 +1,36 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="ProjectFrameBounds">
4
+    <option name="x" value="-309" />
5
+    <option name="y" value="-1057" />
6
+    <option name="width" value="1920" />
7
+    <option name="height" value="1057" />
8
+  </component>
9
+  <component name="PropertiesComponent">
10
+    <property name="WebServerToolWindowFactoryState" value="false" />
11
+    <property name="aspect.path.notification.shown" value="true" />
12
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1542498163253" />
13
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/pom.xml" />
14
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
15
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
16
+    <property name="project.structure.last.edited" value="Modules" />
17
+    <property name="project.structure.proportion" value="0.0" />
18
+    <property name="project.structure.side.proportion" value="0.0" />
19
+  </component>
20
+  <component name="masterDetails">
21
+    <states>
22
+      <state key="ProjectJDKs.UI">
23
+        <settings>
24
+          <last-edited>1.8</last-edited>
25
+          <splitter-proportions>
26
+            <option name="proportions">
27
+              <list>
28
+                <option value="0.2" />
29
+              </list>
30
+            </option>
31
+          </splitter-proportions>
32
+        </settings>
33
+      </state>
34
+    </states>
35
+  </component>
36
+</project>

+ 19
- 0
ZCW-ORM-SimpleAccount.iml Прегледај датотеку

@@ -0,0 +1,19 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
4
+    <output url="file://$MODULE_DIR$/target/classes" />
5
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
6
+    <content url="file://$MODULE_DIR$">
7
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
9
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
10
+      <excludeFolder url="file://$MODULE_DIR$/target" />
11
+    </content>
12
+    <orderEntry type="inheritedJdk" />
13
+    <orderEntry type="sourceFolder" forTests="false" />
14
+    <orderEntry type="library" name="Maven: com.j256.ormlite:ormlite-core:4.48" level="project" />
15
+    <orderEntry type="library" name="Maven: com.j256.ormlite:ormlite-jdbc:4.48" level="project" />
16
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.13" level="project" />
17
+    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
18
+  </component>
19
+</module>

+ 35
- 0
pom.xml Прегледај датотеку

@@ -0,0 +1,35 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0"
3
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+    <modelVersion>4.0.0</modelVersion>
6
+
7
+    <groupId>NickSatinover</groupId>
8
+    <artifactId>ZCW-ORM-SimpleAccount</artifactId>
9
+    <version>1.0-SNAPSHOT</version>
10
+
11
+    <dependencies>
12
+        <!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-core -->
13
+        <dependency>
14
+            <groupId>com.j256.ormlite</groupId>
15
+            <artifactId>ormlite-core</artifactId>
16
+            <version>4.48</version>
17
+        </dependency>
18
+
19
+        <!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-jdbc -->
20
+        <dependency>
21
+            <groupId>com.j256.ormlite</groupId>
22
+            <artifactId>ormlite-jdbc</artifactId>
23
+            <version>4.48</version>
24
+        </dependency>
25
+
26
+        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
27
+        <dependency>
28
+            <groupId>mysql</groupId>
29
+            <artifactId>mysql-connector-java</artifactId>
30
+            <version>8.0.13</version>
31
+        </dependency>
32
+
33
+    </dependencies>
34
+
35
+</project>

+ 66
- 0
src/main/java/Account.java Прегледај датотеку

@@ -0,0 +1,66 @@
1
+import com.j256.ormlite.field.DatabaseField;
2
+import com.j256.ormlite.table.DatabaseTable;
3
+
4
+// create table account(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20), password VARCHAR(20), PRIMARY KEY(id));
5
+
6
+@DatabaseTable(tableName = "account")
7
+public class Account {
8
+
9
+    public static final String NAME_FIELD_NAME = "name";
10
+    public static final String PASSWORD_FIELD_NAME = "password";
11
+
12
+    @DatabaseField(columnName = "id", generatedId = true)
13
+    private int id;
14
+
15
+    @DatabaseField(columnName = "name", canBeNull = false)
16
+    private String name;
17
+
18
+    @DatabaseField(columnName = "password")
19
+    private String password;
20
+
21
+    Account() {
22
+        // all persisted classes must define a no-arg constructor with at least package visibility
23
+    }
24
+
25
+    public Account(String name) {
26
+        this.name = name;
27
+    }
28
+
29
+    public Account(String name, String password) {
30
+        this.name = name;
31
+        this.password = password;
32
+    }
33
+
34
+    public int getId() {
35
+        return id;
36
+    }
37
+
38
+    public String getName() {
39
+        return name;
40
+    }
41
+
42
+    public void setName(String name) {
43
+        this.name = name;
44
+    }
45
+
46
+    public String getPassword() {
47
+        return password;
48
+    }
49
+
50
+    public void setPassword(String password) {
51
+        this.password = password;
52
+    }
53
+
54
+    @Override
55
+    public int hashCode() {
56
+        return name.hashCode();
57
+    }
58
+
59
+    @Override
60
+    public boolean equals(Object other) {
61
+        if (other == null || other.getClass() != getClass()) {
62
+            return false;
63
+        }
64
+        return name.equals(((Account) other).name);
65
+    }
66
+}

+ 89
- 0
src/main/java/AccountApp.java Прегледај датотеку

@@ -0,0 +1,89 @@
1
+import com.j256.ormlite.dao.Dao;
2
+import com.j256.ormlite.dao.DaoManager;
3
+import com.j256.ormlite.dao.RuntimeExceptionDao;
4
+import com.j256.ormlite.jdbc.JdbcConnectionSource;
5
+import com.j256.ormlite.stmt.QueryBuilder;
6
+import com.j256.ormlite.support.ConnectionSource;
7
+
8
+import java.sql.SQLException;
9
+
10
+public class AccountApp {
11
+
12
+    Console console = new Console();
13
+    AccountService accountService = new AccountService();
14
+    private final static String DATABASE_URL = "jdbc:mysql://localhost:3306/orm_lab?useUnicode=true";
15
+    private final static String YOURUSERNAME = "root";
16
+    private final static String YOURPASSWORD = "cddvdmp9";
17
+
18
+    private Dao<Account, Integer> accountDao;
19
+    private RuntimeExceptionDao<Account, Integer> accountRuntimeDao = null;
20
+
21
+    public Dao<Account, Integer> getAccountDao() {
22
+        return accountDao;
23
+    }
24
+
25
+    public static void main(String[] args) throws Exception {
26
+        // turn our static method into an instance of Main
27
+        new AccountApp().doMain(args);
28
+    }
29
+
30
+    private void doMain(String[] args) throws Exception {
31
+        ConnectionSource connectionSource = null;
32
+        try {
33
+            // create our data-source for the database
34
+            connectionSource = new JdbcConnectionSource(DATABASE_URL, YOURUSERNAME, YOURPASSWORD);
35
+            // setup our  DAOs
36
+            setupDao(connectionSource);
37
+            // read, write and delete some data
38
+            System.out.println("\n\nDatabase connection to \"account\" table is open\n\n");
39
+            processData();
40
+
41
+        } finally {
42
+            // destroy the data source which should close underlying connections
43
+            if (connectionSource != null) {
44
+                connectionSource.close();
45
+            }
46
+        }
47
+    }
48
+
49
+    /**
50
+     * Read and write some example data.
51
+     */
52
+    private void processData() throws Exception {
53
+        boolean connectionOpen = true;
54
+
55
+        while (connectionOpen){
56
+
57
+            int userSelection = console.getMainMenu();
58
+
59
+            switch (userSelection){
60
+                case 1 :
61
+                    accountService.create(getAccountDao());
62
+                    break;
63
+                case 2 :
64
+                    accountService.read(getAccountDao());
65
+                    break;
66
+                case 3 :
67
+                    // accountDao.update(account);
68
+                    accountService.read(getAccountDao());
69
+                    break;
70
+                case 4 :
71
+                    int idToDelete = console.getIdToDelete();
72
+                    accountService.deleteId(getAccountDao(), idToDelete);
73
+                    break;
74
+                case 5 :
75
+                    Printer.printMessage("Connection is now closed.");
76
+                    connectionOpen = false;
77
+            }
78
+
79
+        }
80
+    }
81
+
82
+    /**
83
+     * Setup our  DAOs
84
+     */
85
+    private void setupDao(ConnectionSource connectionSource) throws Exception {
86
+        accountDao = DaoManager.createDao(connectionSource, Account.class);
87
+    }
88
+
89
+}

+ 60
- 0
src/main/java/AccountService.java Прегледај датотеку

@@ -0,0 +1,60 @@
1
+import java.sql.SQLException;
2
+import java.util.ArrayList;
3
+import java.util.List;
4
+
5
+import com.j256.ormlite.dao.Dao;
6
+import com.j256.ormlite.dao.DaoManager;
7
+import com.j256.ormlite.dao.GenericRawResults;
8
+import com.j256.ormlite.dao.RuntimeExceptionDao;
9
+import com.j256.ormlite.jdbc.JdbcConnectionSource;
10
+import com.j256.ormlite.stmt.QueryBuilder;
11
+import com.j256.ormlite.support.ConnectionSource;
12
+
13
+public class AccountService {
14
+    Console console = new Console();
15
+    // implement CRUD functionality
16
+
17
+    public void deleteId(Dao accountDao, int idToDelete){
18
+
19
+        try {
20
+            if (accountDao.idExists(idToDelete)) {
21
+                accountDao.deleteById(idToDelete);
22
+                Printer.printMessage("\nId deleted\n");
23
+            }
24
+            else {
25
+                Printer.printMessage("\nId does not exist\n");
26
+            }
27
+        } catch (SQLException e) {
28
+            e.printStackTrace();
29
+        }
30
+    }
31
+
32
+    public void create(Dao accountDao){
33
+        try {
34
+            String name = console.getCMDFromUser("Enter name: ");
35
+            String password = console.getCMDFromUser("Set password: ");
36
+            Account account = new Account(name, password);
37
+            accountDao.create(account);
38
+            int id = account.getId();
39
+            Printer.printMessage("\nRecord " + id + " created.\n");
40
+        } catch (SQLException e) {
41
+            e.printStackTrace();
42
+        }
43
+    }
44
+
45
+
46
+    public void read(Dao accountDao) {
47
+
48
+        try {
49
+            List<Account> accountList = accountDao.queryForAll();
50
+            for (Account e: accountList) {
51
+                System.out.printf("|%-3s%-10s%-10s|\n" , e.getId(), e.getName(), e.getPassword());
52
+                System.out.println();
53
+            }
54
+        } catch (SQLException e) {
55
+            e.printStackTrace();
56
+        }
57
+
58
+    }
59
+
60
+}

+ 60
- 0
src/main/java/Console.java Прегледај датотеку

@@ -0,0 +1,60 @@
1
+import java.util.InputMismatchException;
2
+import java.util.Scanner;
3
+
4
+public class Console {
5
+
6
+    private Scanner scanner = new Scanner(System.in);
7
+
8
+    Console(){
9
+
10
+    }
11
+
12
+    public String getCMDFromUser(String msg){
13
+        try {
14
+            Printer.printMessage(msg);
15
+            String input = scanner.next();
16
+            input.toLowerCase().trim();
17
+            return input;
18
+        }catch (InputMismatchException e){
19
+            Printer.printMessage("Please enter a valid word.");
20
+            scanner.next();
21
+        }
22
+        return "";
23
+    }
24
+
25
+    public int getMainMenu(){
26
+        Printer.printCommandMenu();
27
+        int returnInput = 5;
28
+        try {
29
+            Printer.printMessage("Please choose a main option\n");
30
+            String input = scanner.next();
31
+
32
+            if (Integer.parseInt(input) < 6 && Integer.parseInt(input) > 0){
33
+                returnInput = Integer.parseInt(input);
34
+            }
35
+        }catch (InputMismatchException e){
36
+            Printer.printMessage("Please enter a valid number.");
37
+        }
38
+        finally {
39
+            return returnInput;
40
+        }
41
+    }
42
+
43
+    public int getIdToDelete(){
44
+        try {
45
+            Printer.printMessage("Please choose ID to delete:\n");
46
+            return scanner.nextInt();
47
+        }catch (InputMismatchException e){
48
+            Printer.printMessage("Please enter a valid number.");
49
+            return -1;
50
+        }
51
+    }
52
+
53
+    public void setScanner(Scanner scanner) {
54
+        this.scanner = scanner;
55
+    }
56
+
57
+    public Scanner getScanner() {
58
+        return scanner;
59
+    }
60
+}

+ 2
- 0
src/main/java/MockDao.java Прегледај датотеку

@@ -0,0 +1,2 @@
1
+public class MockDao {
2
+}

+ 19
- 0
src/main/java/Printer.java Прегледај датотеку

@@ -0,0 +1,19 @@
1
+public class Printer {
2
+
3
+    public static void printMessage(String string) {
4
+        System.out.println(string);
5
+    }
6
+
7
+    public static void printCommandMenu(){
8
+        String[] commandArr = {"Create", "Update", "Read", "Delete", "Quit"};
9
+
10
+        String commands = "";
11
+
12
+        for(int i = 0; i < commandArr.length; i ++){
13
+            commands += i+1 + ". " + commandArr[i] + "\n";
14
+        }
15
+        commands = commands.trim();
16
+
17
+        printMessage(commands);
18
+    }
19
+}


BIN
target/classes/Account.class Прегледај датотеку


BIN
target/classes/AccountApp.class Прегледај датотеку


BIN
target/classes/AccountService.class Прегледај датотеку


BIN
target/classes/Console.class Прегледај датотеку


BIN
target/classes/MockDao.class Прегледај датотеку


BIN
target/classes/Printer.class Прегледај датотеку