org.basex.query.up.primitives
Class InsertBefore

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.InsertBefore

public final class InsertBefore
extends NodeCopy

Insert before 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
InsertBefore(int p, Data d, InputInfo i, ANodeList c)
          Constructor.
 
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

InsertBefore

public InsertBefore(int p,
                    Data d,
                    InputInfo i,
                    ANodeList c)
Constructor.

Parameters:
p - pre
d - data
i - input info
c - node copy
Method Detail

merge

public void merge(UpdatePrimitive p)
           throws QueryException
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
Throws:
QueryException - exception

addAtomics

public 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 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 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