Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
D
DS_Project_Part1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ali.saeed
DS_Project_Part1
Commits
f0d41f49
Commit
f0d41f49
authored
Jan 29, 2024
by
Ali Saeed
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Leader class to make it's functions static
parent
23f07acd
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
100 additions
and
74 deletions
+100
-74
Leader.java
...-workers/src/main/java/Registration_Discovery/Leader.java
+100
-74
No files found.
registration-discovery-leader-reelection-cordinator-workers/src/main/java/Registration_Discovery/Leader.java
View file @
f0d41f49
package
Registration_Discovery
;
package
Registration_Discovery
;
import
io.grpc.stub.StreamObserver
;
import
org.lognet.springboot.grpc.GRpcService
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.io.ObjectInputStream
;
import
java.io.ObjectInputStream
;
...
@@ -16,31 +19,24 @@ import java.util.*;
...
@@ -16,31 +19,24 @@ import java.util.*;
public
class
Leader
{
public
class
Leader
{
private
int
PORT
=
12345
;
private
ServiceRegistry
serviceRegistry
;
List
<
DocumentTermsInfo
>
documentTermsInfo
;
static
List
<
DocumentTermsInfo
>
documentTermsInfo
;
private
static
final
String
FOLDER_PATH
=
"D:\\DS_Project\\resources"
;
private
static
final
String
FOLDER_PATH
=
"D:\\DS_Project\\resources"
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Leader
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Leader
.
class
);
public
Leader
()
{
public
Leader
(
int
port
,
ServiceRegistry
serviceRegistry
)
{
this
.
PORT
=
port
;
this
.
serviceRegistry
=
serviceRegistry
;
}
}
public
void
start
()
throws
IOException
,
InterruptedException
{
String
searchQuery
=
""
;
while
(!
searchQuery
.
equals
(
"exit"
))
{
documentTermsInfo
=
new
ArrayList
<>();
Scanner
scanner
=
new
Scanner
(
System
.
in
);
public
static
TreeMap
<
String
,
Double
>
start
(
String
searchQuery1
)
throws
IOException
,
InterruptedException
{
logger
.
info
(
"Enter your Search Query: "
);
searchQuery
=
scanner
.
nextLine
();
String
searchQuery
=
searchQuery1
;
documentTermsInfo
=
new
ArrayList
<>();
logger
.
info
(
"Search Query: "
+
searchQuery
);
logger
.
info
(
"Search Query: "
+
searchQuery
);
if
(!
searchQuery
.
isEmpty
()){
if
(!
searchQuery
.
isEmpty
()){
// Get the list of documents from the resources folder
// Get the list of documents from the resources folder
List
<
Document
>
documents
=
getDocumentsFromResources
();
List
<
Document
>
documents
=
getDocumentsFromResources
();
Map
<
Document
,
Double
>
documentsScores
=
new
HashMap
<>();
Map
<
Document
,
Double
>
documentsScores
=
new
HashMap
<>();
List
<
String
>
allServiceAddresses
=
s
erviceRegistry
.
getAllServiceAddresses
();
List
<
String
>
allServiceAddresses
=
S
erviceRegistry
.
getAllServiceAddresses
();
int
numAddresses
=
allServiceAddresses
.
size
();
int
numAddresses
=
allServiceAddresses
.
size
();
int
numDocuments
=
documents
.
size
();
int
numDocuments
=
documents
.
size
();
if
(
numAddresses
!=
0
){
if
(
numAddresses
!=
0
){
...
@@ -82,21 +78,27 @@ public class Leader {
...
@@ -82,21 +78,27 @@ public class Leader {
documentsScores
=
calculateDocumentsScore
(
IDFs
,
documentTermsInfo
);
documentsScores
=
calculateDocumentsScore
(
IDFs
,
documentTermsInfo
);
TreeMap
<
Document
,
Double
>
sortedDocumentsScores
=
sortDocumentsScores
(
documentsScores
);
TreeMap
<
Document
,
Double
>
sortedDocumentsScores
=
sortDocumentsScores
(
documentsScores
);
displaySortedScores
(
sortedDocumentsScores
);
displaySortedScores
(
sortedDocumentsScores
);
TreeMap
<
String
,
Double
>
sortedDocumentsScores1
=
sortDocumentsScores1
(
documentsScores
);
return
sortedDocumentsScores1
;
}
}
else
{
else
{
logger
.
info
(
"No results !!!!"
);
logger
.
info
(
"No results !!!!"
);
return
null
;
}
}
}
}
else
{
else
{
logger
.
info
(
"Try again later !!!!"
);
logger
.
info
(
"Try again later !!!!"
);
return
null
;
}
}
}
else
{
}
else
{
logger
.
info
(
"Please enter search query !!!"
);
logger
.
info
(
"Please enter search query !!!"
);
return
null
;
}
}
}
}
}
private
Map
<
Document
,
Double
>
calculateDocumentsScore
(
Map
<
String
,
Double
>
idFs
,
List
<
DocumentTermsInfo
>
documentTermsInfo
)
{
private
static
Map
<
Document
,
Double
>
calculateDocumentsScore
(
Map
<
String
,
Double
>
idFs
,
List
<
DocumentTermsInfo
>
documentTermsInfo
)
{
Map
<
Document
,
Double
>
documentsScores
=
new
TreeMap
<>();
Map
<
Document
,
Double
>
documentsScores
=
new
TreeMap
<>();
...
@@ -114,7 +116,7 @@ public class Leader {
...
@@ -114,7 +116,7 @@ public class Leader {
return
documentsScores
;
return
documentsScores
;
}
}
private
List
<
Document
>
getDocumentsFromResources
()
{
private
static
List
<
Document
>
getDocumentsFromResources
()
{
List
<
Document
>
documents
=
new
ArrayList
<>();
List
<
Document
>
documents
=
new
ArrayList
<>();
try
{
try
{
Path
resourcesPath
=
Paths
.
get
(
FOLDER_PATH
);
Path
resourcesPath
=
Paths
.
get
(
FOLDER_PATH
);
...
@@ -133,7 +135,7 @@ public class Leader {
...
@@ -133,7 +135,7 @@ public class Leader {
return
documents
;
return
documents
;
}
}
private
void
displayDocumentTermsInfos
(
List
<
DocumentTermsInfo
>
documentTermsInfoList
)
{
private
static
void
displayDocumentTermsInfos
(
List
<
DocumentTermsInfo
>
documentTermsInfoList
)
{
System
.
out
.
println
();
System
.
out
.
println
();
System
.
out
.
println
();
System
.
out
.
println
();
for
(
DocumentTermsInfo
documentTermsInfo
:
documentTermsInfoList
)
{
for
(
DocumentTermsInfo
documentTermsInfo
:
documentTermsInfoList
)
{
...
@@ -150,7 +152,7 @@ public class Leader {
...
@@ -150,7 +152,7 @@ public class Leader {
logger
.
info
(
"................................................"
);
logger
.
info
(
"................................................"
);
}
}
}
}
private
void
startSearchOnWorker
(
String
workerAddress
,
DataForSearch
dataForSearch
)
throws
IOException
,
InterruptedException
{
private
static
void
startSearchOnWorker
(
String
workerAddress
,
DataForSearch
dataForSearch
)
throws
IOException
,
InterruptedException
{
String
[]
addressParts
=
workerAddress
.
split
(
":"
);
String
[]
addressParts
=
workerAddress
.
split
(
":"
);
int
port
=
Integer
.
parseInt
(
addressParts
[
1
]);
int
port
=
Integer
.
parseInt
(
addressParts
[
1
]);
String
ipAddress
=
addressParts
[
0
];
String
ipAddress
=
addressParts
[
0
];
...
@@ -179,7 +181,7 @@ public class Leader {
...
@@ -179,7 +181,7 @@ public class Leader {
}
}
}
}
private
Map
<
String
,
Double
>
calculateIDF
(
List
<
DocumentTermsInfo
>
documentTermsInfo
,
Double
totalDocuments
,
String
searchQuery
){
private
static
Map
<
String
,
Double
>
calculateIDF
(
List
<
DocumentTermsInfo
>
documentTermsInfo
,
Double
totalDocuments
,
String
searchQuery
){
Map
<
String
,
Double
>
IDFs
=
new
HashMap
<>();
Map
<
String
,
Double
>
IDFs
=
new
HashMap
<>();
Map
<
String
,
Double
>
wordDocumentCount
=
new
HashMap
<>();
Map
<
String
,
Double
>
wordDocumentCount
=
new
HashMap
<>();
String
[]
queryWords
=
searchQuery
.
split
(
"\\s+"
);
String
[]
queryWords
=
searchQuery
.
split
(
"\\s+"
);
...
@@ -219,7 +221,7 @@ public class Leader {
...
@@ -219,7 +221,7 @@ public class Leader {
return
IDFs
;
return
IDFs
;
}
}
private
TreeMap
<
Document
,
Double
>
sortDocumentsScores
(
Map
<
Document
,
Double
>
documentsScores
)
{
private
static
TreeMap
<
Document
,
Double
>
sortDocumentsScores
(
Map
<
Document
,
Double
>
documentsScores
)
{
Comparator
<
Document
>
comparator
=
new
Comparator
<
Document
>()
{
Comparator
<
Document
>
comparator
=
new
Comparator
<
Document
>()
{
@Override
@Override
public
int
compare
(
Document
doc1
,
Document
doc2
)
{
public
int
compare
(
Document
doc1
,
Document
doc2
)
{
...
@@ -238,7 +240,31 @@ public class Leader {
...
@@ -238,7 +240,31 @@ public class Leader {
sortedMap
.
putAll
(
documentsScores
);
sortedMap
.
putAll
(
documentsScores
);
return
sortedMap
;
return
sortedMap
;
}
}
private
void
displaySortedScores
(
TreeMap
<
Document
,
Double
>
sortedScores
)
{
private
static
TreeMap
<
String
,
Double
>
sortDocumentsScores1
(
Map
<
Document
,
Double
>
documentsScores
)
{
Comparator
<
Document
>
comparator
=
new
Comparator
<
Document
>()
{
@Override
public
int
compare
(
Document
doc1
,
Document
doc2
)
{
Double
score1
=
documentsScores
.
get
(
doc1
);
Double
score2
=
documentsScores
.
get
(
doc2
);
int
scoreComparison
=
score2
.
compareTo
(
score1
);
if
(
scoreComparison
!=
0
)
{
return
scoreComparison
;
}
else
{
return
doc1
.
compareTo
(
doc2
);
}
}
};
TreeMap
<
Document
,
Double
>
sortedMap
=
new
TreeMap
<>(
comparator
);
sortedMap
.
putAll
(
documentsScores
);
TreeMap
<
String
,
Double
>
sortedMap1
=
new
TreeMap
<>();
for
(
Map
.
Entry
<
Document
,
Double
>
entry
:
sortedMap
.
entrySet
())
{
String
documentName
=
entry
.
getKey
().
getName
();
Double
score
=
entry
.
getValue
();
sortedMap1
.
put
(
documentName
,
score
);
}
return
sortedMap1
;
}
private
static
void
displaySortedScores
(
TreeMap
<
Document
,
Double
>
sortedScores
)
{
logger
.
info
(
"Sorted Documents By Scores:"
);
logger
.
info
(
"Sorted Documents By Scores:"
);
for
(
Map
.
Entry
<
Document
,
Double
>
entry
:
sortedScores
.
entrySet
())
{
for
(
Map
.
Entry
<
Document
,
Double
>
entry
:
sortedScores
.
entrySet
())
{
Document
document
=
entry
.
getKey
();
Document
document
=
entry
.
getKey
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment