pl.edu.agh.cast.data.model.general
Class TimedManyToManyRelation

java.lang.Object
  extended by pl.edu.agh.cast.data.model.property.PropertyContainer
      extended by pl.edu.agh.cast.data.model.AbstractElement
          extended by pl.edu.agh.cast.data.model.general.ManyToManyRelation
              extended by pl.edu.agh.cast.data.model.general.TimedManyToManyRelation
All Implemented Interfaces:
Serializable, Observer, IDisposable, IReplicable, IValidatable, IDomainElement, IGeneralElement, IManyToManyRelation, ITimedManyToManyRelation, Identifiable, IElement, IPropertyContainer
Direct Known Subclasses:
TimedOneToOneRelation

public class TimedManyToManyRelation
extends ManyToManyRelation
implements ITimedManyToManyRelation

Default implementation of ITimedManyToManyRelation interface.

All public constructors set the element type to ITimedManyToManyRelation.TYPE. Protected constructors should only be used by direct subclasses to provide the concrete type to the super constructor.

Author:
AGH CAST Team
See Also:
ITimedManyToManyRelation, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface pl.edu.agh.cast.data.model.general.ITimedManyToManyRelation
ITimedManyToManyRelation.Properties
 
Field Summary
 
Fields inherited from interface pl.edu.agh.cast.data.model.general.ITimedManyToManyRelation
TYPE
 
Constructor Summary
  TimedManyToManyRelation()
          Default constructor.
  TimedManyToManyRelation(IGeneralDataSet<? extends IGeneralElement> dataSet, List<? extends IEntity> sources, List<? extends IEntity> targets, boolean directed, Date startDate, Date endDate)
          Creates new timed many-to-many relation with given data set, source and target entities, direction, start and end date.
protected TimedManyToManyRelation(Type type)
          Initializes element with type.
protected TimedManyToManyRelation(Type type, UUID id, List<? extends IEntity> sources, List<? extends IEntity> targets, boolean directed, Date startDate, Date endDate)
          Initializes element with given type, ID, source and target entities, direction, start and end date.
  TimedManyToManyRelation(UUID id, IGeneralDataSet<? extends IGeneralElement> dataSet, List<? extends IEntity> sources, List<? extends IEntity> targets, boolean directed, Date startDate, Date endDate)
          Creates new timed many-to-many relation with given ID, data set, source and target entities, direction, start and end date.
 
Method Summary
 Integer getDuration()
          Returns the duration of relation in milliseconds.
 Date getEndDate()
          Returns the date of relation occurrence end.
 Date getStartDate()
          Returns the date of relation occurrence start.
 TimedManyToManyRelation replicate()
          Returns a replicated instance of this instance.
 TimedManyToManyRelation replicateTo(Object replica)
          Replicates this instance state to given replica object.
 void setEndDate(Date date)
          Sets the date of relation occurrence end.
 void setStartDate(Date date)
          Sets the date of relation occurrence start.
 
Methods inherited from class pl.edu.agh.cast.data.model.general.ManyToManyRelation
addSourceEntitiy, addTargetEntitiy, getDescString, getSourceEntities, getSourceEntitiy, getTargetEntities, getTargetEntitiy, isDirected, isEntityListValid, isEntityValid, isSourceEntitiesResolved, isSourceEntityListValid, isTargetEntitiesResolved, isTargetEntityListValid, removeSourceEntitiy, removeTargetEntitiy, setDirected, setSourceEntities, setTargetEntities
 
Methods inherited from class pl.edu.agh.cast.data.model.AbstractElement
afterSetMetaPropertyManager, canReplicateTo, checkIfValid, equals, getDataSet, getId, getType, hashCode, isValid, setDataSet, setId, setType, toString
 
Methods inherited from class pl.edu.agh.cast.data.model.property.PropertyContainer
addProperty, createProperty, dispose, getCustomProperties, getMetaPropertyManager, getPermanentProperties, getProperties, getProperty, getTransientProperties, initializeProperties, matches, removeProperty, setMetaPropertyManager, setProperty, update
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface pl.edu.agh.cast.data.model.general.IManyToManyRelation
addSourceEntitiy, addTargetEntitiy, getSourceEntities, getSourceEntitiy, getTargetEntities, getTargetEntitiy, isDirected, removeSourceEntitiy, removeTargetEntitiy, setDirected, setSourceEntities, setTargetEntities
 
Methods inherited from interface pl.edu.agh.cast.data.model.IElement
getDataSet
 
Methods inherited from interface pl.edu.agh.cast.data.model.Identifiable
getId, getType
 
Methods inherited from interface pl.edu.agh.cast.data.model.property.IPropertyContainer
addProperty, getCustomProperties, getMetaPropertyManager, getPermanentProperties, getProperties, getProperty, getTransientProperties, matches, removeProperty, setProperty
 
Methods inherited from interface java.util.Observer
update
 
Methods inherited from interface pl.edu.agh.cast.common.IValidatable
isValid
 
Methods inherited from interface pl.edu.agh.cast.common.IDisposable
dispose
 

Constructor Detail

TimedManyToManyRelation

public TimedManyToManyRelation()
Default constructor.

