Révision 2730
tmp/org.txm.groovy.core/src/groovy/org/txm/macro/edition/RenameEditionMacro.groovy (revision 2730) | ||
---|---|---|
1 |
// STANDARD DECLARATIONS |
|
2 |
package org.txm.macro.edition |
|
3 |
|
|
4 |
import org.kohsuke.args4j.* |
|
5 |
import groovy.transform.Field |
|
6 |
import org.txm.rcp.swt.widget.parameters.* |
|
7 |
import org.txm.searchengine.cqp.corpus.MainCorpus |
|
8 |
import org.txm.objects.* |
|
9 |
|
|
10 |
if (!(corpusViewSelection instanceof MainCorpus)) { |
|
11 |
println "Please select a main corpus to update the editions" |
|
12 |
return false |
|
13 |
} |
|
14 |
@Field @Option(name="oldName", usage="the old edition name", widget="String", required=false, def="default") |
|
15 |
def oldName |
|
16 |
|
|
17 |
@Field @Option(name="newName", usage="the old edition name", widget="String", required=false, def="default") |
|
18 |
def newName |
|
19 |
|
|
20 |
// Open the parameters input dialog box |
|
21 |
if (!ParametersDialog.open(this)) return; |
|
22 |
|
|
23 |
// END OF PARAMETERS |
|
24 |
|
|
25 |
MainCorpus corpus = corpusViewSelection |
|
26 |
Project project = corpus.getProject() |
|
27 |
String pname = project.getName() |
|
28 |
|
|
29 |
def declaredEditions = project.getEditionNames() |
|
30 |
|
|
31 |
// 0- ensure parameters |
|
32 |
if (!declaredEditions.contains(oldName)) { |
|
33 |
println "Error: the $oldName edition is not declared in the corpus: $declaredEditions" |
|
34 |
return false |
|
35 |
} |
|
36 |
if (declaredEditions.contains(newName)) { |
|
37 |
println "Error: the $newName edition is already declared in the corpus: $declaredEditions" |
|
38 |
return false |
|
39 |
} |
|
40 |
|
|
41 |
File oldEditionDirectory = new File(project.getProjectDirectory(), "HTML/$pname/$oldName") |
|
42 |
if (!oldEditionDirectory.exists()) { |
|
43 |
println "Error: the $oldEditionDirectory edition directory doesn't exist." |
|
44 |
return false |
|
45 |
} |
|
46 |
File newEditionDirectory = new File(project.getProjectDirectory(), "HTML/$pname/$newName") |
|
47 |
if (newEditionDirectory.exists()) { |
|
48 |
println "Error: the $newEditionDirectory edition directory already exists." |
|
49 |
return false |
|
50 |
} |
|
51 |
|
|
52 |
// 1- move the HTML directories |
|
53 |
if (!oldEditionDirectory.renameTo(newEditionDirectory)) { |
|
54 |
println "Error: the $oldEditionDirectory could not be moved to the $newEditionDirectory directory" |
|
55 |
return false |
|
56 |
} |
|
57 |
|
|
58 |
// 2- rename the edition declaration |
|
59 |
EditionDefinition oldEditionDeclaration = project.getEditionDefinition(oldName) |
|
60 |
EditionDefinition newEditionDeclaration = project.getEditionDefinition(newName) |
|
61 |
|
|
62 |
//later use oldEditionDeclaration.copyParametersTo(newEditionDeclaration) |
|
63 |
newEditionDeclaration.setPageBreakTag(oldEditionDeclaration.getPageElement()) |
|
64 |
newEditionDeclaration.setWordsPerPage(oldEditionDeclaration.getWordsPerPage()) |
|
65 |
newEditionDeclaration.setBuildEdition(oldEditionDeclaration.getBuildEdition()) |
|
66 |
if (oldEditionDeclaration.getImagesDirectory() != null) newEditionDeclaration.setImagesDirectory(oldEditionDeclaration.getImagesDirectory()) |
|
67 |
|
|
68 |
oldEditionDeclaration.delete() // later this method will return false if the deletion failed |
|
69 |
|
|
70 |
// 3- update the Text editions |
|
71 |
|
|
72 |
int n = 0; |
|
73 |
for (Text text : project.getTexts()) { |
|
74 |
Edition edition = text.getEdition(oldName) |
|
75 |
if (edition == null) continue // nothing to do for this text |
|
76 |
|
|
77 |
edition.setName(newName) |
|
78 |
edition.compute(false) |
|
79 |
n++ |
|
80 |
} |
|
81 |
|
|
82 |
if (n > 0) { |
|
83 |
println "$n text editions have been updated" |
|
84 |
} |
|
85 |
|
|
86 |
// 4- update default editions if necessary |
|
87 |
def defaultEditions = project.getDefaultEditionName().split(",") as List |
|
88 |
int idx = defaultEditions.indexOf(oldName) |
|
89 |
if (idx >= 0) { |
|
90 |
defaultEditions[idx] = newName |
|
91 |
project.setDefaultEditionName(defaultEditions.join(",")) |
|
92 |
println "Default editions updated to: "+project.getDefaultEditionName() |
|
93 |
} |
|
94 |
|
|
95 |
|
|
96 |
// 5- finally save preferences changes |
|
97 |
project.save() |
|
98 |
println "Done." |
Formats disponibles : Unified diff