From 13f57d586c038b7857c155300aa6903dd3c1ccf9 Mon Sep 17 00:00:00 2001 From: Van Buren Date: Fri, 12 Sep 2025 16:27:15 -0400 Subject: [PATCH 01/10] feat: update db --- AnimalDB.zip | Bin 4134191 -> 4129889 bytes client/src/components/examples/AnimalList.tsx | 2 +- .../src/components/examples/examples.types.ts | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AnimalDB.zip b/AnimalDB.zip index ae3d896d63681b5a02b74010f09b65a70c05dbba..9aadb49b32cd7895ae595ea03698468f86412b93 100644 GIT binary patch delta 5455 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 XhB`#R>H>i%fS*6GRtFDNfV2Mqj%Vri delta 9659 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 GnErpocc8ie diff --git a/client/src/components/examples/AnimalList.tsx b/client/src/components/examples/AnimalList.tsx index be0eb4c..00fc4fa 100644 --- a/client/src/components/examples/AnimalList.tsx +++ b/client/src/components/examples/AnimalList.tsx @@ -22,7 +22,7 @@ export const AnimalList = ({ Date: Mon, 15 Sep 2025 15:20:06 -0400 Subject: [PATCH 02/10] fix: Semoss date conversions --- AnimalDB.zip | Bin 4129889 -> 4130548 bytes java/src/domain/animals/AnimalData.java | 49 ++++++++++++++++++ .../AddAnimalReactor.java | 2 +- .../DeleteAnimalReactor.java | 2 +- .../animals/GetAnimalByIdReactor.java | 46 ++++++++++++++++ .../GetAnimalsReactor.java | 8 +-- .../examples/GetAnimalByIdReactor.java | 24 --------- .../reactors/examples/HelloUserReactor.java | 35 ------------- 8 files changed, 102 insertions(+), 64 deletions(-) create mode 100644 java/src/domain/animals/AnimalData.java rename java/src/reactors/{examples => animals}/AddAnimalReactor.java (97%) rename java/src/reactors/{examples => animals}/DeleteAnimalReactor.java (97%) create mode 100644 java/src/reactors/animals/GetAnimalByIdReactor.java rename java/src/reactors/{examples => animals}/GetAnimalsReactor.java (84%) delete mode 100644 java/src/reactors/examples/GetAnimalByIdReactor.java delete mode 100644 java/src/reactors/examples/HelloUserReactor.java diff --git a/AnimalDB.zip b/AnimalDB.zip index 9aadb49b32cd7895ae595ea03698468f86412b93..ca62a4d2423f97ec257c162462f43f8710dc93b6 100644 GIT binary patch delta 3736 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 delta 3012 zcmZA32{=?;9{})S3}c;%Y-6viLqyrlt-LC{_EgrgWJxI5qj@FUXez|uwN{qwG7L)U zL&{DQQK)ILC(MMI4q%yz{&ew3|~O)@d{~| zO}-WBpy}u=TI+t>qw{H;&5oS!YY~NX0y!*jC#UJyOq51ZVF3QTc0?LwEq6;v%OK?C zMfawqf=3TiHR+#6s=}oBw2n^VNH(*agBp3l$W6DDPu~<0qp}==B-dXQWIQ=grT2Zp zGblK6NF@HEu77gU;LNu%TH{Er<$=d__zR&khH?EVQI%u;VxgXMPMs4XA@dzK?phx~ zX>6R~zA8H`oWmZ0_iO5vMYw`#qJY9$`h4FqCP^oCyR-&L#oME*5+KuzP!H|L)e61Fb**o?6>hr&fW(y1^Ys!m@;K(EU)18)X* z7n6Q5OOL4$GVXK9f#6i#)Fq)m@gj%N9JNhnFz*6IZCd6 zL;%bjE~LRBmBCmT3|0#Ke z>o_ZXjz!>yKg2p0v}cfGF{RuSH+|XxYbS_Fk*Xm{JTe)XE#X=`F4J9nwmRmpk#jEoGy!aL-Zi zuTlqUWRb$FG?m1%aXI;z80?p8sp1Si=Ss6HYxtA)R05Rkoazw1oNZYgYlGHaO$h$% zI*=r1kGO7hdej{Zp>Ve8f%O(-7?qICTq0p^K>cYpnHk% zZ0yr3d0F$qbANWnj;m-3yY{a07fgw`;$UgSE$oLw))FoVE#rfJ_%q3FuU)<|ypo>Y z*`xJo$c}t@_LR%*vvkUpJd-Vkoh0ZiIWeff{^{!Cotn3D?{$}%Y{rcRhSl!N# zw>-2T`t&b$XU~?Y4By|=%`2o6&E!LApT62~~cTJ+5s1moH7()32mo#}3 zVmva5ZM~D3H#3heX{@+M-o_!hGCMD3fBd9tPdiSuTQEJiR~ZjUGUhywNPEYLi1)8Z z&Ef^8j(T8%758Kc>NGFzUmp>lK`E=xx5t$~kvMR4%J7Fqkc?|&he967B>x_DB|g?~ zjAzR-@lt1PH+L;mRtuSBL0yzB8>{ghyh#RxQ`OFhlXkQ6d08KON4u%UMNQQNz0=XT zj`Bq(USKQDCh&r$N{{4qYrBY*f=24mrXR0lKFoKp?W<@c5sO;R-)oUX5mF>%cZ(M& zI^ZxJ{j~o?DGepMh6bkCJ7n3P>M^VMrW^g#q`wHYC64$tFBW-Cwpy$QRw9D$gkK$5 zeN~T~`J^(xKp)mLsTa6wx6b5!&a_|7kM4+iF^~6LmYMQw4JWOguAXP=3BPVcUvQM) zsJ-1>82pC+(`$Zt`%odB_N->tX=YrbYlZDoYzL#y|NiD@M+3#;4mG1!L;60xzy5el z#*RA4%WpKoe07XD=l6=)vEE0?8FkhUYZ55G3wsj(cYI2xp&`*6ei)@e;$N2dRqwB`m^(jQk4<-Mwl;rT$DjQn0pr~|O+*xA%;4*5 zen2Tj$G?6&o?$C&-jvUFYJ>AHBBWELBh!I}?X-_IfrY8EE0OZ#$Xl1c(U<(^O8vg* zw3SQe&+9B;Ixl&>3CObevW`DNZSuYEJ)%b+nx|sCrkYBX)M_AcBhc~eO@y+7#xvEVDI ze@;E(`P-Gak+;VE4Xvn79GzegDKFWqUnW(b8_-F9GwvK~ayGaw$Ap6a5;Gqf_Z68N@WM*Tq^n=XP4!eJ)X}2d|tjSlw(W+cRmhtAl2Y&xLQl)QWqh zt)$HxdDzIpKG(D#Ole-$szF3dC9QFQgfstIHAs<6TrlfnNm*jzuCcMUillHhD2N-J zIBjoRNGoiRi!AH%pKIr#UnBUl+2AA%azOfNR$Sa96*$Bv3ko{Tyf)$+2K}r(kLhpe z6G&G2VUipi65jq$>%k!jb}Y}&XeJyI*^bt-qMW>}s3}R50}|dY`_BdN K4*$S`djADO>K6e3 diff --git a/java/src/domain/animals/AnimalData.java b/java/src/domain/animals/AnimalData.java new file mode 100644 index 0000000..8066453 --- /dev/null +++ b/java/src/domain/animals/AnimalData.java @@ -0,0 +1,49 @@ +package domain.animals; + +import prerna.date.SemossDate; + +public class AnimalData { + private String animalId; + private String animalType; + private String animalName; + private SemossDate dateOfBirth; + + public AnimalData(String animalId, String animalType, String animalName, SemossDate dateOfBirth) { + this.animalId = animalId; + this.animalType = animalType; + this.animalName = animalName; + this.dateOfBirth = dateOfBirth; + } + + public String getAnimalName() { + return animalName; + } + + public void setAnimalName(String animalName) { + this.animalName = animalName; + } + + public String getAnimalId() { + return animalId; + } + + public void setAnimalId(String animalId) { + this.animalId = animalId; + } + + public SemossDate getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(SemossDate dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getAnimalType() { + return animalType; + } + + public void setAnimalType(String animalType) { + this.animalType = animalType; + } +} diff --git a/java/src/reactors/examples/AddAnimalReactor.java b/java/src/reactors/animals/AddAnimalReactor.java similarity index 97% rename from java/src/reactors/examples/AddAnimalReactor.java rename to java/src/reactors/animals/AddAnimalReactor.java index a320e37..b3177c5 100644 --- a/java/src/reactors/examples/AddAnimalReactor.java +++ b/java/src/reactors/animals/AddAnimalReactor.java @@ -1,4 +1,4 @@ -package reactors.examples; +package reactors.animals; import domain.base.ErrorCode; import domain.base.ProjectException; diff --git a/java/src/reactors/examples/DeleteAnimalReactor.java b/java/src/reactors/animals/DeleteAnimalReactor.java similarity index 97% rename from java/src/reactors/examples/DeleteAnimalReactor.java rename to java/src/reactors/animals/DeleteAnimalReactor.java index 96c9128..692b4ac 100644 --- a/java/src/reactors/examples/DeleteAnimalReactor.java +++ b/java/src/reactors/animals/DeleteAnimalReactor.java @@ -1,4 +1,4 @@ -package reactors.examples; +package reactors.animals; import domain.base.ErrorCode; import domain.base.ProjectException; diff --git a/java/src/reactors/animals/GetAnimalByIdReactor.java b/java/src/reactors/animals/GetAnimalByIdReactor.java new file mode 100644 index 0000000..53fd03a --- /dev/null +++ b/java/src/reactors/animals/GetAnimalByIdReactor.java @@ -0,0 +1,46 @@ +package reactors.animals; + +import java.util.List; +import java.util.Map; + +import domain.animals.AnimalData; +import domain.base.ErrorCode; +import domain.base.ProjectException; +import prerna.date.SemossDate; +import prerna.sablecc2.om.PixelDataType; +import prerna.sablecc2.om.nounmeta.NounMetadata; +import reactors.AbstractProjectReactor; +import util.Constants; +import util.HelperMethods; + +public class GetAnimalByIdReactor extends AbstractProjectReactor { + + public GetAnimalByIdReactor() { + this.keysToGet = new String[] {Constants.ANIMAL_ID}; + this.keyRequired = new int[] {1}; + } + + @Override + protected NounMetadata doExecute() { + String animalId = this.keyValue.get(Constants.ANIMAL_ID); + List> animalData = HelperMethods.getAnimalById(database, animalId); + if (animalData.isEmpty()) { + throw new ProjectException(ErrorCode.NOT_FOUND, "Animal not found"); + } + + if (animalData.size() > 1) { + throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Multiple animals found with that id"); + } + + Map animal = animalData.get(0); + + AnimalData row = + new AnimalData( + (String) animal.get("animalId"), + (String) animal.get("animalName"), + (String) animal.get("animalType"), + (SemossDate) animal.get("dateOfBirth")); + + return new NounMetadata(row, PixelDataType.MAP); + } +} diff --git a/java/src/reactors/examples/GetAnimalsReactor.java b/java/src/reactors/animals/GetAnimalsReactor.java similarity index 84% rename from java/src/reactors/examples/GetAnimalsReactor.java rename to java/src/reactors/animals/GetAnimalsReactor.java index 7dc7a2c..3986775 100644 --- a/java/src/reactors/examples/GetAnimalsReactor.java +++ b/java/src/reactors/animals/GetAnimalsReactor.java @@ -1,9 +1,11 @@ -package reactors.examples; +package reactors.animals; -import domain.examples.AnimalData; import java.util.ArrayList; import java.util.List; import java.util.Map; + +import domain.animals.AnimalData; +import prerna.date.SemossDate; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; import reactors.AbstractProjectReactor; @@ -23,7 +25,7 @@ protected NounMetadata doExecute() { (String) animal.get("animalId"), (String) animal.get("animalName"), (String) animal.get("animalType"), - (String) animal.get("dateOfBirth")); + (SemossDate) animal.get("dateOfBirth")); output.add(row); } diff --git a/java/src/reactors/examples/GetAnimalByIdReactor.java b/java/src/reactors/examples/GetAnimalByIdReactor.java deleted file mode 100644 index f63d578..0000000 --- a/java/src/reactors/examples/GetAnimalByIdReactor.java +++ /dev/null @@ -1,24 +0,0 @@ -package reactors.examples; - -import java.util.Map; -import prerna.sablecc2.om.PixelDataType; -import prerna.sablecc2.om.nounmeta.NounMetadata; -import reactors.AbstractProjectReactor; -import util.Constants; -import util.HelperMethods; - -public class GetAnimalByIdReactor extends AbstractProjectReactor { - - public GetAnimalByIdReactor() { - this.keysToGet = new String[] {Constants.ANIMAL_ID}; - this.keyRequired = new int[] {1}; - } - - @Override - protected NounMetadata doExecute() { - String animalId = this.keyValue.get(Constants.ANIMAL_ID); - Map animalData = HelperMethods.getAnimalById(database, animalId).get(0); - - return new NounMetadata(animalData, PixelDataType.MAP); - } -} diff --git a/java/src/reactors/examples/HelloUserReactor.java b/java/src/reactors/examples/HelloUserReactor.java deleted file mode 100644 index 75feb75..0000000 --- a/java/src/reactors/examples/HelloUserReactor.java +++ /dev/null @@ -1,35 +0,0 @@ -package reactors.examples; - -import prerna.sablecc2.om.PixelDataType; -import prerna.sablecc2.om.ReactorKeysEnum; -import prerna.sablecc2.om.nounmeta.NounMetadata; -import reactors.AbstractProjectReactor; - -public class HelloUserReactor extends AbstractProjectReactor { - - // Note: Has access to protected variables defined in AbstractProjectReactor - - public HelloUserReactor() { - - // list of keys the reactor is expecting - this.keysToGet = new String[] {ReactorKeysEnum.NAME.getKey()}; - - // 1 for required keys, 0 for optional - this.keyRequired = new int[] {0}; - } - - @Override - protected NounMetadata doExecute() { - - // returns null if the argument is not found - String name = this.keyValue.get(ReactorKeysEnum.NAME.getKey()); - - // if name is not provided, use the user's name - name = (name == null) ? user.getPrimaryLoginToken().getName() : name; - - // grabbing user from AbstractProjectReactor - String response = "Hello, " + name + "! Welcome to SEMOSS."; - - return new NounMetadata(response, PixelDataType.CONST_STRING); - } -} From 1b77d96ffa0263430466971cef5de02a800e31b9 Mon Sep 17 00:00:00 2001 From: Tejas Lokeshrao Date: Mon, 15 Sep 2025 15:22:08 -0400 Subject: [PATCH 03/10] fix: adding back default reactor --- .../reactors/example/HelloUserReactor.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 java/src/reactors/example/HelloUserReactor.java diff --git a/java/src/reactors/example/HelloUserReactor.java b/java/src/reactors/example/HelloUserReactor.java new file mode 100644 index 0000000..f00e311 --- /dev/null +++ b/java/src/reactors/example/HelloUserReactor.java @@ -0,0 +1,35 @@ +package reactors.examples; + +import prerna.sablecc2.om.PixelDataType; +import prerna.sablecc2.om.ReactorKeysEnum; +import prerna.sablecc2.om.nounmeta.NounMetadata; +import reactors.AbstractProjectReactor; + +public class HelloUserReactor extends AbstractProjectReactor { + + // Note: Has access to protected variables defined in AbstractProjectReactor + + public HelloUserReactor() { + + // list of keys the reactor is expecting + this.keysToGet = new String[] {ReactorKeysEnum.NAME.getKey()}; + + // 1 for required keys, 0 for optional + this.keyRequired = new int[] {0}; + } + + @Override + protected NounMetadata doExecute() { + + // returns null if the argument is not found + String name = this.keyValue.get(ReactorKeysEnum.NAME.getKey()); + + // if name is not provided, use the user's name + name = (name == null) ? user.getPrimaryLoginToken().getName() : name; + + // grabbing user from AbstractProjectReactor + String response = "Hello, " + name + "! Welcome to SEMOSS."; + + return new NounMetadata(response, PixelDataType.CONST_STRING); + } +} \ No newline at end of file From 053a3c66b7fa50e312926418c33379782c485cc7 Mon Sep 17 00:00:00 2001 From: Tejas Lokeshrao Date: Mon, 15 Sep 2025 15:22:52 -0400 Subject: [PATCH 04/10] fix: formatting --- .../reactors/animals/GetAnimalByIdReactor.java | 18 +++++++++--------- .../reactors/animals/GetAnimalsReactor.java | 3 +-- .../src/reactors/example/HelloUserReactor.java | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/java/src/reactors/animals/GetAnimalByIdReactor.java b/java/src/reactors/animals/GetAnimalByIdReactor.java index 53fd03a..3b0d3db 100644 --- a/java/src/reactors/animals/GetAnimalByIdReactor.java +++ b/java/src/reactors/animals/GetAnimalByIdReactor.java @@ -1,11 +1,10 @@ package reactors.animals; -import java.util.List; -import java.util.Map; - import domain.animals.AnimalData; import domain.base.ErrorCode; import domain.base.ProjectException; +import java.util.List; +import java.util.Map; import prerna.date.SemossDate; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; @@ -25,22 +24,23 @@ protected NounMetadata doExecute() { String animalId = this.keyValue.get(Constants.ANIMAL_ID); List> animalData = HelperMethods.getAnimalById(database, animalId); if (animalData.isEmpty()) { - throw new ProjectException(ErrorCode.NOT_FOUND, "Animal not found"); + throw new ProjectException(ErrorCode.NOT_FOUND, "Animal not found"); } - + if (animalData.size() > 1) { - throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Multiple animals found with that id"); + throw new ProjectException( + ErrorCode.INTERNAL_SERVER_ERROR, "Multiple animals found with that id"); } - + Map animal = animalData.get(0); - + AnimalData row = new AnimalData( (String) animal.get("animalId"), (String) animal.get("animalName"), (String) animal.get("animalType"), (SemossDate) animal.get("dateOfBirth")); - + return new NounMetadata(row, PixelDataType.MAP); } } diff --git a/java/src/reactors/animals/GetAnimalsReactor.java b/java/src/reactors/animals/GetAnimalsReactor.java index 3986775..e3cbe42 100644 --- a/java/src/reactors/animals/GetAnimalsReactor.java +++ b/java/src/reactors/animals/GetAnimalsReactor.java @@ -1,10 +1,9 @@ package reactors.animals; +import domain.animals.AnimalData; import java.util.ArrayList; import java.util.List; import java.util.Map; - -import domain.animals.AnimalData; import prerna.date.SemossDate; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; diff --git a/java/src/reactors/example/HelloUserReactor.java b/java/src/reactors/example/HelloUserReactor.java index f00e311..75feb75 100644 --- a/java/src/reactors/example/HelloUserReactor.java +++ b/java/src/reactors/example/HelloUserReactor.java @@ -32,4 +32,4 @@ protected NounMetadata doExecute() { return new NounMetadata(response, PixelDataType.CONST_STRING); } -} \ No newline at end of file +} From e610c767cc3904cd0e35f7bc32ee8cb694dfe733 Mon Sep 17 00:00:00 2001 From: Tejas Lokeshrao Date: Mon, 15 Sep 2025 15:42:28 -0400 Subject: [PATCH 05/10] fix: comments --- java/src/reactors/animals/AddAnimalReactor.java | 1 + java/src/reactors/animals/DeleteAnimalReactor.java | 1 + java/src/reactors/animals/GetAnimalByIdReactor.java | 1 + java/src/reactors/animals/GetAnimalsReactor.java | 1 + 4 files changed, 4 insertions(+) diff --git a/java/src/reactors/animals/AddAnimalReactor.java b/java/src/reactors/animals/AddAnimalReactor.java index b3177c5..a90ecef 100644 --- a/java/src/reactors/animals/AddAnimalReactor.java +++ b/java/src/reactors/animals/AddAnimalReactor.java @@ -9,6 +9,7 @@ import util.Constants; import util.HelperMethods; +// Add an animal to the database! public class AddAnimalReactor extends AbstractProjectReactor { public AddAnimalReactor() { diff --git a/java/src/reactors/animals/DeleteAnimalReactor.java b/java/src/reactors/animals/DeleteAnimalReactor.java index 692b4ac..a6b5890 100644 --- a/java/src/reactors/animals/DeleteAnimalReactor.java +++ b/java/src/reactors/animals/DeleteAnimalReactor.java @@ -10,6 +10,7 @@ import util.Constants; import util.HelperMethods; +// Remove an animal from the database! public class DeleteAnimalReactor extends AbstractProjectReactor { public DeleteAnimalReactor() { diff --git a/java/src/reactors/animals/GetAnimalByIdReactor.java b/java/src/reactors/animals/GetAnimalByIdReactor.java index 3b0d3db..495177b 100644 --- a/java/src/reactors/animals/GetAnimalByIdReactor.java +++ b/java/src/reactors/animals/GetAnimalByIdReactor.java @@ -12,6 +12,7 @@ import util.Constants; import util.HelperMethods; +// Get an animal by its ID! public class GetAnimalByIdReactor extends AbstractProjectReactor { public GetAnimalByIdReactor() { diff --git a/java/src/reactors/animals/GetAnimalsReactor.java b/java/src/reactors/animals/GetAnimalsReactor.java index e3cbe42..a1a6a31 100644 --- a/java/src/reactors/animals/GetAnimalsReactor.java +++ b/java/src/reactors/animals/GetAnimalsReactor.java @@ -10,6 +10,7 @@ import reactors.AbstractProjectReactor; import util.HelperMethods; +// Get all the animals in the database! public class GetAnimalsReactor extends AbstractProjectReactor { @Override From 4cf0d92dc17f1b6e6c23982a1f3962668e629a4b Mon Sep 17 00:00:00 2001 From: Van Buren Date: Wed, 17 Sep 2025 16:48:37 -0400 Subject: [PATCH 06/10] fix: rename --- java/src/reactors/{example => examples}/HelloUserReactor.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename java/src/reactors/{example => examples}/HelloUserReactor.java (100%) diff --git a/java/src/reactors/example/HelloUserReactor.java b/java/src/reactors/examples/HelloUserReactor.java similarity index 100% rename from java/src/reactors/example/HelloUserReactor.java rename to java/src/reactors/examples/HelloUserReactor.java From 76cb72810520e3392ccb9f222755264e26410854 Mon Sep 17 00:00:00 2001 From: Van Buren Date: Wed, 17 Sep 2025 17:18:51 -0400 Subject: [PATCH 07/10] feat: reorg folders and mess with dates --- client/src/components/examples/AnimalList.tsx | 1 + java/src/domain/examples/AnimalData.java | 47 ------------------- .../database}/AnimalData.java | 11 ++++- .../reactors/animals/GetAnimalsReactor.java | 34 -------------- .../database}/AddAnimalReactor.java | 13 ++++- .../database}/DeleteAnimalReactor.java | 2 +- .../database}/GetAnimalByIdReactor.java | 13 +---- .../examples/database/GetAnimalsReactor.java | 20 ++++++++ java/src/util/HelperMethods.java | 30 ++++++------ 9 files changed, 61 insertions(+), 110 deletions(-) delete mode 100644 java/src/domain/examples/AnimalData.java rename java/src/domain/{animals => examples/database}/AnimalData.java (79%) delete mode 100644 java/src/reactors/animals/GetAnimalsReactor.java rename java/src/reactors/{animals => examples/database}/AddAnimalReactor.java (76%) rename java/src/reactors/{animals => examples/database}/DeleteAnimalReactor.java (96%) rename java/src/reactors/{animals => examples/database}/GetAnimalByIdReactor.java (73%) create mode 100644 java/src/reactors/examples/database/GetAnimalsReactor.java diff --git a/client/src/components/examples/AnimalList.tsx b/client/src/components/examples/AnimalList.tsx index 00fc4fa..e5665bd 100644 --- a/client/src/components/examples/AnimalList.tsx +++ b/client/src/components/examples/AnimalList.tsx @@ -18,6 +18,7 @@ export const AnimalList = ({ loading, onDelete, }: AnimalListProps) => { + console.log(animalList); return ( toMap() { + return Map.of( + "animal_id", animalId, + "animal_type", animalType, + "animal_name", animalName, + "date_of_birth", dateOfBirth); + } } diff --git a/java/src/reactors/animals/GetAnimalsReactor.java b/java/src/reactors/animals/GetAnimalsReactor.java deleted file mode 100644 index a1a6a31..0000000 --- a/java/src/reactors/animals/GetAnimalsReactor.java +++ /dev/null @@ -1,34 +0,0 @@ -package reactors.animals; - -import domain.animals.AnimalData; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import prerna.date.SemossDate; -import prerna.sablecc2.om.PixelDataType; -import prerna.sablecc2.om.nounmeta.NounMetadata; -import reactors.AbstractProjectReactor; -import util.HelperMethods; - -// Get all the animals in the database! -public class GetAnimalsReactor extends AbstractProjectReactor { - - @Override - protected NounMetadata doExecute() { - - List> animals = HelperMethods.getAnimals(database); - List output = new ArrayList<>(); - - for (Map animal : animals) { - AnimalData row = - new AnimalData( - (String) animal.get("animalId"), - (String) animal.get("animalName"), - (String) animal.get("animalType"), - (SemossDate) animal.get("dateOfBirth")); - output.add(row); - } - - return new NounMetadata(output, PixelDataType.VECTOR); - } -} diff --git a/java/src/reactors/animals/AddAnimalReactor.java b/java/src/reactors/examples/database/AddAnimalReactor.java similarity index 76% rename from java/src/reactors/animals/AddAnimalReactor.java rename to java/src/reactors/examples/database/AddAnimalReactor.java index a90ecef..7973dd5 100644 --- a/java/src/reactors/animals/AddAnimalReactor.java +++ b/java/src/reactors/examples/database/AddAnimalReactor.java @@ -1,7 +1,9 @@ -package reactors.animals; +package reactors.examples.database; import domain.base.ErrorCode; import domain.base.ProjectException; +import domain.examples.database.AnimalData; +import java.util.UUID; import org.apache.commons.lang3.StringUtils; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; @@ -31,7 +33,14 @@ protected NounMetadata doExecute() { ErrorCode.BAD_REQUEST, "Animal name, type, and date of birth cannot be empty"); } - HelperMethods.addAnimal(database, animalName, animalType, dateOfBirth); + AnimalData animalData = + new AnimalData( + UUID.randomUUID().toString(), + animalType, + animalName, + new prerna.date.SemossDate(dateOfBirth, "yyyy-MM-dd")); + + HelperMethods.addAnimal(database, animalData); return new NounMetadata(true, PixelDataType.BOOLEAN); } diff --git a/java/src/reactors/animals/DeleteAnimalReactor.java b/java/src/reactors/examples/database/DeleteAnimalReactor.java similarity index 96% rename from java/src/reactors/animals/DeleteAnimalReactor.java rename to java/src/reactors/examples/database/DeleteAnimalReactor.java index a6b5890..1f8ddfa 100644 --- a/java/src/reactors/animals/DeleteAnimalReactor.java +++ b/java/src/reactors/examples/database/DeleteAnimalReactor.java @@ -1,4 +1,4 @@ -package reactors.animals; +package reactors.examples.database; import domain.base.ErrorCode; import domain.base.ProjectException; diff --git a/java/src/reactors/animals/GetAnimalByIdReactor.java b/java/src/reactors/examples/database/GetAnimalByIdReactor.java similarity index 73% rename from java/src/reactors/animals/GetAnimalByIdReactor.java rename to java/src/reactors/examples/database/GetAnimalByIdReactor.java index 495177b..4b88314 100644 --- a/java/src/reactors/animals/GetAnimalByIdReactor.java +++ b/java/src/reactors/examples/database/GetAnimalByIdReactor.java @@ -1,11 +1,9 @@ -package reactors.animals; +package reactors.examples.database; -import domain.animals.AnimalData; import domain.base.ErrorCode; import domain.base.ProjectException; import java.util.List; import java.util.Map; -import prerna.date.SemossDate; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; import reactors.AbstractProjectReactor; @@ -35,13 +33,6 @@ protected NounMetadata doExecute() { Map animal = animalData.get(0); - AnimalData row = - new AnimalData( - (String) animal.get("animalId"), - (String) animal.get("animalName"), - (String) animal.get("animalType"), - (SemossDate) animal.get("dateOfBirth")); - - return new NounMetadata(row, PixelDataType.MAP); + return new NounMetadata(animal, PixelDataType.MAP); } } diff --git a/java/src/reactors/examples/database/GetAnimalsReactor.java b/java/src/reactors/examples/database/GetAnimalsReactor.java new file mode 100644 index 0000000..508c506 --- /dev/null +++ b/java/src/reactors/examples/database/GetAnimalsReactor.java @@ -0,0 +1,20 @@ +package reactors.examples.database; + +import java.util.List; +import java.util.Map; +import prerna.sablecc2.om.PixelDataType; +import prerna.sablecc2.om.nounmeta.NounMetadata; +import reactors.AbstractProjectReactor; +import util.HelperMethods; + +// Get all the animals in the database! +public class GetAnimalsReactor extends AbstractProjectReactor { + + @Override + protected NounMetadata doExecute() { + + List> animals = HelperMethods.getAnimals(database); + + return new NounMetadata(animals, PixelDataType.VECTOR); + } +} diff --git a/java/src/util/HelperMethods.java b/java/src/util/HelperMethods.java index cb44a88..dc4d7c5 100644 --- a/java/src/util/HelperMethods.java +++ b/java/src/util/HelperMethods.java @@ -2,6 +2,7 @@ import domain.base.ErrorCode; import domain.base.ProjectException; +import domain.examples.database.AnimalData; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -23,10 +24,10 @@ public static String getUserId(User user) { public static List> getAnimals(RDBMSNativeEngine database) { SelectQueryStruct qs = new SelectQueryStruct(); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_ID", "animalId")); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_NAME", "animalName")); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_TYPE", "animalType")); - qs.addSelector(new QueryColumnSelector("ANIMAL__DATE_OF_BIRTH", "dateOfBirth")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_ID", "animal_id")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_NAME", "animal_name")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_TYPE", "animal_type")); + qs.addSelector(new QueryColumnSelector("ANIMAL__DATE_OF_BIRTH", "date_of_birth")); return QueryExecutionUtility.flushRsToMap(database, qs); } @@ -34,34 +35,35 @@ public static List> getAnimals(RDBMSNativeEngine database) { public static List> getAnimalById( RDBMSNativeEngine database, String animalId) { SelectQueryStruct qs = new SelectQueryStruct(); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_ID", "animalId")); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_NAME", "animalName")); - qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_TYPE", "animalType")); - qs.addSelector(new QueryColumnSelector("ANIMAL__DATE_OF_BIRTH", "dateOfBirth")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_ID", "animal_id")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_NAME", "animal_name")); + qs.addSelector(new QueryColumnSelector("ANIMAL__ANIMAL_TYPE", "animal_type")); + qs.addSelector(new QueryColumnSelector("ANIMAL__DATE_OF_BIRTH", "date_of_birth")); qs.addExplicitFilter(SimpleQueryFilter.makeColToValFilter("ANIMAL__ANIMAL_ID", "==", animalId)); return QueryExecutionUtility.flushRsToMap(database, qs); } - public static void addAnimal( - RDBMSNativeEngine database, String animalName, String animalType, String dateOfBirth) { + public static void addAnimal(RDBMSNativeEngine database, AnimalData animalData) { Connection con = null; try { con = database.getConnection(); try (PreparedStatement ps = con.prepareStatement( - "INSERT INTO ANIMAL (ANIMAL_NAME, ANIMAL_TYPE, DATE_OF_BIRTH)\n" + "INSERT INTO ANIMAL (ANIMAL_ID, ANIMAL_NAME, ANIMAL_TYPE, DATE_OF_BIRTH)\n" + "VALUES (?, ?, ?);")) { int parameterIndex = 1; - ps.setString(parameterIndex++, animalName); - ps.setString(parameterIndex++, animalType); - ps.setString(parameterIndex++, dateOfBirth); + ps.setString(parameterIndex, animalData.getAnimalId()); + ps.setString(parameterIndex++, animalData.getAnimalName()); + ps.setString(parameterIndex++, animalData.getAnimalType()); + ps.setObject(parameterIndex++, animalData.getDateOfBirth()); ps.execute(); } catch (SQLException e) { throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR); } } catch (Exception e) { + System.out.println(e.getStackTrace().toString()); throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Error adding animal"); } finally { ConnectionUtils.closeAllConnectionsIfPooling(database, con, null, null); From 8f327735fb665aa476f3289c4b8f20be67f16e25 Mon Sep 17 00:00:00 2001 From: Tejas Lokeshrao Date: Thu, 18 Sep 2025 09:56:29 -0400 Subject: [PATCH 08/10] fix: adding animals --- java/src/reactors/examples/database/AddAnimalReactor.java | 3 ++- java/src/util/HelperMethods.java | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/src/reactors/examples/database/AddAnimalReactor.java b/java/src/reactors/examples/database/AddAnimalReactor.java index 7973dd5..916c91d 100644 --- a/java/src/reactors/examples/database/AddAnimalReactor.java +++ b/java/src/reactors/examples/database/AddAnimalReactor.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; +import prerna.date.SemossDate; import reactors.AbstractProjectReactor; import util.Constants; import util.HelperMethods; @@ -38,7 +39,7 @@ protected NounMetadata doExecute() { UUID.randomUUID().toString(), animalType, animalName, - new prerna.date.SemossDate(dateOfBirth, "yyyy-MM-dd")); + new SemossDate(dateOfBirth, "yyyy-MM-dd")); HelperMethods.addAnimal(database, animalData); diff --git a/java/src/util/HelperMethods.java b/java/src/util/HelperMethods.java index dc4d7c5..cbe1f4c 100644 --- a/java/src/util/HelperMethods.java +++ b/java/src/util/HelperMethods.java @@ -52,18 +52,17 @@ public static void addAnimal(RDBMSNativeEngine database, AnimalData animalData) try (PreparedStatement ps = con.prepareStatement( "INSERT INTO ANIMAL (ANIMAL_ID, ANIMAL_NAME, ANIMAL_TYPE, DATE_OF_BIRTH)\n" - + "VALUES (?, ?, ?);")) { + + "VALUES (?, ?, ?, ?);")) { int parameterIndex = 1; - ps.setString(parameterIndex, animalData.getAnimalId()); + ps.setString(parameterIndex++, animalData.getAnimalId()); ps.setString(parameterIndex++, animalData.getAnimalName()); ps.setString(parameterIndex++, animalData.getAnimalType()); - ps.setObject(parameterIndex++, animalData.getDateOfBirth()); + ps.setObject(parameterIndex++, animalData.getDateOfBirth().getFormattedDate()); ps.execute(); } catch (SQLException e) { throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR); } } catch (Exception e) { - System.out.println(e.getStackTrace().toString()); throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Error adding animal"); } finally { ConnectionUtils.closeAllConnectionsIfPooling(database, con, null, null); From 874fed6c0421359c9124eafbe4286ead57d9f8f7 Mon Sep 17 00:00:00 2001 From: Van Buren Date: Thu, 18 Sep 2025 11:32:14 -0400 Subject: [PATCH 09/10] fix: stringify --- client/src/components/examples/DeleteAnimalModal.tsx | 5 +++-- java/src/reactors/examples/database/AddAnimalReactor.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/components/examples/DeleteAnimalModal.tsx b/client/src/components/examples/DeleteAnimalModal.tsx index 9481af0..ddeebaf 100644 --- a/client/src/components/examples/DeleteAnimalModal.tsx +++ b/client/src/components/examples/DeleteAnimalModal.tsx @@ -28,8 +28,9 @@ export const DeleteAnimalModal = ({ * Functions */ const handleSubmitClick = async () => { - runPixel(`DeleteAnimal(${animalToDelete.animal_id})`, () => - onClose(true), + runPixel( + `DeleteAnimal(${JSON.stringify(animalToDelete.animal_id)})`, + () => onClose(true), ); }; diff --git a/java/src/reactors/examples/database/AddAnimalReactor.java b/java/src/reactors/examples/database/AddAnimalReactor.java index 916c91d..de3ca6f 100644 --- a/java/src/reactors/examples/database/AddAnimalReactor.java +++ b/java/src/reactors/examples/database/AddAnimalReactor.java @@ -5,9 +5,9 @@ import domain.examples.database.AnimalData; import java.util.UUID; import org.apache.commons.lang3.StringUtils; +import prerna.date.SemossDate; import prerna.sablecc2.om.PixelDataType; import prerna.sablecc2.om.nounmeta.NounMetadata; -import prerna.date.SemossDate; import reactors.AbstractProjectReactor; import util.Constants; import util.HelperMethods; From cfe2098c59ad7984a748a3c803bdc90a65ca966b Mon Sep 17 00:00:00 2001 From: Van Buren Date: Thu, 18 Sep 2025 11:36:14 -0400 Subject: [PATCH 10/10] refactor: reorg --- .../components/examples/{ => database}/AddAnimalModal.tsx | 2 +- client/src/components/examples/{ => database}/AnimalList.tsx | 2 +- .../components/examples/{ => database}/DeleteAnimalModal.tsx | 4 ++-- .../examples/{examples.types.ts => database/animal.types.ts} | 0 client/src/components/examples/database/index.ts | 4 ++++ client/src/components/examples/index.ts | 5 +---- 6 files changed, 9 insertions(+), 8 deletions(-) rename client/src/components/examples/{ => database}/AddAnimalModal.tsx (98%) rename client/src/components/examples/{ => database}/AnimalList.tsx (97%) rename client/src/components/examples/{ => database}/DeleteAnimalModal.tsx (94%) rename client/src/components/examples/{examples.types.ts => database/animal.types.ts} (100%) create mode 100644 client/src/components/examples/database/index.ts diff --git a/client/src/components/examples/AddAnimalModal.tsx b/client/src/components/examples/database/AddAnimalModal.tsx similarity index 98% rename from client/src/components/examples/AddAnimalModal.tsx rename to client/src/components/examples/database/AddAnimalModal.tsx index 2c0085c..8156872 100644 --- a/client/src/components/examples/AddAnimalModal.tsx +++ b/client/src/components/examples/database/AddAnimalModal.tsx @@ -11,7 +11,7 @@ import { Typography, } from '@mui/material'; import { useState } from 'react'; -import { DatePicker } from '../library'; +import { DatePicker } from '@/components'; import { CloseRounded } from '@mui/icons-material'; export interface AddAnimalModalProps { diff --git a/client/src/components/examples/AnimalList.tsx b/client/src/components/examples/database/AnimalList.tsx similarity index 97% rename from client/src/components/examples/AnimalList.tsx rename to client/src/components/examples/database/AnimalList.tsx index e5665bd..7a3b9f3 100644 --- a/client/src/components/examples/AnimalList.tsx +++ b/client/src/components/examples/database/AnimalList.tsx @@ -1,5 +1,5 @@ import { DataGrid, GridDeleteIcon } from '@mui/x-data-grid'; -import { Animal } from './examples.types'; +import { Animal } from './animal.types'; import { IconButton } from '@mui/material'; export interface AnimalListProps { diff --git a/client/src/components/examples/DeleteAnimalModal.tsx b/client/src/components/examples/database/DeleteAnimalModal.tsx similarity index 94% rename from client/src/components/examples/DeleteAnimalModal.tsx rename to client/src/components/examples/database/DeleteAnimalModal.tsx index ddeebaf..639d3af 100644 --- a/client/src/components/examples/DeleteAnimalModal.tsx +++ b/client/src/components/examples/database/DeleteAnimalModal.tsx @@ -1,5 +1,5 @@ -import { ConfirmationDialog } from '../library'; -import { Animal } from './examples.types'; +import { ConfirmationDialog } from '@/components'; +import { Animal } from './animal.types'; import { useSettingPixel } from '@/hooks'; import { Button } from '@mui/material'; diff --git a/client/src/components/examples/examples.types.ts b/client/src/components/examples/database/animal.types.ts similarity index 100% rename from client/src/components/examples/examples.types.ts rename to client/src/components/examples/database/animal.types.ts diff --git a/client/src/components/examples/database/index.ts b/client/src/components/examples/database/index.ts new file mode 100644 index 0000000..a81a85e --- /dev/null +++ b/client/src/components/examples/database/index.ts @@ -0,0 +1,4 @@ +export * from './animal.types'; +export * from './AddAnimalModal'; +export * from './DeleteAnimalModal'; +export * from './AnimalList'; diff --git a/client/src/components/examples/index.ts b/client/src/components/examples/index.ts index d2a58ae..9cd8c5a 100644 --- a/client/src/components/examples/index.ts +++ b/client/src/components/examples/index.ts @@ -1,4 +1 @@ -export * from './AnimalList'; -export * from './examples.types'; -export * from './AddAnimalModal'; -export * from './DeleteAnimalModal'; +export * from './database';