From 5e570f6f7e3745d62acccec4591cec0ad9a9bed6 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 08:44:03 +0330 Subject: [PATCH 1/7] .gitignore added, phase01-search started --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..055c8dc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +EnglishData \ No newline at end of file From 7d60b6472b9526300f1a6ce7b5249ae7f8394481 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 08:51:39 +0330 Subject: [PATCH 2/7] EntryStructure class added. --- .gitignore | 3 ++- Phase01-Search/EntryStructure.java | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Phase01-Search/EntryStructure.java diff --git a/.gitignore b/.gitignore index 055c8dc..1abb6b7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -EnglishData \ No newline at end of file +EnglishData +.fake \ No newline at end of file diff --git a/Phase01-Search/EntryStructure.java b/Phase01-Search/EntryStructure.java new file mode 100644 index 0000000..638fbd2 --- /dev/null +++ b/Phase01-Search/EntryStructure.java @@ -0,0 +1,20 @@ +import java.util.HashSet; +import java.util.Set; + +public class EntryStructure { + private String word; + private Set fileNames = new HashSet(); + + public EntryStructure(String word, Set file_names) { + this.word = word; + this.fileNames = file_names; + } + + public String getWord() { + return word; + } + + public Set getFile_names() { + return fileNames; + } +} \ No newline at end of file From 31eb0c654aec862a9c1d274b2a71f5d80085e108 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 08:58:28 +0330 Subject: [PATCH 3/7] FileReader class added. --- Phase01-Search/FileReader.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Phase01-Search/FileReader.java diff --git a/Phase01-Search/FileReader.java b/Phase01-Search/FileReader.java new file mode 100644 index 0000000..f4991f6 --- /dev/null +++ b/Phase01-Search/FileReader.java @@ -0,0 +1,26 @@ +import java.nio.file.*; +import java.util.ArrayList; + +public class FileReader { + public static ArrayList getFileNames(String path){ + ArrayList fileNames = new ArrayList(); + Path folder = Paths.get(path); + + if (Files.isDirectory(folder)) { + try { + DirectoryStream directoryStream = Files.newDirectoryStream(folder); + for (Path filePath : directoryStream) { + + fileNames.add(String.valueOf(filePath.getFileName())); + } + directoryStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + System.out.println("Specified path is not a directory."); + } + + return fileNames; + } +} From 147aa3bc9ee67ec442407fe51028c976ac440530 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 09:37:56 +0330 Subject: [PATCH 4/7] main class added. --- Phase01-Search/EntryStructure.java | 8 +- Phase01-Search/Main.java | 120 +++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 Phase01-Search/Main.java diff --git a/Phase01-Search/EntryStructure.java b/Phase01-Search/EntryStructure.java index 638fbd2..fda5d77 100644 --- a/Phase01-Search/EntryStructure.java +++ b/Phase01-Search/EntryStructure.java @@ -3,18 +3,18 @@ public class EntryStructure { private String word; - private Set fileNames = new HashSet(); + private Set fileNames = new HashSet(); - public EntryStructure(String word, Set file_names) { + public EntryStructure(String word, Set fileNames) { this.word = word; - this.fileNames = file_names; + this.fileNames = fileNames; } public String getWord() { return word; } - public Set getFile_names() { + public Set getFileNames() { return fileNames; } } \ No newline at end of file diff --git a/Phase01-Search/Main.java b/Phase01-Search/Main.java new file mode 100644 index 0000000..ec5194e --- /dev/null +++ b/Phase01-Search/Main.java @@ -0,0 +1,120 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Scanner; +import java.util.Set; +import java.util.Map; + +public class Main { + + // Searchs a word in inverted index then returns name of files that are containing that word + public static Set search_word(String word, Map> invertedIndex) { + return invertedIndex.getOrDefault(word, Collections.emptySet()); + } + + public static void main(String[] args) { + + // Getting directory path and user input + Scanner myScanner = new Scanner(System.in); + + System.out.print("Enter Data Folder Path: "); + final String directoryPath = myScanner.nextLine(); + + System.out.print("Enter Search Query: "); + final String userInput = myScanner.nextLine(); + + // Finding name of all files that are in EnglishData directory + ArrayList fileNamesInFolder = FileReader.getFileNames(directoryPath); + + // Reading files that are in data direcotry and constructing inverted index table + Map> invertedIndex = new HashMap<>(); + + for (String fileName : fileNamesInFolder) { + try { + File file = new File(directoryPath + "/" + fileName); + Scanner myReader = new Scanner(file); + + while (myReader.hasNextLine()) { + Set documentIds = new HashSet(); + documentIds.add(fileName); + + String data = myReader.nextLine(); + String[] splittedData = data.split(" "); + + for (String word : splittedData) { + // Ignoring empty words + if (word == "") { + continue; + } + // Inserting new entry to inverted index table + invertedIndex.computeIfAbsent(word, k -> new HashSet<>()).addAll(documentIds); + } + } + myReader.close(); + } catch (FileNotFoundException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } + + // Splitting user input to undrestand the command + String[] userInputWords = userInput.split(" "); + + ArrayList necessaryWords = new ArrayList(); + ArrayList orWords = new ArrayList(); + ArrayList notWords = new ArrayList(); + + // Categorizing command words into orWords, necessary and forbidden groups + for (String word : userInputWords) { + if (word.startsWith("+")) { + word = word.replace('+', ' ').trim(); + orWords.add(word); + } else if (word.startsWith("-")) { + word = word.replace('-', ' ').trim(); + notWords.add(word); + } else { + necessaryWords.add(word); + } + } + myScanner.close(); + + // Initializing some sets for forming final answer + Set necessaryFiles = new HashSet(); + Set forbiddenFiles = new HashSet(); + Set orFiles = new HashSet(); + + // Finding intersection between necessary words' file names + for (String nWord : necessaryWords) { + if(necessaryFiles.isEmpty()){ + necessaryFiles.addAll(search_word(nWord, invertedIndex)); + } + else{ + necessaryFiles.retainAll(search_word(nWord, invertedIndex)); + } + } + + // Finding all orWords' file names + for (String orWord : orWords) { + orFiles.addAll(search_word(orWord, invertedIndex)); + } + + // Finding all forbidden words' file names + for (String notWord : notWords) { + forbiddenFiles.addAll(search_word(notWord, invertedIndex)); + } + + // Final answer is intersection between necessary files and orFiles - forbidden files + Set intersection = new HashSet<>(necessaryFiles); + intersection.retainAll(orFiles); + intersection.removeAll(forbiddenFiles); + + //Printing the result + System.out.println("Results: "); + for (String entry : intersection) { + System.out.println(entry); + } + } +} \ No newline at end of file From d820ee1921d5089567ac7bcfefb9a004daf09c3f Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 09:41:31 +0330 Subject: [PATCH 5/7] some renames based on java name conventions --- Phase01-Search/Main.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Phase01-Search/Main.java b/Phase01-Search/Main.java index ec5194e..dbdd645 100644 --- a/Phase01-Search/Main.java +++ b/Phase01-Search/Main.java @@ -11,7 +11,7 @@ public class Main { // Searchs a word in inverted index then returns name of files that are containing that word - public static Set search_word(String word, Map> invertedIndex) { + public static Set searchWord(String word, Map> invertedIndex) { return invertedIndex.getOrDefault(word, Collections.emptySet()); } @@ -89,21 +89,21 @@ public static void main(String[] args) { // Finding intersection between necessary words' file names for (String nWord : necessaryWords) { if(necessaryFiles.isEmpty()){ - necessaryFiles.addAll(search_word(nWord, invertedIndex)); + necessaryFiles.addAll(searchWord(nWord, invertedIndex)); } else{ - necessaryFiles.retainAll(search_word(nWord, invertedIndex)); + necessaryFiles.retainAll(searchWord(nWord, invertedIndex)); } } // Finding all orWords' file names for (String orWord : orWords) { - orFiles.addAll(search_word(orWord, invertedIndex)); + orFiles.addAll(searchWord(orWord, invertedIndex)); } // Finding all forbidden words' file names for (String notWord : notWords) { - forbiddenFiles.addAll(search_word(notWord, invertedIndex)); + forbiddenFiles.addAll(searchWord(notWord, invertedIndex)); } // Final answer is intersection between necessary files and orFiles - forbidden files From 3c02cf38a7da25882ae5f8ea62b6c62709802960 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Dehghani Date: Thu, 23 Nov 2023 10:37:21 +0330 Subject: [PATCH 6/7] maven support added to project --- phase01_search/pom.xml | 16 ++++++++++++++++ .../main/java/com/example}/EntryStructure.java | 2 ++ .../src/main/java/com/example}/FileReader.java | 2 ++ .../src/main/java/com/example}/Main.java | 2 ++ .../classes/com/example/EntryStructure.class | Bin 0 -> 915 bytes .../target/classes/com/example/FileReader.class | Bin 0 -> 2062 bytes .../target/classes/com/example/Main.class | Bin 0 -> 5772 bytes .../target/maven-archiver/pom.properties | 3 +++ .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 3 +++ .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 .../target/phase01_search-1.0-SNAPSHOT.jar | Bin 0 -> 6154 bytes 13 files changed, 28 insertions(+) create mode 100644 phase01_search/pom.xml rename {Phase01-Search => phase01_search/src/main/java/com/example}/EntryStructure.java (95%) rename {Phase01-Search => phase01_search/src/main/java/com/example}/FileReader.java (97%) rename {Phase01-Search => phase01_search/src/main/java/com/example}/Main.java (99%) create mode 100644 phase01_search/target/classes/com/example/EntryStructure.class create mode 100644 phase01_search/target/classes/com/example/FileReader.class create mode 100644 phase01_search/target/classes/com/example/Main.class create mode 100644 phase01_search/target/maven-archiver/pom.properties create mode 100644 phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 phase01_search/target/phase01_search-1.0-SNAPSHOT.jar diff --git a/phase01_search/pom.xml b/phase01_search/pom.xml new file mode 100644 index 0000000..b454845 --- /dev/null +++ b/phase01_search/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.example + phase01_search + 1.0-SNAPSHOT + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/Phase01-Search/EntryStructure.java b/phase01_search/src/main/java/com/example/EntryStructure.java similarity index 95% rename from Phase01-Search/EntryStructure.java rename to phase01_search/src/main/java/com/example/EntryStructure.java index fda5d77..368cda0 100644 --- a/Phase01-Search/EntryStructure.java +++ b/phase01_search/src/main/java/com/example/EntryStructure.java @@ -1,3 +1,5 @@ +package com.example; + import java.util.HashSet; import java.util.Set; diff --git a/Phase01-Search/FileReader.java b/phase01_search/src/main/java/com/example/FileReader.java similarity index 97% rename from Phase01-Search/FileReader.java rename to phase01_search/src/main/java/com/example/FileReader.java index f4991f6..d850fb3 100644 --- a/Phase01-Search/FileReader.java +++ b/phase01_search/src/main/java/com/example/FileReader.java @@ -1,3 +1,5 @@ +package com.example; + import java.nio.file.*; import java.util.ArrayList; diff --git a/Phase01-Search/Main.java b/phase01_search/src/main/java/com/example/Main.java similarity index 99% rename from Phase01-Search/Main.java rename to phase01_search/src/main/java/com/example/Main.java index dbdd645..6ed4002 100644 --- a/Phase01-Search/Main.java +++ b/phase01_search/src/main/java/com/example/Main.java @@ -1,3 +1,5 @@ +package com.example; + import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; diff --git a/phase01_search/target/classes/com/example/EntryStructure.class b/phase01_search/target/classes/com/example/EntryStructure.class new file mode 100644 index 0000000000000000000000000000000000000000..4c50f320218e8b753f9064a9142cecd8a543179e GIT binary patch literal 915 zcmah{T~8B16g_vl?b^E74@!}WA_7Uf8u!Hq69_Lx<3ocFH8nm?m$3}l?viB|#9yU} zghUg6fIrH3X9{9zjoD=O&OP^@JLk;&{PpbzfM?k9;1JqTIu7MWF+PfA_%hMiSzl*) zr1MOAa0#_TaU#N4B%|=n@K8pY;GU-0KB3XOhPX#1qisU@gNo&z7|UZqbyARP6^DJP z4cb?uL>O+u#x%M!%eKoMr5%+hy-V2a%oa>DY;-%w^1h) zI^BVXMMB*QwK`sl;{(=GK?Aii2rVBTZkgz=k0MG&wMyh(J|4>Ktr*6vw9!i=5f4PB z%>FXz>I20dt@i%yKg(}Tx1JqcwR8 zKh3j98aBe>^c#6rmr1bpc;Hf z8Z#H%Xdv JNjB`L&EFCD!j=F4 literal 0 HcmV?d00001 diff --git a/phase01_search/target/classes/com/example/FileReader.class b/phase01_search/target/classes/com/example/FileReader.class new file mode 100644 index 0000000000000000000000000000000000000000..45419fb839d4b2dc14925e4c0cdbf08a57c8ef6d GIT binary patch literal 2062 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 A9{>OV literal 0 HcmV?d00001 diff --git a/phase01_search/target/maven-archiver/pom.properties b/phase01_search/target/maven-archiver/pom.properties new file mode 100644 index 0000000..5884250 --- /dev/null +++ b/phase01_search/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=phase01_search +groupId=com.example +version=1.0-SNAPSHOT diff --git a/phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3011d0e --- /dev/null +++ b/phase01_search/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +C:\Users\mhda1\Documents\VSCode\Mohaymen\Fall1402-TwoWeek-InternShip-Backend\phase01_search\src\main\java\com\example\Main.java +C:\Users\mhda1\Documents\VSCode\Mohaymen\Fall1402-TwoWeek-InternShip-Backend\phase01_search\src\main\java\com\example\EntryStructure.java +C:\Users\mhda1\Documents\VSCode\Mohaymen\Fall1402-TwoWeek-InternShip-Backend\phase01_search\src\main\java\com\example\FileReader.java diff --git a/phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/phase01_search/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/phase01_search/target/phase01_search-1.0-SNAPSHOT.jar b/phase01_search/target/phase01_search-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6e9a413c5c3dbcd78d15723a9d194fb49eca918 GIT binary patch literal 6154 zcmb7|1yoeu_Q#1Kq+3#y)FFpZKpN>Dh7Ki$8oFUbL=l8x5R?u9>6C8ikd6UGI;C40 z@ej}Uo;?1)_xrE^nRVAXYwq6Pv(LU~pL@?oLm3l*hlYlWh9(5@)J40}Zd~+LWg${r zifVE^8W(017iPHsFf+opKG3+ht$A@>{QJjDRZ2}!PF4%Tttz*t+S9F~%*8!OsLTcI z>*+5A^A7XREV^(jsd6f+4!Y--fwxsTm3y_eT?oLqpYN&m_h|8c;m6K#2KM$S4(=;; zej(&mP{pX{m|I`VJzob1GK7wX_6`#b?e>Mv z<;?#zqO60Pi?^1Wi@Uj-y9<=t+|Jb1^%b~VZCsK@98ePoqtl zc1RILBkK?tAq0#3&pLmG%NzeH@@2zl)0lV{0XZemDVQn&HEDokbKa)@ihG=R|CP&= z7N99vA@bf$RII5U-rRehLhmh6it`Qy)(5Il>HbROO&TXmGR}?gxfiCHpaJFr;{q*b z5JEWcOgqty+LG?2Q94uFCbx|M^ub)*)R&_6Db$JY>S&?ZqI}O97vE13&wxHwX6NvO zF(%=;4UJ`L=f)N)^>mZN&N`7Ofi|W2WADxykqIBy^MUj8hPZa3G}kfX)Ue+3p0BI( z9-lK_sJ}!OibBNHx{LU`#7f=O_|@J?S_=kN&+bgE64?znb`Pd@4a)xNyDfs7;)c!B z$YdlLwao;2Y-2wN@2th#d)6dgEwe%uc6dSs-6Blg`Z3as@1v7L>=fPsxTp5^10p8& z1D#h?&OkWB1J@fcdKtiiMO_?w8f7YU#1=-i-i?u+0QNr}s)`Ogl9TW^TwSc<( zUJFR=H61!_igTiB0>wb(mJAKU8`|RmhPGTLxETkz*0^O-woT)Ag#Gi=)=TkJ z7LT#fGN4;&+vn1D!fGxJgjTs?_*>Y@%4A6<6X#Y3#?`M0xjcYDChrRLtLJyhPPr4n zm_xYTV9SGp2z)|VcM*!U1+v1r;-ItgR0gEO7AFQv(uYxIloW{b(VhST<0AObpg5`Q-Rnc~YakdO3jW+?! ze6JfMrc|lT6?i%pOT>8Ml$ElI>4tOYHgT9DMk(jKSIB9{^ROg^$?LT|tvG5&_lL0CebdyOTX6V9% z2$AURDyfohHT-PK zu+lF~h-@wOkc#IR0@W?m@Gd*h)(OgdJJ{5N|Ab@(tCXij+V9;@waI#bH^t&KFxHEs zPt{L!{@HJW89i04W?;f(^#!GbL0wduWcm*ggug3wkaER}u5(efUTu_IQ|5G!V}>0R+7a^3t8blKX^;ZA^}hzkwtUB660Q zL90C2*+G3uYj~YZIV$tm!G+QDkmMALc<%8!^TTuUZ$@k}+9t;-{qES4Mh}mXGZ<#W z9-v8wRd__&0%)$4c;EvuY`No5^y55Jg;Qt$8y;#ic=l7jN6_>sSaR0B+-Y*{jRS8B5(ny!^G?S3#{cCG&aDHzx0we5g_iVgMPQG5Gz)w4%- zGmp?yXNianpD|Y0IG$wfHvH!fq0BCr_w3@ucyjTornuV|t1k(3_8Rw692LD-K;+7T()D&rTZd9Zg5O~yezDg=NrFFxGG^P+qN zD9f=*UCv}R5GBFdq2ei{+?LaPM2bmv?r2#$se1nvTN1cW zXiNwigZQu(fk2IWB=wN#)JhgN*P@KdUts1{TnP7@1ZS%ZNquuvJK9+`m_&m#0I0DQ zVwLFiA!AaB`d&BDUL!L z)QaejCoGEIBdbP+Y%=-OlFjLSO1Pf;B;Fl-sQAReTrnaOIn>+<{BA04TE?fAT7th` zC46tCL)um!CK5PVBLr8LO;1ECk0u7v_ z8`ra=>_8r?oseehmDlW{_=HI&@SMmkF`uC)+5%B7IVnOq-zvl>DAl_slC&bT_x68~ zAef(*YEm`2x z@Ik!|yDrW?I}030L#`*vAA%a;4Nd?&LJXJbw^2RV3R~<13?P*)R_=F~jI!laeh%CK z{@~LUs0n!%ti_8HoKJ^UY@=@$gGC~%PvTAu0R;#(q0Ec#VF`b$FgzPo`=zJ377j6O zHp9x&3KnV-D~F`qjLAiH12nq5qjhF)%Mi8#L7Yxt%~c$}%!kPaA}#?BgSmB!$s-F) zNlT%~K7Z|>HZmR>r=jnxu-#d0rJA=rD7P9Z`Cb-}=01{^gmG%PS~!pq2LI3o7DlI4 zF~t`RwH_s5uv4(5cese;hte3<^4q2_h)Wbge-`r55sX)?V{_2V&LP{Lf_ z0D(CaLD3-F7PLbeUxI|ZShZLxuZ)T103VqH#kpa{iTUXQqRSoj0(E*A9{8o9$WO3|`G=8pfmvhkGoc*t#uKxwvM{&}R~v?NM*iMb>pdOehGH zjwp&xt0Y{4qjt_!zVn-0^&vj6K6X5z%!7Jjt;3|=#5&#kbp|sb*cz+FzS0bkDd(ZC z&i2i5lSa)h=#jMQ2-pMai9u!phFa~#x_OQG#;C>fTD{ENl98Fhh0{weY z$~8PfuLmS}xSJw5YuQNd5rTyJ4LDk)ji{<+L-;+<6Ok~8_&dT-pWa5k_rylOy24PQS|e8 z)Ab1Ju&^>mhN5?GzUeRvj5BvK3`{Bo5nj7k#r_7aU z;&yJEGA2iHm(m{Yj$d^@;D{EBa-O%FK)ALh!x2Oc8hmqKFEG3>|N@Jb=gS9mOQ}<+YmEe1V(2 z=F1riC$joRdbJV6sq}p1{BL@3TUo`Y#s=lhe%iM`M+F!qNA_K~u>}?+a<(=wuQeSNa5zZC0 z$g1JfH;!kokI{noc9uW4_JY@l25@!}BCsx44(@ruxAn!ukFykU)m_2ut&rk@8I-Ekxc$no( z^j<2!LuUv~XVU0$FpQ_^@A`@{PnH@M5Lj+@Yb&#NnF4lvXB6RX#?f#XIKXB1Y}OcQ z;*9wPVOUjP=Xl zj)(tPQ8*^6>Z!!6*s`^F`qezh5fF2FV3y^`7`P~uBGCZ~Jl+(-<*zAd-Jrwet>@mA z5AMBHHgD(^-qOV8GTkn-O^#$ZBC78m+{Oq(wRi>8?bEAF&l9}@?N^=TuGsKL(8#_% zADKDj9#LM!;TCK*mSE9l#=(2`h)!~#5=SD_(!aWXe4D)Rq-emC`I%BKL2u}+l~?Go z;rH4u1|v!)&dv7z>PoQnoX**cypULShh`qdW7*QGTMbOwtR4v4GlO=vgAf-{HK2mP z<5ow7oYoc5vuH^9LtLEK&x6|TfZva_c;}gyt$q_ptaKN0TyvWGl3G_F<82tUTR}AV zWh>U7$eNs!LbizP)jkf?mFa^+ z##ki$)W+XRcR$^GIsq3|h&KP4DMrl^X=K3)ETLf0jSAmqIvs6TD78~0|A0I}-vob* z_J|PdTM=$&Sd(JPq;W*Mr!~J}iA>g*&0<+O26R6yn=_*eL??XHw5>tGdT#L1%lP5GZX znuQ_&<~28bKyuSv)AnG;_9Ps)7EX%ACJg?%J6_VV8#(aRynfHE{_)8*OLZr|PpGdS zn;td|Df6?4_jL?>zp)?C$LjRS%rH?rI_op0;ifFZzzwNDyLH4%%T!c7Y`R& z2>a5~YK9KWcdCW-U6-f~DoU&GOW$Z$X_m21g|Pwfqo8dU^b5>~jzNL>8{=JvbC*Q& zcOyaDkh<*sdtv-``|pJEpMGfR{_I!XuJFpM1OF9a{H<^~aLz^dlDhq!$0c$6-7Y=4 zFS=Jb-Br))le{F5zuTqf{zdoSll&Kt{O=jMB$B_|r8Cn-30-r(S~`Ch#U-KqBV_pZ zLf2~Wx9*>3ah+KHOF7*??LzlzUjB+-URS%$yZ)$^UQn>BYS-!4b*1a);y+3wIRB~i z=ahU^+~f1CVkIs50nbyfayVO%fHKk|Fz|6ln(rK+Kfg?*_+aPhOaNLu(M H!$ Date: Thu, 23 Nov 2023 10:41:56 +0330 Subject: [PATCH 7/7] lombok package added to project --- .vscode/settings.json | 3 +++ phase01_search/pom.xml | 11 +++++++++++ .../main/java/com/example/EntryStructure.java | 11 +++-------- .../classes/com/example/EntryStructure.class | Bin 915 -> 915 bytes .../target/phase01_search-1.0-SNAPSHOT.jar | Bin 6154 -> 6272 bytes 5 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c5f3f6b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/phase01_search/pom.xml b/phase01_search/pom.xml index b454845..75faa79 100644 --- a/phase01_search/pom.xml +++ b/phase01_search/pom.xml @@ -13,4 +13,15 @@ 1.8 + + + + org.projectlombok + lombok + 1.18.30 + provided + + + + \ No newline at end of file diff --git a/phase01_search/src/main/java/com/example/EntryStructure.java b/phase01_search/src/main/java/com/example/EntryStructure.java index 368cda0..d5a205e 100644 --- a/phase01_search/src/main/java/com/example/EntryStructure.java +++ b/phase01_search/src/main/java/com/example/EntryStructure.java @@ -2,21 +2,16 @@ import java.util.HashSet; import java.util.Set; +import lombok.Getter; public class EntryStructure { + @Getter private String word; + @Getter private Set fileNames = new HashSet(); public EntryStructure(String word, Set fileNames) { this.word = word; this.fileNames = fileNames; } - - public String getWord() { - return word; - } - - public Set getFileNames() { - return fileNames; - } } \ No newline at end of file diff --git a/phase01_search/target/classes/com/example/EntryStructure.class b/phase01_search/target/classes/com/example/EntryStructure.class index 4c50f320218e8b753f9064a9142cecd8a543179e..2755fcd41e8cf52008eb8f8a0abee2582540ed70 100644 GIT binary patch delta 65 zcmbQtKAC;PJ|;n41{MZx27U%U1`!}B$sjQKJW~=Q$7CaB7g;U_DFy}x9tK7r$;u$j PAOoZs8I*w}6N3r>HiHK0 delta 65 zcmbQtKAC;PJ|;mf1{MYm27U%^1`!4x21y3q$>*7p7zHL9F}ui$Fi0^l07V&rBrAh7 PgA9;nWKaf@ObjXjHQom8 diff --git a/phase01_search/target/phase01_search-1.0-SNAPSHOT.jar b/phase01_search/target/phase01_search-1.0-SNAPSHOT.jar index e6e9a413c5c3dbcd78d15723a9d194fb49eca918..fe3de2e1d8e434523d5b56ab6dd4bd3a88e02f0d 100644 GIT binary patch delta 4946 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 V5j-!t`>h<}l>Q+R5#Vppe*p&)LH_^% delta 4836 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 VQ|g3CI^l%p^o;m%cQ1oL{{j+S48i~a