model
Class TopicCluster

java.lang.Object
  extended by model.TopicCluster
All Implemented Interfaces:
java.lang.Comparable

public class TopicCluster
extends java.lang.Object
implements java.lang.Comparable

Esta clase modela un cluster (un topico) del sistema.

Cada cluster sera parte de una lista de clusters, los cuales representan el conjunto de topicos del sistema.
Cada nuevo elemento que se agrega al cluster, debe provocar el recalculo del centroide del grupo, y el recalculo del representante.


Field Summary
protected  ItemVector composite
           
protected  int median
           
protected  java.util.List members
           
protected  int n
           
protected  int status
           
protected  java.lang.String title
           
protected  int topic_id
           
 
Constructor Summary
TopicCluster()
          construye un topiccluster Construye el vector inicializando el centroide en el origen
TopicCluster(int topic_id)
          construye un topiccluster, con un identificador Construye el vector inicializando el centroide en el origen
 
Method Summary
 void addItem(int id)
          agrega el id de un item al cluster
 void addToComposite(ItemVector vector)
          suma -ponderadamente- el vector dado, al centroide del cluster.
 int compareTo(java.lang.Object x)
          implementa el metodo compareTo de la interfaz comparable.
 boolean contains(int item_id)
          indica si este cluster contiene al id dado
 boolean equals(java.lang.Object x)
          implementa el metodo equals, comparando los clusters por su id
 java.util.List getArticles(int numarticles)
          obtiene el conjunto de los k articulos mas cercanos al centroide
 ItemVector getCentroid()
          retorna el vector centroide de este cluster
 int getId()
          retorna el identificador del topiccluster
 int[] getIds()
          retorna el array de ids de miembros del cluster
 int getMedian()
          retorna el id de la mediana del grupo
 int getN()
          retorna la cantidad de elementos dentro del cluster
 java.util.Set getNeighborsSet()
          entrega el conjunto de pares de elementos unidos dentro del cluster.
 java.lang.String getTitle()
          retorna el titulo del articulo representante
 java.util.List getWords(int numwords)
          obtiene el conjunto de las k palabras que describen al topico.
 void purge(int ndays, java.sql.Connection con)
          realiza el borrado de los articulos antiguos
 void restore2db(java.sql.Connection con)
          actualiza la informacion del cluster en la base de datos, si es necesario.
 void save2db(java.sql.Connection con)
          almacena el cluster en la base de datos
 void setId(int topic_id)
          establece el valor del identificador del topiccluster
 void setTitleId(java.lang.String title)
          establece el titulo del articulo representante
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

composite

protected ItemVector composite

members

protected java.util.List members

topic_id

protected int topic_id

median

protected int median

n

protected int n

status

protected int status

title

protected java.lang.String title
Constructor Detail

TopicCluster

public TopicCluster()
construye un topiccluster

Construye el vector inicializando el centroide en el origen


TopicCluster

public TopicCluster(int topic_id)
construye un topiccluster, con un identificador

Construye el vector inicializando el centroide en el origen

Parameters:
topic_id - el identificador del topiccluster
Method Detail

addItem

public void addItem(int id)
agrega el id de un item al cluster

Parameters:
id - el id del articulo a ingresar

addToComposite

public void addToComposite(ItemVector vector)
suma -ponderadamente- el vector dado, al centroide del cluster.

El centroide sera la suma de todos los vectores en el grupo, dividido por la cantidad de elementos (validos) dentro de este.

Cuando se agrega un nuevo vector al cluster, primero se llama a addItem(..), que anota al nuevo elemento. Posteriormente, se llama a addToComposite(..), que lo agrega finalmente a members.

Parameters:
vector - el vector a agregar... podria ser de dimension mayor

getCentroid

public ItemVector getCentroid()
retorna el vector centroide de este cluster


getMedian

public int getMedian()
retorna el id de la mediana del grupo

Returns:
el identificador del articulo mas cercano al centroide

getN

public int getN()
retorna la cantidad de elementos dentro del cluster


getIds

public int[] getIds()
retorna el array de ids de miembros del cluster


getId

public int getId()
retorna el identificador del topiccluster

Returns:
int el topic_id

setId

public void setId(int topic_id)
establece el valor del identificador del topiccluster

Parameters:
topic_id - el id a fijar

getTitle

public java.lang.String getTitle()
retorna el titulo del articulo representante

Returns:
el titulo del representante

setTitleId

public void setTitleId(java.lang.String title)
establece el titulo del articulo representante

Parameters:
title - el titulo a setear

save2db

public void save2db(java.sql.Connection con)
             throws TopicSystemException
almacena el cluster en la base de datos

Parameters:
con - la referencia a la conexion a la base de datos
Throws:
TopicSystemException - lanzada al fallar la insercion en la BD

genera fin del sistema


restore2db

public void restore2db(java.sql.Connection con)
                throws TopicSystemException
actualiza la informacion del cluster en la base de datos, si es necesario.

Utilizando el valor del campo status, se puede conocer si el cluster requiere actualizar su informacion en la base de datos.

Parameters:
con - la referencia a la conexion a la base de datos
Throws:
TopicSystemException - lanzada al fallar la insercion en la BD

genera fin del caso de uso (???) TODO: revisar


getNeighborsSet

public java.util.Set getNeighborsSet()
entrega el conjunto de pares de elementos unidos dentro del cluster.

Este conjunto corresponde al conjunto de arcos de vecinos del cluster.

Returns:
el conjunto de pares de vecinos

getArticles

public java.util.List getArticles(int numarticles)
obtiene el conjunto de los k articulos mas cercanos al centroide

Parameters:
numarticles - el numero de articulos a retornar
Returns:
la lista de objetos Article con los articulos solicitados

getWords

public java.util.List getWords(int numwords)
obtiene el conjunto de las k palabras que describen al topico.

Estas palabras corresponderan a las dimensiones de mayor magnitud en el vector centroide del cluster.

Parameters:
numwords -
Returns:
la lista de palabras que describen al topico

compareTo

public int compareTo(java.lang.Object x)
implementa el metodo compareTo de la interfaz comparable.

ESte m'etodo compara los clusters, seg'un su tama'no.

Specified by:
compareTo in interface java.lang.Comparable
Parameters:
x - el objeto a comparar
Returns:
-1 si this < x, 1 si this > x, 0 si son iguales

contains

public boolean contains(int item_id)
indica si este cluster contiene al id dado

Parameters:
item_id - el id del item a buscar
Returns:
si contiene o no al item

equals

public boolean equals(java.lang.Object x)
implementa el metodo equals, comparando los clusters por su id

Overrides:
equals in class java.lang.Object
Parameters:
x - el objeto a comparar
Returns:
el resultado de la evaluacion

purge

public void purge(int ndays,
                  java.sql.Connection con)
           throws TopicSystemException
realiza el borrado de los articulos antiguos

Parameters:
ndays - el limite de antiguedad para el borrado
Throws:
TopicSystemException