From 00133c597904315480909d6be3ac728eff51531e Mon Sep 17 00:00:00 2001 From: Sherwin Price Date: Fri, 20 Feb 2026 00:01:03 -0500 Subject: [PATCH] update project --- .../executionHistory/executionHistory.bin | Bin 126274 -> 126274 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/9.3.1/fileHashes/fileHashes.bin | Bin 27047 -> 28497 bytes .gradle/9.3.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 19973 -> 20045 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .settings/org.eclipse.buildship.core.prefs | 4 +- db/sample.db | Bin 12288 -> 12288 bytes readme.txt | 61 ++++++------------ .../edu/bookocontacts/ControlDDXDialog.java | 2 +- .../edu/bookocontacts/ViewController.java | 6 +- .../java/edu/bookocontacts/model/Contact.java | 1 + .../java/edu/bookocontacts/model/DATASET.java | 30 ++++++--- .../edu/bookocontacts/model/MailAddress.java | 31 +++++---- 15 files changed, 71 insertions(+), 64 deletions(-) diff --git a/.gradle/9.3.1/executionHistory/executionHistory.bin b/.gradle/9.3.1/executionHistory/executionHistory.bin index 1d8e1c2bcac58155987c5bc31a6afed25e1142a7..7128eacfdbcad9aef5f1280e620ba31c777ba56e 100755 GIT binary patch delta 1416 zcmX?fi~Z0o_6;Vxb#f|7Op8l1%v19+vMMsm^DBz8QgceOGm9z(-n#wZz(ARCC27&E!>pv+{8cV?3d z!=ypNtYG2E2e!#hKKG7~@zi9-3@MN}Ou52)oyn2gZD8C9@BJpfgmb4e3NuPfcTi+B zVmyzb@qoqjVs1wD$pPy)C-d**f|@YhK#5U}iE-ED#%-39e;zQIykn>B4{Zf4T<|06{bsGU=*Hw;l{M- zM=mf5Gv1wi@rK*veK*6WD^G!Q&s~WWJUr1nEuY`he_3#`{+x`^V@#7T+;E>HIW z^-GMxlOJE5KKX30AS3tW!h*S*A58Ei(cu!)_sw7wCe`(Zn=jl5VP@PvdE-&L={2_) zYoSR~eDa%h;?o^&GkQ%fpAJf^5P^%g8H12ju;u2bq~^p-FSx_#hE1ILE_U&0cNqha z4ThOxe2>uwn>lChVK*oKKBFHt_43bA#i#c_VDv&(I9=f(qo|Otb>G!pFMRtKW&Abg zbyZ1ZTsFDzwZgQ;jI2zITPHVeGZ4*6EK3wLn_xM+1`QL*^H={H_5YJp8F zI3hFIA(Lmi^Gil6mW{W1j!$oV$tX9y>Jg&=%X1L7?-8R8%O4PH-y=pVmYKJEj!##7 z#V9InxFfZ1hL54$ty!C%#_z8CHRE>A@#DtNr~AHQRA-qFQdaSbQG;bMh*kfXQI%sk zSiwjB=@(xyib`~vE3zMp_-DqFZr$=-`BeNauHl6as0)}qs4wxjB3kW; zFQ;3ExM$-%*EJKK-vn9nQFwaZYep%NZ<%Y(Ib8juBJbmst&rBMI{!}3@#%A3Gs;b$ z`h-z{Yr!3m;sqj%(f2M?9~yC1u*`+N+f zcslP>Mw!4f^Y%YKoIN8g=g)JFm7#y1Ed(3$(Vm$>U}uTeKNa!h=xf*X*4rPFoXgB0 zFlXjnhkdvAY<;Blt-09JsGgZYK>8BP^p(YW*R#@|y0K3GBs3{blkow#*eW<8GP!xP S(BzUhb0#H=?Yz$zP1ym_@n$#x delta 923 zcmX?fi~Z0o_6;Vxb<9%CjZ&+!P0GsBQt}e3j4G@0t5Oql3zISh-nDSIzVZXBgeK zH}x~_VPoW;tnhp8_6zllylj&LKL$*%y~UUV3QG6MGLLzuZn*bp3^l zeA7?eW3-rV{){nxdg6UXo9P0J7~`k^0kLwQGe%9H^nlTP`oHIlF+v3sbEDP>|H`vkV z^v0Kra?`UOF$%C;265{iG3v0ifLQAuF@hX}zldK(@_!%_uj$^$DW@7l?b@c!3Dx^vM$ri%sA9 zgi(kEBsT30qnt>G3|r!|No$kM>gq&iZ`Jb$NlgFygi$6i%VgJV!<)rrTb4H`bh5J- zf@F>xzp`d#5HQv;kK6BWn6FuNl67YdlQ}bkz|y0y>^L@EI%0V$?fMm;Jr9@}1f-5d h9aX5)lG)p&UmyNA(`{0m=JXS97%R3*KVwv92LLMgl0N_d diff --git a/.gradle/9.3.1/executionHistory/executionHistory.lock b/.gradle/9.3.1/executionHistory/executionHistory.lock index cb9861733db1738471ecd27b002eab10cc5d6e5e..0c5718c1a0292bb77e43c3d7df8d47f511a6121b 100755 GIT binary patch literal 17 UcmZSXH>umx74fHr0Sp+;05x0$k^lez literal 17 UcmZSXH>umx74fHr0Sp)o05w(wi~s-t diff --git a/.gradle/9.3.1/fileHashes/fileHashes.bin b/.gradle/9.3.1/fileHashes/fileHashes.bin index 61b8b5125d04235eebe178491556d15189f7d442..b99c6a5dfdab499dbf3a6866d92fda275fcd9d9d 100755 GIT binary patch delta 1311 zcmZ2}nepO1#tkMCj3*|WN>uVssq^-l_QjF`403)>UMis=(Ba*!&iSn1GFXfu%Xaf# ziIw8@1Z#WDQ&D%ZMR3?yrQ%bD;3_iz4F!Ac8qlC$Cj%5YTRa&Cone>m5WeFMPAAas;D* zZF|SJ8QWU|A)?u{Czq-y@^c=Nn3ALN6e5=Ud2+9cg@9{}#!hMO25)i?>x0COx&g5q<5cpy2nh6ohjh&pUmLZTN zF#mDml2buYLG8(B)qV&R8_u=;uzT5ch+ww)B$bk!YoN4({m>mhU-BX zu|ZHqKZKDt`5=t3F;;5w{1{Q@Co!I2^%WonNPWeV81Km-^%Wp#Q07IsrUB~ z-kcWUC^-3Ik`hnF!)qrY4rNWAY?!Rh{P5bz$x#&2(~jsv5*gjj2+T*CvT_KfDH&WEPtIIR#|&g~_t1Qjmp9)d4b&fq_B(Bf5^s^Hao`K`F02MW6pkj61|F+y_AF0Le(S`v3p{ delta 284 zcmcb3k8$~B#tkMCjH@S`N>olhCLzB0tHeXb&F`e9Gfti><2m`CjQ-?U*$IKZfq`*O+&#xm1~6dX&%nT-XUxFBpvl0%pa{YO*mXp>fHg3%@88TA z#KSn*K3J6bUWEPR!f-v7xO))}lVgLx49Cg+5Qg*QgAj)6X873IYHr C1#0#H diff --git a/.gradle/9.3.1/fileHashes/fileHashes.lock b/.gradle/9.3.1/fileHashes/fileHashes.lock index 8d8daeef27cc6bc2773923046f8eb3bce597d054..32d730993f0ba8d75fb5e2e9e78efdd1ea6e3427 100755 GIT binary patch literal 17 VcmZS1)BavF>R`O&vu@^ZeDhl+|%_LX16#G$xR@rU?EgCG2x9X*b) JPWJco0076EETsSd delta 46 zcmX>*hp}}I;|3E6#-Pon5-*rG`$|hPZ?2P*XPmrMeijq^!HtSP#5Wp52yAxrIKm15 DfrAic diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index d3d01cb73ead872f4fc0541fe1d65143ee9d0110..ad8478b28e388ba89f785931a414c8da1c83c348 100755 GIT binary patch literal 8 PcmZQzV4PF&SoJCZ2*LvM literal 8 PcmZQzV4PENgxLfD2Y><* 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 edc534093e77e1c2834d0bad4d6d022d8b9a8d59..c5b9ffa2a22d5982697c4ef922956897169ccf18 100644 GIT binary patch delta 219 zcmZojXh@hK%_ucd#+gxSW5N=C5jNg`4E&e*8+rfnt>Uxhcj8y)d%m$Sg?Dp}Y#t*| zw6wSd2Roy*xT>h>`kx+caZy0)C`jKb2Y zyxweHiIu^Lc`2zy#U_RZy5<%px)$bU#sN90iN%R|B?G?VezAg$z z2Idx%8{`|s`Cl@y@n2`;f6xD$|11Av{=59wL2$F8!Uq0{0i2UB>Pv_-Ffg!kv9K~T QGO}@kNKPgeW=2j90MV^EZ~y=R delta 263 zcmZojXh@hK%_uNY#+gxIW5N=C5f0uO2L8+ZjlBQ(R`FT$?&VkKt=U+Z!n?UfHjlC1 zL0nv!mzUimKPRWsH?=4))!4vL*U;El*VNRMfq_9$R9scxm)j{bCnq>Jvm^r~Yieq$ zYiML_l2jbQ$<8P)s;ZyJ=A4+6lNyv?Tx?=utZQOyqHADkY@A$VZeeL*;82;Ek)N-Z zoS$oGU|^sSo{?FST9lcWuHccHDW0BDqN5O;pPQ=SoLN$-qu}eOU~Ft`Jh?%>QJjH+ zfrI}dBmYbO_xu<6fAfFkf6RZE|N3S{g$?`@12`vN)Rz!vVdh}uVqs-wWMtz6k(^8{ I%#55I08T(f#Q*>R 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()); } + } }