Skip to content

Commit

Permalink
Merge pull request #16 from AllanCapistrano/feat/use-reputation
Browse files Browse the repository at this point in the history
Feat/use reputation
  • Loading branch information
AllanCapistrano authored Mar 24, 2024
2 parents 979f47f + 6de73bf commit 0a3b4dc
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 14 deletions.
55 changes: 41 additions & 14 deletions src/main/java/reputation/node/models/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public class Node implements NodeTypeService, ILedgerSubscriber {
private boolean isNodesCredibilityWithSourceEmpty = true;
private boolean useCredibility;
private boolean useLatestCredibility;
private boolean useReputation;
private double reputationValue;
private NodeCredibility nodeCredibility;
private CsvWriterService csvWriter;
Expand Down Expand Up @@ -343,6 +344,8 @@ public void useNodeService() {
/**
* Obtém o ID do nó com a maior reputação dentre aqueles que reponderam a
* requisição.
* Obs: Se o sistema não estiver utilizando reputação, então será escolhido um
* nó provedor de serviço de maneira aleatória.
*
* @return String
*/
Expand Down Expand Up @@ -387,13 +390,20 @@ private String getNodeIdWithHighestReputation() {

final Double innerHighestReputation = Double.valueOf(highestReputation);

/**
* Verificando quais nós possuem a maior reputação.
*/
List<ThingReputation> temp = nodesReputations
.stream()
.filter(nr -> nr.getReputation().equals(innerHighestReputation))
.collect(Collectors.toList());
List<ThingReputation> temp;

if (this.useReputation) {
/**
* Verificando quais nós possuem a maior reputação.
*/
temp =
nodesReputations
.stream()
.filter(nr -> nr.getReputation().equals(innerHighestReputation))
.collect(Collectors.toList());
} else {
temp = nodesReputations;
}

/**
* Obtendo o ID de um dos nós com a maior reputação.
Expand All @@ -413,6 +423,8 @@ private String getNodeIdWithHighestReputation() {

/**
* Obtém os IDs do dispositivo e do sensor, com a maior reputação.
* Obs: Se o sistema não estiver utilizando reputação, então será escolhido
* um dispositivo de maneira aleatória.
*
* @param deviceSensorIdList List<DeviceSensorId> - Lista com os IDs do
* dispositivo e sensor que se deseja obter o maior.
Expand Down Expand Up @@ -465,13 +477,20 @@ private DeviceSensorId getDeviceWithHighestReputation(

final Double innerHighestReputation = Double.valueOf(highestReputation);

/**
* Verificando quais dispositivos possuem a maior reputação.
*/
List<ThingReputation> temp = devicesReputations
.stream()
.filter(nr -> nr.getReputation().equals(innerHighestReputation))
.collect(Collectors.toList());
List<ThingReputation> temp;

if (this.useReputation) {
/**
* Verificando quais dispositivos possuem a maior reputação.
*/
temp =
devicesReputations
.stream()
.filter(nr -> nr.getReputation().equals(innerHighestReputation))
.collect(Collectors.toList());
} else {
temp = devicesReputations;
}

int index = -1;

Expand Down Expand Up @@ -1368,4 +1387,12 @@ public void setChangeDisturbingNodeBehaviorFlag(
) {
this.changeDisturbingNodeBehaviorFlag = changeDisturbingNodeBehaviorFlag;
}

public boolean isUseReputation() {
return useReputation;
}

public void setUseReputation(boolean useReputation) {
this.useReputation = useReputation;
}
}
2 changes: 2 additions & 0 deletions src/main/resources/OSGI-INF/blueprint/blueprint.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<property name="ledgerConnector" ref="ledgerConnector" />
<property name="useCredibility" value="${useCredibility}" />
<property name="useLatestCredibility" value="${useLatestCredibility}" />
<property name="useReputation" value="${useReputation}" />
<property name="nodeCredibility" ref="nodeCredibility" />
<property name="csvWriter" ref="csvWriterService" />
<property name="credibilityHeader" value="${credibilityHeader}" />
Expand Down Expand Up @@ -73,6 +74,7 @@
<cm:property name="changeDisturbingNodeBehaviorTaskTime" value="30" />
<cm:property name="useCredibility" value="true" />
<cm:property name="useLatestCredibility" value="true" />
<cm:property name="useReputation" value="true" />
<cm:property name="debugModeValue" value="true" />
<cm:property name="credibilityHeader" value="Node_ID,Type,C(n),R,Tr(n),Cr_old(n),Cr_new(n),Started_experiment_time,wrote_file_time,Node_provider_ID" />
</cm:default-properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ changeDisturbingNodeBehaviorTaskTime=30
useCredibility=true
# Determina se é para usar (true) ou não (false) a credibilidade mais recente para o cálculo da reputação.
useLatestCredibility=true
# Determina se o sistema vai usar (true) ou não (false) a reputação para a escolha do provedor de serviço.
useReputation=true
# Cabeçalho do experimento de credibilidades.
# Obs: Separe somente utilizando vírgula
credibilityHeader=Node_ID,Type,C(n),R,Tr(n),Cr_old(n),Cr_new(n),Started_experiment_time,wrote_file_time,Node_provider_ID
Expand Down

0 comments on commit 0a3b4dc

Please sign in to comment.