Usage of this constructor is discouraged, since it does not provide any integrity control. If, however, this constructor is used, the AbstractElement.isValid() method should be called in order to check the integrity.


TimedManyToManyRelation

public TimedManyToManyRelation(IGeneralDataSet<? extends IGeneralElement> dataSet,
                               List<? extends IEntity> sources,
                               List<? extends IEntity> targets,
                               boolean directed,
                               Date startDate,
                               Date endDate)
Creates new timed many-to-many relation with given data set, source and target entities, direction, start and end date.

Parameters:
dataSet - the general data set this relation is in
sources - reference list to source entities - must contain at least one reference
targets - reference list to target entities - must contain at least one reference
directed - the flag indicating whether the relation is directed or not (see IManyToManyRelation.isDirected())
startDate - date of relation occurrence start
endDate - date of relation occurrence end, if null, then startDate is used
Throws:
IllegalArgumentException - if end date is before start date

TimedManyToManyRelation

public TimedManyToManyRelation(UUID id,
                               IGeneralDataSet<? extends IGeneralElement> dataSet,
                               List<? extends IEntity> sources,
                               List<? extends IEntity> targets,
                               boolean directed,
                               Date startDate,
                               Date endDate)
Creates new timed many-to-many relation with given ID, data set, source and target entities, direction, start and end date.

Parameters:
id - ID of the element
dataSet - the general data set this relation is in
sources - reference list to source entities - must contain at least one reference
targets - reference list to target entities - must contain at least one reference
directed - the flag indicating whether the relation is directed or not (see IManyToManyRelation.isDirected())
startDate - date of relation occurrence start
endDate - date of relation occurrence end, if null, then startDate is used
Throws:
IllegalArgumentException - if end date is before start date

TimedManyToManyRelation

protected TimedManyToManyRelation(Type type)
Initializes element with type.

This constructor should be used only by extending classes to implement the default constructor.

Parameters:
type - type of the element
See Also:
ManyToManyRelation.ManyToManyRelation(Type)

TimedManyToManyRelation

protected TimedManyToManyRelation(Type type,
                                  UUID id,
                                  List<? extends IEntity> sources,
                                  List<? extends IEntity> targets,
                                  boolean directed,
                                  Date startDate,
                                  Date endDate)
Initializes element with given type, ID, source and target entities, direction, start and end date.

Parameters:
type - type of element which extends this one
id - ID of the element
sources - list of source entities - must contain at least one element
targets - list of target entities - must contain at least one element
directed - the flag indicating whether the relation is directed or not (see IManyToManyRelation.isDirected())
startDate - date of relation occurrence start
endDate - date of relation occurrence end, if null, then startDate is used
Throws:
IllegalArgumentException - if end date is before start date
Method Detail

getStartDate

public Date getStartDate()
Returns the date of relation occurrence start.

Specified by:
getStartDate in interface ITimedManyToManyRelation
Returns:
the date of relation occurrence start
See Also:
ITimedManyToManyRelation.getStartDate()

setStartDate

public void setStartDate(Date date)
Sets the date of relation occurrence start.

Specified by:
setStartDate in interface ITimedManyToManyRelation
Parameters:
date - the start date to set
See Also:
ITimedManyToManyRelation.setStartDate(java.util.Date)

getDuration

public Integer getDuration()
Returns the duration of relation in milliseconds.

Specified by:
getDuration in interface ITimedManyToManyRelation
Returns:
the duration of relation in milliseconds
See Also:
ITimedManyToManyRelation.getDuration()

getEndDate

public Date getEndDate()
Returns the date of relation occurrence end.

Specified by:
getEndDate in interface ITimedManyToManyRelation
Returns:
the date of relation occurrence end
See Also:
ITimedManyToManyRelation.getEndDate()

setEndDate

public void setEndDate(Date date)
Sets the date of relation occurrence end.

Specified by:
setEndDate in interface ITimedManyToManyRelation
Parameters:
date - the end date to set
See Also:
ITimedManyToManyRelation.setEndDate(java.util.Date)

replicateTo

public TimedManyToManyRelation replicateTo(Object replica)
                                    throws IllegalArgumentException,
                                           ReplicationException
Replicates this instance state to given replica object. The replica should be an instance of replicated instance's class (same class or subclass).

Replicates element type and ID.

Replicates relation direction, the lists of source and target entities are empty.

Replicates relation direction, the lists of source and target entities are empty.

Specified by:
replicateTo in interface IReplicable
Overrides:
replicateTo in class ManyToManyRelation
Parameters:
replica - the object to replicate to
Returns:
the replica object (the same instance as given)
Throws:
IllegalArgumentException - if given object is null or of invalid type
ReplicationException - if replication fails
See Also:
ManyToManyRelation.replicateTo(java.lang.Object)

replicate

public TimedManyToManyRelation replicate()
                                  throws ReplicationException
Returns a replicated instance of this instance.

Specified by:
replicate in interface IReplicable
Overrides:
replicate in class ManyToManyRelation
Returns:
replicated instance
Throws:
ReplicationException - if replication fails
See Also:
IReplicable.replicate()


Copyright © 2007-2009 IISG AGH-UST Krakow, Poland. All Rights Reserved.