org.cfpm.caves.za
Class Group

java.lang.Object
  extended by org.cfpm.caves.za.Group
Direct Known Subclasses:
SavingsClub

public abstract class Group
extends java.lang.Object

An abstract group. Provides the basic functionality for every type of group (like burial societies or stokvels).

Author:
Ruth

Field Summary
private static int lastID
          counter for running ID
(package private)  jess.Value[] memberIDs
          list of member names, for easier access within Jess
(package private)  java.util.ArrayList<Person> members
          member list
(package private)  SouthAfricaModel model
           
(package private)  jess.Value name
          Name of the group.
protected  java.beans.PropertyChangeSupport pcs
           
 
Constructor Summary
Group(java.lang.String type, java.util.ArrayList<Person> members, SouthAfricaModel model)
          Creates a new group of the given type with the given members.
 
Method Summary
private  void addAsKnown(Person member)
          internal function: the given member adds every other member as a known person and vice versa.
 void addMember(Person member)
          adds a new member to the group.
 void addPropertyChangeListener(java.beans.PropertyChangeListener p)
          adds a property change listener (for Jess)
private  void endorse(Person member)
          internal function: the given member endorses every other member with same-club endorsement and vice versa.
 jess.Value[] getMemberIDs()
          returns the member IDs
 jess.Value getName()
          returns the group's name
private  void printIDs(jess.Value[] ids)
          internal helper function for debugging: prints a list of member IDs.
 void removeMember(Person member)
          removes the given member from this group.
 void removePropertyChangeListener(java.beans.PropertyChangeListener p)
          removes a property change listener (for Jess)
 void setMemberIDs(jess.Value[] IDs)
          sets the member IDs
 void setName(java.lang.String nameString)
          sets the group's name
 void setName(jess.Value name)
          sets the group's name
 java.lang.String toString()
          returns a String representation of this group
private  void unEndorse(Person member)
          internal function: the leaving member removes same-club endorsement for every other member and vice versa.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

lastID

private static int lastID
counter for running ID


name

jess.Value name
Name of the group. Build from group type and running id


members

java.util.ArrayList<Person> members
member list


memberIDs

jess.Value[] memberIDs
list of member names, for easier access within Jess


pcs

protected java.beans.PropertyChangeSupport pcs

model

SouthAfricaModel model
Constructor Detail

Group

public Group(java.lang.String type,
             java.util.ArrayList<Person> members,
             SouthAfricaModel model)
Creates a new group of the given type with the given members.

Parameters:
type - the group type
members - the list of members
model - the model
Method Detail

addMember

public void addMember(Person member)
adds a new member to the group. This will cause all previous members and the new member to endorse each other with the same-club endorsement.

Parameters:
member - the new member

printIDs

private void printIDs(jess.Value[] ids)
internal helper function for debugging: prints a list of member IDs.


removeMember

public void removeMember(Person member)
removes the given member from this group. This will also cause every other member to retract their same-club endorsement of this member and vice versa.

Parameters:
member - the member to leave the group

endorse

private void endorse(Person member)
internal function: the given member endorses every other member with same-club endorsement and vice versa.


unEndorse

private void unEndorse(Person member)
internal function: the leaving member removes same-club endorsement for every other member and vice versa.


addAsKnown

private void addAsKnown(Person member)
internal function: the given member adds every other member as a known person and vice versa.


getMemberIDs

public jess.Value[] getMemberIDs()
returns the member IDs

Returns:
list of member names

setMemberIDs

public void setMemberIDs(jess.Value[] IDs)
sets the member IDs

Parameters:
IDs - list of member names

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener p)
adds a property change listener (for Jess)


removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener p)
removes a property change listener (for Jess)


getName

public jess.Value getName()
returns the group's name

Returns:
name of the group

setName

public void setName(jess.Value name)
sets the group's name

Parameters:
name - name of the group

setName

public void setName(java.lang.String nameString)
sets the group's name

Parameters:
nameString - name of the group as String

toString

public java.lang.String toString()
returns a String representation of this group

Overrides:
toString in class java.lang.Object
Returns:
the group's name followed by the number of members.