diff --git a/src/main/java/reputation/node/models/Node.java b/src/main/java/reputation/node/models/Node.java index 5ffc2b5..2742e66 100644 --- a/src/main/java/reputation/node/models/Node.java +++ b/src/main/java/reputation/node/models/Node.java @@ -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; @@ -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 */ @@ -387,13 +390,20 @@ private String getNodeIdWithHighestReputation() { final Double innerHighestReputation = Double.valueOf(highestReputation); - /** - * Verificando quais nós possuem a maior reputação. - */ - List temp = nodesReputations - .stream() - .filter(nr -> nr.getReputation().equals(innerHighestReputation)) - .collect(Collectors.toList()); + List 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. @@ -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 - Lista com os IDs do * dispositivo e sensor que se deseja obter o maior. @@ -465,13 +477,20 @@ private DeviceSensorId getDeviceWithHighestReputation( final Double innerHighestReputation = Double.valueOf(highestReputation); - /** - * Verificando quais dispositivos possuem a maior reputação. - */ - List temp = devicesReputations - .stream() - .filter(nr -> nr.getReputation().equals(innerHighestReputation)) - .collect(Collectors.toList()); + List 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; @@ -1368,4 +1387,12 @@ public void setChangeDisturbingNodeBehaviorFlag( ) { this.changeDisturbingNodeBehaviorFlag = changeDisturbingNodeBehaviorFlag; } + + public boolean isUseReputation() { + return useReputation; + } + + public void setUseReputation(boolean useReputation) { + this.useReputation = useReputation; + } } diff --git a/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/src/main/resources/OSGI-INF/blueprint/blueprint.xml index 10305fc..06cf481 100644 --- a/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -42,6 +42,7 @@ + @@ -73,6 +74,7 @@ + diff --git a/src/main/resources/br.uefs.larsid.soft_iot.reputation_node.cfg b/src/main/resources/br.uefs.larsid.soft_iot.reputation_node.cfg index 65ec7ca..a7aa5bd 100644 --- a/src/main/resources/br.uefs.larsid.soft_iot.reputation_node.cfg +++ b/src/main/resources/br.uefs.larsid.soft_iot.reputation_node.cfg @@ -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