es.uam.eps.ir.relison.diffusion.protocols.Protocol Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2020 Information Retrieval Group at Universidad Autónoma
* de Madrid, http://ir.ii.uam.es
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package es.uam.eps.ir.relison.diffusion.protocols;
import es.uam.eps.ir.relison.diffusion.expiration.ExpirationMechanism;
import es.uam.eps.ir.relison.diffusion.propagation.PropagationMechanism;
import es.uam.eps.ir.relison.diffusion.selections.SelectionMechanism;
import es.uam.eps.ir.relison.diffusion.sight.SightMechanism;
import es.uam.eps.ir.relison.diffusion.update.UpdateMechanism;
import java.io.Serializable;
/**
* Information propagation protocol.
*
* @author Javier Sanz-Cruzado ([email protected])
* @author Pablo Castells ([email protected])
*
* @param type of the users.
* @param type of the information pieces.
* @param type of the user and information pieces features.
*/
public abstract class Protocol
{
/**
* Mechanism for selecting the information the user propagates.
*/
private final SelectionMechanism selection;
/**
* Mechanism for discarding information pieces over time.
*/
private final ExpirationMechanism expiration;
/**
* Mechanism for updating the list of information to propagate.
*/
private final UpdateMechanism update;
/**
* Mechanism for selecting the users we want to propagate the information.
*/
private final PropagationMechanism prop;
/**
* Mechanism for selecting which information users actually see
*/
private final SightMechanism sight;
/**
* Constructor.
* @param selection mechanism for selecting the information the user propagates.
* @param expiration mechanism for discarding information pieces over time.
* @param update mechanism for updating the list of information to propagate.
* @param prop mechanism for selecting the users towards whom propagate the information.
* @param sight mechanism for selecting the information pieces that a user sees.
*/
public Protocol(SelectionMechanism selection, ExpirationMechanism expiration, UpdateMechanism update, PropagationMechanism prop, SightMechanism sight) {
this.selection = selection;
this.expiration = expiration;
this.update = update;
this.prop = prop;
this.sight = sight;
}
/**
* Obtains the selection mechanism.
* @return the selection mechanism.
*/
public SelectionMechanism getSelection()
{
return selection;
}
/**
* Obtains the expiration mechanism.
* @return the expiration mechanism.
*/
public ExpirationMechanism getExpiration()
{
return expiration;
}
/**
* Obtains the update mechanism.
* @return the update mechanism.
*/
public UpdateMechanism getUpdate()
{
return update;
}
/**
* Obtains the propagation mechanism.
* @return the propagation mechanism.
*/
public PropagationMechanism getProp()
{
return prop;
}
/**
* Obtains the sight mechanism.
* @return the sight mechanism.
*/
public SightMechanism getSight()
{
return sight;
}
}