xquery/XQuery__ReplaceCommand.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 02 Jul 2018 08:46:01 +0200
changeset 305 bad21c4f64bf
parent 296 ea3dbc023c80
permissions -rw-r--r--
Tagged Smalltalk/X 8.0.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xmlsuite/xquery' }"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: XQuery }"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
UpdateCommand subclass:#ReplaceCommand
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'XQuery-Update Facility'
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!ReplaceCommand class methodsFor:'priorities'!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
priority
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    "Superclass says that I am responsible to implement this method"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    ^30
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
! !
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!ReplaceCommand methodsFor:'checks'!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
checkSourceSequence:arg 
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    "Superclass says that I am responsible to implement this method"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    self 
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
        assert:
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
            (arg allSatisfy:[:item| item type = self targetSequence first type])
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
        description:('replacing different node types').
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    "Created: / 14-11-2007 / 10:06:41 / janfrog"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    "Modified: / 14-11-2007 / 15:20:01 / janfrog"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
checkTargetSequence:anXQuerySequence
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    self 
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
        assert: (anXQuerySequence containsSingleNode)
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
        description:'Target sequence must contain one node (see section 2.3.3.1)'.
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    self
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
        assert: (anXQuerySequence first item isDocumentNode not)
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
                 description:'Target sequence node must have a parent (see section 2.3.3.1)'.
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    "Modified: / 14-11-2007 / 11:58:32 / janfrog"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
! !
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
!ReplaceCommand methodsFor:'executing'!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
execute
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    "Superclass says that I am responsible to implement this method"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
       self replaceNode: self targetSequence first  with: self sourceSequence
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Created: / 14-11-2007 / 10:06:41 / janfrog"
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    "Modified: / 14-11-2007 / 16:09:43 / janfrog"
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    56
    "Modified: / 12-03-2012 / 15:07:29 / Adam Senk <senkadam@gmail.com>"
0
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
! !
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    59
!ReplaceCommand methodsFor:'replacing'!
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    60
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    61
replaceNode:targetNode with:sourceNodes 
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    62
    |importedSourceNodes|
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    63
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    64
    importedSourceNodes := sourceNodes 
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    65
                collect:[:sourceNode | sourceNode itemKind isConstructedNode ifTrue:[
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    66
                       targetNode documentAdaptor importForeignNode:sourceNode
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    67
                        adaptor:sourceNode documentAdaptor
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    68
                     ]
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    69
                   ifFalse:[sourceNode.].
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    70
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    71
                ].
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    72
    targetNode documentAdaptor updReplaceNode:targetNode 
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    73
        with:importedSourceNodes
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    74
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    75
    "Created: / 14-11-2007 / 10:24:04 / janfrog"
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    76
    "Modified: / 05-12-2007 / 14:26:29 / janfrog"
284
6f8ef403ca97 XQuery Update Facility bug fixing
senkadam
parents: 274
diff changeset
    77
    "Modified: / 01-05-2012 / 16:56:25 / Adam Senk <senkadam@gmail.com>"
274
28ac00b069d2 XQuery UpdateFacility bug fixing
senkadam
parents: 272
diff changeset
    78
! !
0
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
!ReplaceCommand class methodsFor:'documentation'!
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
232
9d8fd28b99b0 branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    82
version_SVN
9d8fd28b99b0 branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    83
    ^ '$Id$'
0
5057afe1ec87 Initial import from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
! !