public code v1

This commit is contained in:
2026-05-22 11:14:29 +02:00
parent 427197ec5a
commit b8141736eb
28859 changed files with 575079 additions and 0 deletions
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -0,0 +1 @@
/bin
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>afryca.consensusmodel.herreraviedma2002</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
line.separator=\n
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: afryca.consensusmodel.herreraviedma2002;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: afryca.consensusmodel
Automatic-Module-Name: afryca.consensusmodel.herreraviedma2002
@@ -0,0 +1,13 @@
#Properties file for afryca.consensusmodel.herreraviedma2002
Bundle-Vendor = Sinbad\u00B2
Bundle-Name = HerreraViedma2002
afryca.consensusmodel.herreraviedma2002.information = Paper: E. Herrera-Viedma, F. Herrera, F. Chiclana, A consensus model for group decision making with different preference structures. IEEE Transactions on Systems, Man and Cybernetics - Part A: Systems and Humans, vol. 32, issue 3, pp. 394-402, 2002.\\n\\nThis model operates with fuzzy preference relations, although in the related paper it is proposed the use of different preference structures by experts. Each expert chooses his/her most suitable preference structure, and they are internally conducted into fuzzy preference relations. Preference orderings and a collective ordering are then computed to measure consensus. Furthermore, the feedback mechanism is based on proximity measures and direction rules.
afryca.consensusmodel.herreraviedma2002.mainfeature = Fuzzy preference relations\\nDistances based on pref. orderings\\nLinguistic quantifiers\\nDirection rules
afryca.consensusmodel.herreraviedma2002.name = E. Herrera-Viedma et al. (2002)
afryca.consensusmodel.herreraviedma2002.observations = This version of the consensus model deals with fuzzy preference relations only, therefore the initial transformation phase is not applied to experts\u2019 preferences.
afryca.consensusmodel.herreraviedma2002.variable.explotation_quantifiers.description = Parameters of the linguistic quantifier used to compute dominance and non-dominance degrees and conduct preferences of experts into preference orderings
afryca.consensusmodel.herreraviedma2002.variable.maxcycle.description = Maximum number of consensus rounds allowed
afryca.consensusmodel.herreraviedma2002.variable.aggregation_quantifiers.description = Parameters of the linguistic quantifier used to compute the collective preference by means of the OWA operator
afryca.consensusmodel.herreraviedma2002.variable.b.description = Rigorousness of the consensus process: the larger its value, the less discussion shall be required. Recommended values: 0.5, 0.7, 0.9, 1
afryca.consensusmodel.herreraviedma2002.variable.beta.description = Parameter to control the OR-LIKE of the aggregation operator that computes the global consensus degree
afryca.consensusmodel.herreraviedma2002.variable.cl.description = Consensus threshold
@@ -0,0 +1,13 @@
#Archivo de propiedades para afryca.consensusmodel.herreraviedma2002
Bundle-Vendor = Sinbad\u00B2
Bundle-Name = HerreraViedma2002
afryca.consensusmodel.herreraviedma2002.information = Paper: E. Herrera-Viedma, F. Herrera, F. Chiclana, A consensus model for group decision making with different preference structures. IEEE Transactions on Systems, Man and Cybernetics - Part A: Systems and Humans, vol. 32, issue 3, pp. 394-402, 2002.\\n\\nEste modelo opera con relaciones de preferencia difusa, aunque en el artículo es propuesto el uso de diferentes estructuras de preferencias. Cada experto selecciona su estructura de preferencias más adecuada e, internamente, son transformadas a relacioens de preferencia difusas. Tras esta transformación, son calculados ordenes de preferencia y un orden colectivo para medir el consenso. Además, el mecanismo de feedback está basado en las medidas de proximidad y en reglas de dirección.
afryca.consensusmodel.herreraviedma2002.mainfeature = Relaciones de preferencia difusas\\nDistancias basadas en ordenes de preferencia\\nCuantificadores lingüísticos\\nReglas de dirección
afryca.consensusmodel.herreraviedma2002.name = E. Herrera-Viedma et al. (2002)
afryca.consensusmodel.herreraviedma2002.observations = Esta versión del modelo de consenso trabaja únicamente con relaciones de preferencia difusas, por tanto, la fase incial de transformación no es aplicada a las preferencias de los expertos.
afryca.consensusmodel.herreraviedma2002.variable.explotation_quantifiers.description = Parámetros del cuantificador lingüístico usado para calcular los grados de dominancia y no dominancia y transformar las preferencias de los expertos en ordenes de preferencia
afryca.consensusmodel.herreraviedma2002.variable.maxcycle.description = Máximo número de rondas de consenso permitidas
afryca.consensusmodel.herreraviedma2002.variable.aggregation_quantifiers.description = Parámetros del cuantificador lingüístico usado para calcular la preferencia colectiva por medio del operador OWA
afryca.consensusmodel.herreraviedma2002.variable.b.description = Rigorusidad del proceso de consenso: cuanto mayor es el valor, mayor es el grado de discusión requerida. Se recomiendan valores: 0.5, 0.7, 0.9, 1
afryca.consensusmodel.herreraviedma2002.variable.beta.description = Parámetro para contgrolar el OR-LIKE del operador de agregación que calcula el grado de consenso global
afryca.consensusmodel.herreraviedma2002.variable.cl.description = Umbral de consenso
@@ -0,0 +1,6 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
OSGI-INF/
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="afryca.consensusmodel">
<ConsensusModel
ConsensusModel="afryca.consensusmodel.HerreraViedma2002"
Information="%afryca.consensusmodel.herreraviedma2002.information"
MainFeatures="%afryca.consensusmodel.herreraviedma2002.mainfeature"
Multicriteria="false"
Name="%afryca.consensusmodel.herreraviedma2002.name"
Observations="%afryca.consensusmodel.herreraviedma2002.observations"
Structure="afryca.fpr"
WithFeedback="true"
id="Herrera-Viedma2002">
<Variable
default_value="0.2;0.6"
description="%afryca.consensusmodel.herreraviedma2002.variable.explotation_quantifiers.description"
id="explotation_quantifiers"
is_array="true"
is_internal="false"
type="Float">
<Array_restriction
type="element_lower_limit"
value="0">
</Array_restriction>
<Array_restriction
type="element_upper_limit"
value="1">
</Array_restriction>
<Array_restriction
type="number_of_elements"
value="2">
</Array_restriction>
</Variable>
<Variable
default_value="15"
description="%afryca.consensusmodel.herreraviedma2002.variable.maxcycle.description"
id="maxcycle"
is_array="false"
is_internal="false"
type="Integer">
<Restriction
type="lower_limit"
value="1">
</Restriction>
</Variable>
<Variable
default_value="0.4;0.8"
description="%afryca.consensusmodel.herreraviedma2002.variable.aggregation_quantifiers.description"
id="aggregation_quantifiers"
is_array="true"
is_internal="false"
type="Float">
<Array_restriction
type="element_lower_limit"
value="0">
</Array_restriction>
<Array_restriction
type="element_upper_limit"
value="1">
</Array_restriction>
<Array_restriction
type="number_of_elements"
value="2">
</Array_restriction>
</Variable>
<Variable
default_value="0.7"
description="%afryca.consensusmodel.herreraviedma2002.variable.b.description"
id="b"
is_array="false"
is_internal="false"
type="Float">
<Restriction
type="lower_limit"
value="0">
</Restriction>
<Restriction
type="upper_limit"
value="1">
</Restriction>
</Variable>
<Variable
default_value="0.8"
description="%afryca.consensusmodel.herreraviedma2002.variable.beta.description"
id="beta"
is_array="false"
is_internal="false"
type="Float">
<Restriction
type="lower_limit"
value="0">
</Restriction>
<Restriction
type="upper_limit"
value="1">
</Restriction>
</Variable>
<Variable
default_value="0.85"
description="%afryca.consensusmodel.herreraviedma2002.variable.cl.description"
id="cl"
is_array="false"
is_internal="false"
type="Float">
<Restriction
type="lower_limit"
value="0">
</Restriction>
<Restriction
type="upper_limit"
value="1">
</Restriction>
</Variable>
</ConsensusModel>
</extension>
</plugin>
@@ -0,0 +1,389 @@
package afryca.consensusmodel;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import afryca.consensusmodel.definition.EResultElements;
import afryca.fpr.FPR;
import afryca.structure.Structure;
/**
* HerreraViedma2002 consensus model
*
* @author Sinbad²
* @version 3.0
*/
public class HerreraViedma2002 extends ConsensusModel {
private static final String CONSENSUS_MODEL_NAME = "E. Herrera-Viedma et al. (2002)"; //$NON-NLS-1$
private static final String AGGREGATION_QUANTIFIERS = "aggregation_quantifiers"; //$NON-NLS-1$
private static final String EXPLOTATION_QUANTIFIERS = "explotation_quantifiers"; //$NON-NLS-1$
private static final String B = "b"; //$NON-NLS-1$
private static final String BETA = "beta"; //$NON-NLS-1$
private static final String MAXCYCLE = "maxcycle"; //$NON-NLS-1$
private static final String CL = "cl"; //$NON-NLS-1$
private Float[] aggregation_quantifiers;
private Float[] explotation_quantifiers;
private Float b;
private Float beta;
private Integer maxcycle;
private Float cl;
private Integer[][] alternativesRankings;
private int h;
private Float cm;
private int[] advises;
private Float[] aggregation_weights;
private Float[] explotation_weights;
@Override
protected void setModelConfiguration() {
}
@Override
protected void obtainConfigurationValues() {
aggregation_quantifiers = (Float[]) configuration.getValue(AGGREGATION_QUANTIFIERS);
explotation_quantifiers = (Float[]) configuration.getValue(EXPLOTATION_QUANTIFIERS);
b = (Float) configuration.getValue(B);
beta = (Float) configuration.getValue(BETA);
maxcycle = (Integer) configuration.getValue(MAXCYCLE);
cl = (Float) configuration.getValue(CL);
alternativesRankings = new Integer[numberOfExperts + 1][];
h = 0;
cm = 0f;
advises = null;
aggregation_weights = ConsensusEngine.computeOWAWeights(numberOfExperts, aggregation_quantifiers[0], aggregation_quantifiers[1]);
explotation_weights = ConsensusEngine.computeOWAWeights(numberOfAlternatives, explotation_quantifiers[0], explotation_quantifiers[1]);
}
@Override
protected Float[][][] obtainVisualizeValues() {
Structure[] auxPreferences = (Structure[]) clonePreferencesUnion(preferences, ConsensusEngine.groupPreferencesOWA(numberOfExperts, numberOfAlternatives, preferences, aggregation_weights));
Float[][][] preferencesGroupVisualization = new Float[numberOfExperts + 1][numberOfAlternatives][numberOfAlternatives];
for (int k = 0; k < numberOfExperts+1; k++) {
preferencesGroupVisualization[k] = auxPreferences[k].obtainVisualizeValues();
}
return preferencesGroupVisualization;
}
@Override
protected void preFirstSaveRoundResults() {
Structure[] auxPreferences = clonePreferencesUnion(preferences, ConsensusEngine.groupPreferencesOWA(numberOfExperts, numberOfAlternatives, preferences, aggregation_weights));
Float[] QGDD;
for (int i = 0; i <= numberOfExperts; i++) {
QGDD = ConsensusEngine.QGDD(numberOfAlternatives, auxPreferences[i], explotation_weights);
alternativesRankings[i] = ConsensusEngine.alternativesRanking(QGDD);
}
Set<Integer> Xsol = ConsensusEngine.solutionSet(alternativesRankings[numberOfExperts]);
Integer[][] differencesBetweenRankings = differencesBetweenRankings(alternativesRankings);
Float[][] consensusDegreesOnAlternativesByExperts = consensusDegreesOnAlternativesByExperts(differencesBetweenRankings, b);
Float[] consensusDegreesOnAlternatives = consensusDegreesOnAlternatives(consensusDegreesOnAlternativesByExperts);
Float consensusDegreeAchieved = consensusMeasure(consensusDegreesOnAlternatives, beta, Xsol);
preSaveRoundResult(1, auxPreferences, obtainVisualizeValues(), consensusDegreeAchieved);
result.put(EResultElements.initial_consensus_degree, consensusDegreeAchieved);
result.put(EResultElements.maxround, maxcycle);
result.put(EResultElements.consensus_threshold, cl);
result.put(EResultElements.consensus_model, CONSENSUS_MODEL_NAME);
}
@Override
protected void preSaveRoundResults() {
preSaveRoundResult(h + 1, preferences, obtainVisualizeValues(), cm);
}
@Override
protected void consensusRound() {
computeCollective();
Float[] QGDD;
for (int i = 0; i <= numberOfExperts; i++) {
QGDD = ConsensusEngine.QGDD(numberOfAlternatives, preferences[i], explotation_weights);
alternativesRankings[i] = ConsensusEngine.alternativesRanking(QGDD);
}
Set<Integer> Xsol = ConsensusEngine.solutionSet(alternativesRankings[numberOfExperts]);
Integer[][] differencesBetweenRankings = differencesBetweenRankings(alternativesRankings);
Float[][] consensusDegreesOnAlternativesByExperts = consensusDegreesOnAlternativesByExperts(differencesBetweenRankings, b);
Float[] consensusDegreesOnAlternatives = consensusDegreesOnAlternatives(consensusDegreesOnAlternativesByExperts);
computeConsensusDegree(consensusDegreesOnAlternatives, Xsol);
advises = null;
if (cm < cl) {
Float[] proximityMeasures = proximityMeasures(consensusDegreesOnAlternativesByExperts, beta, Xsol);
Set<Integer> farthestExperts = selectFarthestExperts(proximityMeasures);
Map<Integer, EChangeType[]> changesByExperts = changesByExperts(farthestExperts, differencesBetweenRankings);
makeChanges(changesByExperts, preferences);
advises = new int[numberOfExperts];
for (int expert = 0; expert < numberOfExperts; expert++) {
advises[expert] = 0;
if (changesByExperts.get(expert) != null) {
for (EChangeType change : changesByExperts.get(expert)) {
if (change != EChangeType.NotChange) {
advises[expert] = advises[expert] + 1;
}
}
}
}
h++;
}
}
private void computeCollective() {
preferences[numberOfExperts] = ConsensusEngine.groupPreferencesOWA(numberOfExperts, numberOfAlternatives, preferences, aggregation_weights);
}
private void computeConsensusDegree(Float[] consensusDegreesOnAlternatives, Set<Integer> Xsol) {
cm = consensusMeasure(consensusDegreesOnAlternatives, beta, Xsol);
}
@Override
protected void posSaveRoundResults() {
computeCollective();
Float[] QGDD;
for (int i = 0; i <= numberOfExperts; i++) {
QGDD = ConsensusEngine.QGDD(numberOfAlternatives, preferences[i], explotation_weights);
alternativesRankings[i] = ConsensusEngine.alternativesRanking(QGDD);
}
Set<Integer> Xsol = ConsensusEngine.solutionSet(alternativesRankings[numberOfExperts]);
Integer[][] differencesBetweenRankings = differencesBetweenRankings(alternativesRankings);
Float[][] consensusDegreesOnAlternativesByExperts = consensusDegreesOnAlternativesByExperts(differencesBetweenRankings, b);
Float[] consensusDegreesOnAlternatives = consensusDegreesOnAlternatives(consensusDegreesOnAlternativesByExperts);
computeConsensusDegree(consensusDegreesOnAlternatives, Xsol);
posSaveRoundResult(preferences, obtainVisualizeValues(), cm, advises, preferences[numberOfExperts]);
}
@Override
protected boolean mustBeCarriedOutAnotherRound() {
return (h < maxcycle) && (cm < cl);
}
@Override
protected void saveExecutionResults() {
this.configuration.setValue(PREFERENCES, preferences);
result.put(EResultElements.number_of_rounds_required, h);
result.put(EResultElements.consensus_degree_achieved, cm);
}
private static Integer[][] differencesBetweenRankings(Integer[][] alternativesRankings) {
Integer[][] result = new Integer[alternativesRankings.length - 1][alternativesRankings[0].length];
Integer[] groupRanking = alternativesRankings[alternativesRankings.length - 1];
Integer[] expertRanking;
for (int i = 0; i < result.length; i++) {
expertRanking = alternativesRankings[i];
result[i] = differencesBetweenRankings(expertRanking, groupRanking);
}
return result;
}
private static Integer[] differencesBetweenRankings(Integer[] eR, Integer[] gR) {
Integer[] result = new Integer[eR.length];
for (int i = 0; i < eR.length; i++) {
result[i] = gR[i] - eR[i];
}
return result;
}
private static Float[][] consensusDegreesOnAlternativesByExperts(Integer[][] differencesBetweenRankings, float b) {
int experts = differencesBetweenRankings.length;
int alternatives = differencesBetweenRankings[0].length;
Float[][] result = new Float[experts][alternatives];
for (int e = 0; e < experts; e++) {
for (int a = 0; a < alternatives; a++) {
result[e][a] = (float) Math.pow((((float) Math.abs(differencesBetweenRankings[e][a])) / ((float) (alternatives - 1))), b);
result[e][a] = Math.round(result[e][a] * 100f) / 100f;
}
}
return result;
}
private static Float[] consensusDegreesOnAlternatives(Float[][] consensusDegreesOnAlternativesByExperts) {
int experts = consensusDegreesOnAlternativesByExperts.length;
int alternatives = consensusDegreesOnAlternativesByExperts[0].length;
Float[] result = new Float[alternatives];
for (int a = 0; a < alternatives; a++) {
result[a] = 0f;
for (int e = 0; e < experts; e++) {
result[a] += (consensusDegreesOnAlternativesByExperts[e][a] / experts);
}
result[a] = 1f - result[a];
}
return result;
}
private static Float consensusMeasure(Float[] consensusMeasures, float beta, Set<Integer> Xsol) {
return s_owa__or_like(consensusMeasures, beta, Xsol);
}
private static Float[] proximityMeasures(Float[][] proximityMeasuresByExperts, float beta, Set<Integer> Xsol) {
int experts = proximityMeasuresByExperts.length;
Float[] result = new Float[experts];
for (int i = 0; i < experts; i++) {
result[i] = proximityMeasure(proximityMeasuresByExperts[i], beta, Xsol);
}
return result;
}
private static Float proximityMeasure(Float[] proximityMeasuresByExpert, float beta, Set<Integer> Xsol) {
Float[] aux = new Float[proximityMeasuresByExpert.length];
for (int i = 0; i < proximityMeasuresByExpert.length; i++) {
aux[i] = 1f - proximityMeasuresByExpert[i];
}
return s_owa__or_like(aux, beta, Xsol);
}
private static Float s_owa__or_like(Float[] values, float beta, Set<Integer> Xsol) {
Float result = 0f;
float value_1 = 0f;
float value_2 = 0f;
int size_1 = Xsol.size();
int size_2 = values.length - size_1;
for (int i = 0; i < values.length; i++) {
if (Xsol.contains(i)) {
value_1 += values[i] / (size_1);
} else {
value_2 += values[i] / (size_2);
}
}
result = ((1f - beta) * value_1) + (beta * value_2);
result = Math.round(result * 100f) / 100f;
return result;
}
private static Set<Integer> selectFarthestExperts(Float[] proximityMeasures) {
Set<Integer> result = new HashSet<>();
List<Float> orderedValues = new ArrayList<>();
for (Float value : proximityMeasures) {
orderedValues.add(Float.valueOf(value));
}
Collections.sort(orderedValues);
float threashold = orderedValues.get(orderedValues.size() / 2);
for (int i = 0; i < proximityMeasures.length; i++) {
if (proximityMeasures[i].floatValue() <= threashold) {
result.add(Integer.valueOf(i));
}
}
return result;
}
private static Map<Integer, EChangeType[]> changesByExperts(Set<Integer> farthestExperts, Integer[][] differencesBetweenRankings) {
Map<Integer, EChangeType[]> result = new HashMap<>();
EChangeType[] changes;
int alternatives = differencesBetweenRankings[0].length;
for (int expert : farthestExperts) {
changes = new EChangeType[alternatives];
for (int alternative = 0; alternative < alternatives; alternative++) {
if (differencesBetweenRankings[expert][alternative] < 0) {
changes[alternative] = EChangeType.Increase;
} else if (differencesBetweenRankings[expert][alternative].intValue() == 0) {
changes[alternative] = EChangeType.NotChange;
} else {
changes[alternative] = EChangeType.Decrease;
}
}
result.put(Integer.valueOf(expert), changes);
}
return result;
}
private void makeChanges(Map<Integer, EChangeType[]> changes, Structure[] preferences) {
int alternatives = ((FPR) preferences[0]).getPreferences().length;
int numberOfChanges = 0;
// Count changes
for (EChangeType[] changesArray : changes.values()) {
for (EChangeType change : changesArray) {
if (EChangeType.NotChange != change) {
numberOfChanges++;
}
}
}
// Get behaviour for changes
double[] changesToMake = getNChanges(numberOfChanges);
// Make changes
EChangeType[] changesArray;
EChangeType change;
numberOfChanges = 0;
float value;
float newValue;
for (Integer expertIndex : changes.keySet()) {
changesArray = changes.get(expertIndex);
for (int i = 0; i < changesArray.length; i++) {
change = changesArray[i];
if (EChangeType.NotChange != change) {
value = (float) changesToMake[numberOfChanges++];
if (value != 0f) {
if (EChangeType.Decrease == change) {
value *= -1f;
}
for (int j = 0; j < alternatives; j++) {
if (i != j) {
newValue = (Float) preferences[expertIndex].getValue(i, j);
newValue += value;
if (newValue > 1f) {
newValue = 1f;
} else if (newValue < 0f) {
newValue = 0f;
}
((FPR) preferences[expertIndex]).setValueSymmetrically(i, j, newValue);
}
}
}
}
}
}
}
}
@@ -0,0 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: afryca.consensusmodel.herreraviedma2002;singleton:=
true
Bundle-Version: 1.0.0.202101221157
Bundle-Vendor: %Bundle-Vendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: afryca.consensusmodel
Automatic-Module-Name: afryca.consensusmodel.herreraviedma2002
@@ -0,0 +1,4 @@
#Fri Jan 22 13:00:53 CET 2021
artifact.main=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.consensusmodel.herreraviedma2002\\target\\afryca.consensusmodel.herreraviedma2002-1.0.0-SNAPSHOT.jar
artifact.attached.p2artifacts=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.consensusmodel.herreraviedma2002\\target\\p2artifacts.xml
artifact.attached.p2metadata=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.consensusmodel.herreraviedma2002\\target\\p2content.xml
@@ -0,0 +1,3 @@
artifactId=afryca.consensusmodel.herreraviedma2002
groupId=afryca.group
version=1.0.0-SNAPSHOT
@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<?artifactRepository version='1.1.0'?>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157'>
<properties size='5'>
<property name='artifact.size' value='11215'/>
<property name='download.size' value='11215'/>
<property name='maven-groupId' value='afryca.group'/>
<property name='maven-artifactId' value='afryca.consensusmodel.herreraviedma2002'/>
<property name='maven-version' value='1.0.0-SNAPSHOT'/>
</properties>
</artifact>
</artifacts>
@@ -0,0 +1,48 @@
<?xml version='1.0' encoding='UTF-8'?>
<units size='1'>
<unit id='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157' generation='2'>
<update id='afryca.consensusmodel.herreraviedma2002' range='[0.0.0,1.0.0.202101221157)' severity='0'/>
<properties size='9'>
<property name='es.Bundle-Name' value='HerreraViedma2002'/>
<property name='es.Bundle-Vendor' value='Sinbad²'/>
<property name='df_LT.Bundle-Name' value='HerreraViedma2002'/>
<property name='df_LT.Bundle-Vendor' value='Sinbad²'/>
<property name='org.eclipse.equinox.p2.name' value='%Bundle-Name'/>
<property name='org.eclipse.equinox.p2.provider' value='%Bundle-Vendor'/>
<property name='maven-groupId' value='afryca.group'/>
<property name='maven-artifactId' value='afryca.consensusmodel.herreraviedma2002'/>
<property name='maven-version' value='1.0.0-SNAPSHOT'/>
</properties>
<provides size='6'>
<provided namespace='org.eclipse.equinox.p2.iu' name='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157'/>
<provided namespace='osgi.bundle' name='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157'/>
<provided namespace='osgi.identity' name='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157'>
<properties size='1'>
<property name='type' value='osgi.bundle'/>
</properties>
</provided>
<provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
<provided namespace='org.eclipse.equinox.p2.localization' name='es' version='1.0.0'/>
<provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
</provides>
<requires size='2'>
<required namespace='osgi.bundle' name='afryca.consensusmodel' range='0.0.0'/>
<requiredProperties namespace='osgi.ee' match='(&amp;(osgi.ee=JavaSE)(version=1.8))'>
<description>
afryca.consensusmodel.herreraviedma2002
</description>
</requiredProperties>
</requires>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='afryca.consensusmodel.herreraviedma2002' version='1.0.0.202101221157'/>
</artifacts>
<touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
Bundle-SymbolicName: afryca.consensusmodel.herreraviedma2002;singleton:=true&#xA;Bundle-Version: 1.0.0.202101221157&#xA;
</instruction>
</instructions>
</touchpointData>
</unit>
</units>