org.basex.query.up.primitives
Class InsertInto

java.lang.Object
  extended by org.basex.query.up.primitives.Operation
      extended by org.basex.query.up.primitives.UpdatePrimitive
          extended by org.basex.query.up.primitives.NodeCopy
              extended by org.basex.query.up.primitives.InsertInto
Direct Known Subclasses:
ReplaceContent

public class InsertInto
extends NodeCopy

Insert into primitive.

Author:
BaseX Team 2005-12, BSD License, Lukas Kircher

Field Summary
 
Fields inherited from class org.basex.query.up.primitives.UpdatePrimitive
targetPre, type
 
Fields inherited from class org.basex.query.up.primitives.Operation
data, info
 
Constructor Summary
InsertInto(int p, Data d, InputInfo i, ANodeList n)
          Constructor for an insertInto.
 
Method Summary
 void addAtomics(AtomicUpdateList l)
          Adds the atomic update operations for this update primitive to the given list.
 void merge(UpdatePrimitive p)
          Merges two update primitives, as they have the same target node.
 UpdatePrimitive[] substitute(MemData tmp)
          Substitutes the update primitive if necessary.
 void update(NamePool pool)
          Updates the name pool, which is used to find duplicate attributes and namespace conflicts.
 
Methods inherited from class org.basex.query.up.primitives.NodeCopy
prepare, size, toString
 
Methods inherited from class org.basex.query.up.primitives.UpdatePrimitive
getData, getInfo, getTargetNode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

InsertInto

public InsertInto(int p,
                  Data d,
                  InputInfo i,
                  ANodeList n)
Constructor for an insertInto.

Parameters:
p - target pre value
d - target data instance
i - input info
n - node copy insertion sequence
Method Detail

merge

public final void merge(UpdatePrimitive p)
Description copied from class: UpdatePrimitive
Merges two update primitives, as they have the same target node.

Specified by:
merge in class UpdatePrimitive
Parameters:
p - primitive to merge with

addAtomics

public final void addAtomics(AtomicUpdateList l)
Description copied from class: UpdatePrimitive
Adds the atomic update operations for this update primitive to the given list.

Specified by:
addAtomics in class UpdatePrimitive
Parameters:
l - list of atomic updates

substitute

public final UpdatePrimitive[] substitute(MemData tmp)
Description copied from class: UpdatePrimitive
Substitutes the update primitive if necessary. For instance a 'Replace Value of' primitive called on a target T with T being an element results in a 'Replace Element Content' primitive with target T. As this is ugly to process it is substituted by delete primitives for every child of T and an 'Insert into' primitive if the length of the (optional!) text node is greater zero. When a primitive is substituted it is still added to the list itself to be able to throw exceptions when necessary. I.e. for multiple replaces on the same target node. These update primitives don't produce atomic updates, hence this won't affect the database.

Specified by:
substitute in class UpdatePrimitive
Parameters:
tmp - temporary mem data
Returns:
An array that contains the substituting primitives or this update primitive if no substitution is necessary.

update

public final void update(NamePool pool)
Description copied from class: UpdatePrimitive
Updates the name pool, which is used to find duplicate attributes and namespace conflicts.

Specified by:
update in class UpdatePrimitive
Parameters:
pool - name pool