Package wt.occurrence

Interface UsesOccurrence

All Superinterfaces:
wt.fc._NetFactor, wt.fc._ObjectMappable, _Occurrence, wt.fc._Persistable, _UsesOccurrence, NetFactor, ObjectMappable, Occurrence, Persistable, Serializable
All Known Implementing Classes:
_PartUsesOccurrence, PartUsesOccurrence

@GenAsPersistable(interfaces=Occurrence.class,extendable=true,properties={@GeneratedProperty(name="usesOccurrenceDataIdentifier",type=long.class,javaDoc="This identifier is used to improve efficiency so that many {@link UsesOccurrenceData} objects can have the same foreign key link to this <code>UsesOccurrence</code> and several <code>UsesOccurrence</code> objects can also share this same identifier, but <em>only if all of their associated UsesOccurrenceData objects are the same</em>. If several <code>UsesOccurrence</code>s share the same <code>UsesOccurrenceData</code> objects and one wants to change it (without affecting the others), then it must get a new identifier for itself and make copies of all of its <code>OccurrenceData</code> objects and link to those new copies by putting its new identifier into them as a foreign key. Finally it can change this new set of data as desired without affecting other <code>UsesOccurrence</code>s. Because of the complex management of this attribute it is necessary to call one of the {@link OccurrenceService#saveUsesOccurrenceAndData} methods when saving a {@link UsesOccurrence} (and optionally its associated {@link UsesOccurenceData}.",columnProperties=@ColumnProperties(index=true)),@GeneratedProperty(name="usesOccurrenceIdentifier",type=long.class,supportedAPI=PUBLIC,javaDoc="This identifier is shared by many {@link OccurrenceableLink} objects, all of which represent the same link, except maybe for different iterations or versions of objects being linked. In other words, when the <code>OccurrenceableLink</code> is <em>copied forward</em> this identifier is copied without changing its value.",columnProperties=@ColumnProperties(index=true)),@GeneratedProperty(name="usesOccurrenceGlobalId",type=java.lang.String.class,supportedAPI=PUBLIC,javaDoc="This identifier is similar to usesOccurrenceIdentifier but is globally unique. It is not quaranteed to be populated in old systems.",columnProperties=@ColumnProperties(index=true)),@GeneratedProperty(name="pathOccurrence",type=PathOccurrence.class,javaDoc="This non-persistent {@link PathOccurrence} can be populated to hold the value that applies in a particular situation.",accessors=@PropertyAccessors(setExceptions={}),columnProperties=@ColumnProperties(persistent=false))},foreignKeys={@GeneratedForeignKey(myRoleIsRoleA=false,foreignKeyRole=@ForeignKeyRole(name="link",type=OccurrenceableLink.class,constraints=@PropertyConstraints(required=true),columnProperties=@ColumnProperties(unique=true)),myRole=@MyRole(name="usesOccurrence")),@GeneratedForeignKey(myRoleIsRoleA=false,foreignKeyRole=@ForeignKeyRole(name="context",type=UsesOccurrenceContext.class,constraints=@PropertyConstraints(required=true)),myRole=@MyRole(name="theUsesOccurrence"))},derivedProperties=@DerivedProperty(name="usesName",derivedFrom="name",supportedAPI=PUBLIC),tableProperties=@TableProperties(compositeIndex1="+linkReference.key.id",compositeUnique1="+contextReference.key.id + NVL( name, idA2A2 )")) public interface UsesOccurrence extends _UsesOccurrence
This UsesOccurrence identifies a unique instance of an OccurrenceableLink in order to deal with:
  • the ambiguity inherent when links have quantity greater than 1
  • the need to hang UsesOccurrenceData off of links
  • the need to be a part of the path of UsesOccurrences that define a PathOccurrence

The usesOccurrenceIdentifier is used to link to the PathOccurrence; the usesOccurrenceIdentifier is generated when a brand new UsesOccurrence is created and then it is preserved when new copies are made in response to an OccurrenceableLink being copied forward.

You must use one of the OccurrenceService.saveUsesOccurrenceAndData(wt.occurrence.UsesOccurrence, java.util.Vector) methods when saving a UsesOccurrence because of a special optimization that allows UsesOccurrenceData to be managed more efficiently.

Supported API: true

Extendable: true

  • Method Details

    • isPlaceholder

      boolean isPlaceholder()
      Returns true if the UsesOccurrence is only used to complete a PathOccurrence and has no other useful information associated with it.

      Supported API: true
      Returns:
      boolean