Statistics
| Revision:

root / tmp / org.txm.analec.rcp / src / org / txm / macro / urs / edit / Si2SingletonMacro.groovy @ 1726

History | View | Annotate | Download (2.5 kB)

1 671 mdecorde
// @author Bruno Oberlé
2 671 mdecorde
// v1.0.0 20170711
3 671 mdecorde
4 671 mdecorde
// Cette macro individualise tous les noms de référents "SI" en leur attribuant un numéro unique (SI_1, SI_2, etc.).
5 671 mdecorde
6 1217 mdecorde
package org.txm.macro.urs.edit
7 671 mdecorde
8 671 mdecorde
import org.apache.commons.lang.*
9 671 mdecorde
import org.kohsuke.args4j.*
10 671 mdecorde
import groovy.transform.*
11 671 mdecorde
import org.txm.*
12 671 mdecorde
import org.txm.rcp.swt.widget.parameters.*
13 1217 mdecorde
import org.txm.annotation.urs.*
14 671 mdecorde
import org.txm.searchengine.cqp.*
15 671 mdecorde
import org.txm.searchengine.cqp.corpus.*
16 671 mdecorde
import visuAnalec.Message.*
17 671 mdecorde
import visuAnalec.donnees.*
18 671 mdecorde
import visuAnalec.elements.*
19 671 mdecorde
import visuAnalec.vue.*
20 671 mdecorde
21 671 mdecorde
// CORPS DU SCRIPT
22 671 mdecorde
23 671 mdecorde
if (!(corpusViewSelection instanceof MainCorpus)) {
24 671 mdecorde
        println "Corpora selection is not a Corpus"
25 671 mdecorde
        return
26 671 mdecorde
}
27 671 mdecorde
28 671 mdecorde
// BEGINNING OF PARAMETERS
29 671 mdecorde
@Field @Option(name="unitType", usage="", widget="String", required=true, def="MENTION")
30 671 mdecorde
def unitType
31 671 mdecorde
@Field @Option(name="refPropertyName", usage="", widget="String", required=true, def="REF")
32 671 mdecorde
def refPropertyName
33 671 mdecorde
if (!ParametersDialog.open(this)) return
34 671 mdecorde
35 671 mdecorde
corpus = corpusViewSelection
36 786 sjacqu01
CQI = CQPSearchEngine.getCqiClient()
37 671 mdecorde
word = corpus.getWordProperty()
38 1217 mdecorde
analecCorpus = URSCorpora.getCorpus(corpus)
39 1217 mdecorde
vue = URSCorpora.getVue(corpus)
40 671 mdecorde
structure = analecCorpus.getStructure()
41 671 mdecorde
if (!structure.getUnites().contains(unitType)) { // check if the structure contains the unitType units
42 671 mdecorde
        println "Error: corpus structure does not contains unit with name=$unitType"
43 671 mdecorde
        return
44 671 mdecorde
}
45 671 mdecorde
46 671 mdecorde
if (!structure.getUniteProperties(unitType).contains(refPropertyName)) {
47 671 mdecorde
        println "Error: corpus structure does not contains property name=$unitType"
48 671 mdecorde
        return
49 671 mdecorde
}
50 671 mdecorde
51 671 mdecorde
def nModified = 0
52 671 mdecorde
def nIgnored = 0
53 671 mdecorde
54 671 mdecorde
def units = analecCorpus.getUnites(unitType)
55 671 mdecorde
//units.sort() { a, b -> a.getDeb() <=> b.getDeb() ?: a.getFin() <=> b.getFin() }
56 671 mdecorde
57 671 mdecorde
def refSet = new HashSet()
58 671 mdecorde
for (Unite unit : units) { // process all units
59 671 mdecorde
        def prop = unit.getProp(refPropertyName)
60 671 mdecorde
        refSet.add(prop)
61 671 mdecorde
}
62 671 mdecorde
63 671 mdecorde
def counter = 1
64 671 mdecorde
for (Unite unit : units) { // process all units
65 671 mdecorde
66 671 mdecorde
        def prop = unit.getProp(refPropertyName)
67 671 mdecorde
        if (prop && prop == "SI") {
68 671 mdecorde
                def name = "SI_" + counter
69 671 mdecorde
                while (refSet.contains(name)) {
70 671 mdecorde
                        counter++
71 671 mdecorde
                        name = "SI_" + counter
72 671 mdecorde
                }
73 671 mdecorde
                counter++
74 671 mdecorde
                //println "old prop"+ prop
75 671 mdecorde
                unit.getProps().put(refPropertyName, name)
76 671 mdecorde
                //println "new prop"+ name
77 671 mdecorde
                nModified++
78 671 mdecorde
        } else {
79 671 mdecorde
                nIgnored++
80 671 mdecorde
        }
81 671 mdecorde
}
82 671 mdecorde
83 671 mdecorde
println "Result:"
84 671 mdecorde
println "- $nModified units of type $unitType have been modified."
85 671 mdecorde
println "- $nIgnored units of type $unitType have not been modified.\n"
86 671 mdecorde
87 671 mdecorde
// udpate the view (also see also
88 671 mdecorde
// http://forge.cbp.ens-lyon.fr/redmine/issues/2065)
89 1217 mdecorde
URSCorpora.getVue(analecCorpus).retablirVueParDefaut()