diff --git a/.gradle/9.3.1/executionHistory/executionHistory.bin b/.gradle/9.3.1/executionHistory/executionHistory.bin index 1d8e1c2..7128eac 100755 Binary files a/.gradle/9.3.1/executionHistory/executionHistory.bin and b/.gradle/9.3.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/9.3.1/executionHistory/executionHistory.lock b/.gradle/9.3.1/executionHistory/executionHistory.lock index cb98617..0c5718c 100755 Binary files a/.gradle/9.3.1/executionHistory/executionHistory.lock and b/.gradle/9.3.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/9.3.1/fileHashes/fileHashes.bin b/.gradle/9.3.1/fileHashes/fileHashes.bin index 61b8b51..b99c6a5 100755 Binary files a/.gradle/9.3.1/fileHashes/fileHashes.bin and b/.gradle/9.3.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/9.3.1/fileHashes/fileHashes.lock b/.gradle/9.3.1/fileHashes/fileHashes.lock index 8d8daee..32d7309 100755 Binary files a/.gradle/9.3.1/fileHashes/fileHashes.lock and b/.gradle/9.3.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 8c66e33..38dd9d2 100755 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 014668a..e173ad8 100755 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index d3d01cb..ad8478b 100755 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs index 8e50e0f..978c16a 100644 --- a/.settings/org.eclipse.buildship.core.prefs +++ b/.settings/org.eclipse.buildship.core.prefs @@ -1,11 +1,11 @@ -arguments=--init-script /home/sherwinp/.config/VSCodium/User/globalStorage/redhat.java/1.50.0/config_linux/org.eclipse.osgi/58/0/.cp/gradle/init/init.gradle --init-script /home/sherwinp/.config/VSCodium/User/globalStorage/redhat.java/1.50.0/config_linux/org.eclipse.osgi/58/0/.cp/gradle/protobuf/init.gradle +arguments=--init-script C\:\\Users\\sherw\\AppData\\Roaming\\VSCodium\\User\\globalStorage\\redhat.java\\1.52.0\\config_win\\org.eclipse.osgi\\58\\0\\.cp\\gradle\\init\\init.gradle --init-script C\:\\Users\\sherw\\AppData\\Roaming\\VSCodium\\User\\globalStorage\\redhat.java\\1.52.0\\config_win\\org.eclipse.osgi\\58\\0\\.cp\\gradle\\protobuf\\init.gradle auto.sync=true build.scans.enabled=false connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=/usr/lib/jvm/java-25-openjdk +java.home=C\:/Program Files/jdk-26 jvm.arguments= offline.mode=false override.workspace.settings=true diff --git a/db/sample.db b/db/sample.db index edc5340..c5b9ffa 100644 Binary files a/db/sample.db and b/db/sample.db differ diff --git a/readme.txt b/readme.txt index ca77a40..dc5e6ac 100644 --- a/readme.txt +++ b/readme.txt @@ -45,45 +45,26 @@ UPDATE CONTACT SET MAIL_ADDRESS=NULL WHERE ID=8; CREATE TABLE contact ( contact_id NUMBER PRIMARY KEY, first_name TEXT, -last_name TEXT -); - -CREATE TABLE phone ( -contact_id NUMBER FOREIGN KEY, -phone_no TEXT -); - -CREATE TABLE emailaddress ( -contact_id NUMBER FOREIGN KEY, -email TEXT -); - -CREATE TABLE address ( -contact_id NUMBER FOREIGN KEY, +last_name TEXT, +email TEXT, +phone_no TEXT, street TEXT, -city TEXT, -state TEXT, +fk_CITY NUMBER, +fk_STATE NUMBER, +fk_ZIP NUMBER +); + +CREATE TABLE CITY ( +ID NUMBER, +CITY TEXT +) + +CREATE TABLE STATE ( +ID NUMBER, +state TEXT +) + +CREATE TABLE ZIP ( +ID NUMBER, zip TEXT -); - -CREATE TABLE note ( -contact_id NUMBER FOREIGN KEY, -note TEXT -); - -CREATE TABLE activity ( -activity_id NUMBER FOREIGN KEY, -activity_type TEXT, -activity_note TEXT -); - -CREATE TABLE contact_activity ( -activity_id NUMBER FOREIGN KEY, -contact_id NUMBER FOREIGN KEY -); - -CREATE TABLE friends ( -contact_id NUMBER FOREIGN KEY, -friend_contact_id NUMBER FORIEGN KEY -); - +) diff --git a/src/main/java/edu/bookocontacts/ControlDDXDialog.java b/src/main/java/edu/bookocontacts/ControlDDXDialog.java index 1e95899..70855f8 100644 --- a/src/main/java/edu/bookocontacts/ControlDDXDialog.java +++ b/src/main/java/edu/bookocontacts/ControlDDXDialog.java @@ -72,7 +72,7 @@ public class ControlDDXDialog extends Dialog { tfPhoneNo.setText(ct.getPhoneNo().getphone_number()); tfEmail.setText(ct.getEmail().getEmail_address()); tfStreet.setText(ct.getMailing_address().getStreet()); - tfCity.setText(ct.getMailing_address().getStreet()); + tfCity.setText(ct.getMailing_address().getCity()); tfState.setText(ct.getMailing_address().getState()); tfZip.setText(ct.getMailing_address().getZip()); } diff --git a/src/main/java/edu/bookocontacts/ViewController.java b/src/main/java/edu/bookocontacts/ViewController.java index d90fc71..a704977 100755 --- a/src/main/java/edu/bookocontacts/ViewController.java +++ b/src/main/java/edu/bookocontacts/ViewController.java @@ -143,13 +143,15 @@ public class ViewController implements Initializable { contactView.setOnMouseClicked(e -> { PickResult p = e.getPickResult(); - ControlDDXDialog dialog = new ControlDDXDialog(contactView.getSelectionModel().getSelectedItem()); + Contact ct = contactView.getSelectionModel().getSelectedItem(); + ControlDDXDialog dialog = new ControlDDXDialog(ct); Optional result = dialog.showAndWait(); if (result.isPresent()) { log("result is present."); // add to storage - Contact ct = (Contact) result.get(); + Contact updatedContact = (Contact) result.get(); try { + updatedContact.setId(ct.getId()); ct.save(); } catch (Exception ex) { log(ex.getMessage()); diff --git a/src/main/java/edu/bookocontacts/model/Contact.java b/src/main/java/edu/bookocontacts/model/Contact.java index f8e015f..c204618 100644 --- a/src/main/java/edu/bookocontacts/model/Contact.java +++ b/src/main/java/edu/bookocontacts/model/Contact.java @@ -42,6 +42,7 @@ public class Contact { this.phone_number = phone_number; this.mailing_address = mailing_address; this.email_address = email_address; + this.status = EnumStatus.NEW; } public Contact(PhoneNumber phone_number, MailAddress mailing_address, EmailAddress email_address) diff --git a/src/main/java/edu/bookocontacts/model/DATASET.java b/src/main/java/edu/bookocontacts/model/DATASET.java index eae7f71..0770778 100644 --- a/src/main/java/edu/bookocontacts/model/DATASET.java +++ b/src/main/java/edu/bookocontacts/model/DATASET.java @@ -3,6 +3,7 @@ package edu.bookocontacts.model; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -13,14 +14,25 @@ import java.util.logging.Logger; import org.sqlite.SQLiteDataSource; -public interface DATASET { - public static PreparedStatement getPreparedStatement(String sql) throws SQLException, IOException { - File rootDir = new File(String.format("%s", DataRepositoryConfig.getPath())); - Files.createDirectories(rootDir.toPath()); +public final class DATASET { + private static Connection connection = null; - SQLiteDataSource dataSource = new SQLiteDataSource(); - dataSource.setUrl(String.format("jdbc:sqlite:%ssample.db", DataRepositoryConfig.getPath())); - return dataSource.getConnection().prepareStatement(sql); + public static synchronized Connection getConnection() throws IOException, SQLException { + if (connection == null) { + File rootDir = new File(String.format("%s", DataRepositoryConfig.getPath())); + Files.createDirectories(rootDir.toPath()); + + SQLiteDataSource dataSource = new SQLiteDataSource(); + dataSource.setUrl(String.format("jdbc:sqlite:%ssample.db", DataRepositoryConfig.getPath())); + + connection = dataSource.getConnection(); + } + return connection; + } + + public static PreparedStatement getPreparedStatement(String sql) throws SQLException, IOException { + + return getConnection().prepareStatement(sql); } public static List FINDDATA() { @@ -62,6 +74,7 @@ public interface DATASET { stmt.setInt(1, ct.getId()); ResultSet rs = stmt.executeQuery(); if (rs.next()) { + rs.close(); stmt.close(); stmt = getPreparedStatement(String.format( "UPDATE CONTACT SET FIRST_NAME=?, LAST_NAME=?, EMAIL_ADDRESS=?, PHONE_NUMBER=?, MAIL_ADDRESS=? WHERE ID=?;")); @@ -74,6 +87,7 @@ public interface DATASET { stmt.execute(); stmt.close(); } else { + rs.close(); stmt.close(); stmt = getPreparedStatement(String.format( "INSERT INTO CONTACT(ID, FIRST_NAME, LAST_NAME, EMAIL_ADDRESS, PHONE_NUMBER, MAIL_ADDRESS) " @@ -92,7 +106,7 @@ public interface DATASET { } } - static void DELETE(Contact ct){ + static void DELETE(Contact ct) { try { PreparedStatement stmt = getPreparedStatement(String.format( "DELETE FROM CONTACT WHERE ID=?;")); diff --git a/src/main/java/edu/bookocontacts/model/MailAddress.java b/src/main/java/edu/bookocontacts/model/MailAddress.java index cd40f41..d9a84d0 100644 --- a/src/main/java/edu/bookocontacts/model/MailAddress.java +++ b/src/main/java/edu/bookocontacts/model/MailAddress.java @@ -1,6 +1,7 @@ package edu.bookocontacts.model; -import java.util.Scanner; +import java.util.logging.Level; +import java.util.logging.Logger; public final class MailAddress { @@ -9,6 +10,8 @@ public final class MailAddress { String state; String zip; + Logger logger = Logger.getLogger(getClass().getName()); + public MailAddress() { this("", "", "", ""); } @@ -16,19 +19,25 @@ public final class MailAddress { public MailAddress(String addressline) { this("", "", "", ""); if (addressline != null) { - try (Scanner scanner = new Scanner(addressline)) { - try { - - scanner.useDelimiter(",\\s*"); - street = scanner.next(); - city = scanner.next(); - state = scanner.next(); - zip = scanner.next(); + try { - } catch (java.util.NoSuchElementException e) { - scanner.close(); + String[] csz = addressline.split(",", 4); + street = csz[0]; + city = csz[1]; + String[] csz2; + if (csz.length < 3) { + csz2 = csz[1].trim().split(" "); + + city = csz2[0]; + state = csz2[1]; + zip = csz2[2]; } + logger.log(Level.INFO, this.toString()); + + } catch (Exception e) { + logger.log(Level.INFO, e.getMessage()); } + } }