Statistics
| Revision:

root / tmp / org.txm.groovy.core / src / groovy / org / txm / scripts / importer / RGAQCJ / importer.groovy @ 1000

History | View | Annotate | Download (7.7 kB)

1 321 mdecorde
// Copyright © 2010-2013 ENS de Lyon.
2 321 mdecorde
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
3 321 mdecorde
// Lyon 2, University of Franche-Comté, University of Nice
4 321 mdecorde
// Sophia Antipolis, University of Paris 3.
5 321 mdecorde
//
6 321 mdecorde
// The TXM platform is free software: you can redistribute it
7 321 mdecorde
// and/or modify it under the terms of the GNU General Public
8 321 mdecorde
// License as published by the Free Software Foundation,
9 321 mdecorde
// either version 2 of the License, or (at your option) any
10 321 mdecorde
// later version.
11 321 mdecorde
//
12 321 mdecorde
// The TXM platform is distributed in the hope that it will be
13 321 mdecorde
// useful, but WITHOUT ANY WARRANTY; without even the implied
14 321 mdecorde
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 321 mdecorde
// PURPOSE. See the GNU General Public License for more
16 321 mdecorde
// details.
17 321 mdecorde
//
18 321 mdecorde
// You should have received a copy of the GNU General
19 321 mdecorde
// Public License along with the TXM platform. If not, see
20 321 mdecorde
// http://www.gnu.org/licenses.
21 321 mdecorde
//
22 321 mdecorde
//
23 321 mdecorde
//
24 479 mdecorde
// $LastChangedDate: 2013-05-06 17:38:43 +0200 (lun. 06 mai 2013) $
25 321 mdecorde
// $LastChangedRevision: 2386 $
26 321 mdecorde
// $LastChangedBy: mdecorde $
27 321 mdecorde
//
28 986 mdecorde
package org.txm.scripts.importer.RGAQCJ
29 321 mdecorde
30 986 mdecorde
import org.txm.scripts.importer.*;
31 1000 mdecorde
import org.txm.importer.scripts.filters.*;
32 321 mdecorde
import org.txm.scripts.*;
33 1000 mdecorde
import org.txm.importer.scripts.xmltxm.*;
34 321 mdecorde
import org.txm.utils.treetagger.TreeTagger;
35 321 mdecorde
import javax.xml.stream.*;
36 321 mdecorde
import java.net.URL;
37 321 mdecorde
import java.util.Properties;
38 321 mdecorde
39 986 mdecorde
import org.txm.scripts.filters.CutHeader.*;
40 986 mdecorde
import org.txm.scripts.filters.Tokeniser.*;
41 986 mdecorde
import org.txm.scripts.filters.FusionHeader.*;
42 321 mdecorde
43 321 mdecorde
import java.io.BufferedReader;
44 321 mdecorde
import java.io.FileInputStream;
45 321 mdecorde
import java.io.InputStreamReader;
46 321 mdecorde
47 321 mdecorde
import org.apache.commons.lang.StringUtils;
48 321 mdecorde
import org.txm.*;
49 927 mdecorde
import org.txm.core.engines.*;
50 321 mdecorde
51 321 mdecorde
// TODO: Auto-generated Javadoc
52 321 mdecorde
/**
53 321 mdecorde
 * The Class importer.
54 321 mdecorde
 */
55 321 mdecorde
class importer {
56 321 mdecorde
57 321 mdecorde
        /** The tokenize. */
58 321 mdecorde
        boolean tokenize = true;
59 321 mdecorde
60 321 mdecorde
        /**
61 321 mdecorde
         * Run.
62 321 mdecorde
         *
63 321 mdecorde
         * @param dir the dir
64 321 mdecorde
         * @param paramfile the paramfile
65 321 mdecorde
         * @param basename the basename
66 321 mdecorde
         * @return true, if successful
67 321 mdecorde
         */
68 321 mdecorde
        public boolean run(File dir, File paramfile, String basename)
69 321 mdecorde
        {
70 321 mdecorde
                if(!paramfile.exists())
71 321 mdecorde
                {
72 321 mdecorde
                        System.err.println("Parameter file does not exists: "+paramfile.getAbsolutePath());
73 321 mdecorde
                        return false;
74 321 mdecorde
                }
75 321 mdecorde
                Properties properties = new Properties();
76 321 mdecorde
                BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(paramfile) , "UTF-8"));
77 321 mdecorde
                String line = input.readLine();
78 321 mdecorde
                while(line != null)
79 321 mdecorde
                {
80 321 mdecorde
                        String[] split = line.split("="); //$NON-NLS-1$
81 321 mdecorde
                        if(split.length == 2)
82 321 mdecorde
                        {
83 321 mdecorde
                                properties.put(split[0], split[1]);
84 321 mdecorde
                        }
85 321 mdecorde
                        else if(split.length > 2)
86 321 mdecorde
                        {
87 321 mdecorde
                                String[] subsplit = new String[split.length -1 ];
88 321 mdecorde
                                System.arraycopy(split, 1, subsplit, 0, split.length-1);
89 321 mdecorde
                                properties.put(split[0], StringUtils.join(subsplit, "=")); //$NON-NLS-1$
90 321 mdecorde
                        }
91 321 mdecorde
                        line = input.readLine();
92 321 mdecorde
                }
93 321 mdecorde
94 321 mdecorde
                if(!(properties.containsKey("nbP") && properties.containsKey("nbTaxo") && properties.containsKey("nbResp")))
95 321 mdecorde
                {
96 321 mdecorde
                        System.err.println("Missing property: nbP or nbTaxo or nbResp");
97 321 mdecorde
                        return false;
98 321 mdecorde
                }
99 321 mdecorde
                int nbP = Integer.parseInt(properties.getProperty("nbP"));
100 321 mdecorde
                int nbTaxo = Integer.parseInt(properties.getProperty("nbTaxo"));
101 321 mdecorde
                int nbResp = Integer.parseInt(properties.getProperty("nbResp"));
102 321 mdecorde
103 321 mdecorde
                if(nbResp == 0)
104 321 mdecorde
                {
105 321 mdecorde
                        System.err.println("No resp ");
106 321 mdecorde
                        return false;
107 321 mdecorde
                }
108 321 mdecorde
                String rootDir = dir.getAbsolutePath()+"/";
109 321 mdecorde
                ArrayList<String> milestones = new ArrayList<String>();
110 321 mdecorde
111 321 mdecorde
                //where the binaries will be created
112 878 sjacqu01
                File binDir = new File(Toolbox.getTxmHomePath(),"corpora/"+basename);
113 321 mdecorde
                binDir.deleteDir();
114 321 mdecorde
                binDir.mkdir();
115 321 mdecorde
116 321 mdecorde
                new File(binDir,"txm").deleteDir();
117 321 mdecorde
                new File(binDir,"txm").mkdir();
118 321 mdecorde
119 321 mdecorde
                List<File> files = new File(rootDir,"").listFiles();
120 321 mdecorde
121 321 mdecorde
                //set working directory
122 321 mdecorde
                rootDir = binDir.getAbsolutePath()+"/";
123 321 mdecorde
124 321 mdecorde
                //Set import parameters
125 321 mdecorde
                def correspType = new HashMap<String,String>();
126 321 mdecorde
                // correspType(attribut word wlx, attribut type de la propriété ana du w txm)
127 321 mdecorde
                for(int p = 1 ; p <= nbP ; p++)
128 321 mdecorde
                {
129 321 mdecorde
                        correspType.put("p"+p, properties.get(properties.get("P"+p+"_taxo")));
130 321 mdecorde
                }
131 321 mdecorde
132 321 mdecorde
                def correspRef = new HashMap<String,String>()
133 321 mdecorde
                // correspRef (attribut word wlx, attribut ref de la propriété ana du w txm. ref pointe vers l'identifiant du respStmt du TEIheader)
134 321 mdecorde
                for(int p = 1 ; p <= nbP ; p++)
135 321 mdecorde
                {
136 321 mdecorde
                        String taxo=properties.get("P"+p+"_taxo")
137 321 mdecorde
                        String resp=properties.get(taxo+"_resp")
138 321 mdecorde
                        correspRef.put("p"+p,properties.get(resp));
139 321 mdecorde
                }
140 321 mdecorde
141 321 mdecorde
                //il faut lister les id de tous les respStmt
142 321 mdecorde
                def respId = [];
143 321 mdecorde
                for(int r = 1 ; r <= nbResp ; r++)
144 321 mdecorde
                        respId << properties.get("R"+r);
145 321 mdecorde
146 321 mdecorde
                //fait la correspondance entre le respId et le rapport d'execution de l'outil
147 321 mdecorde
148 321 mdecorde
                def applications = new HashMap<String,HashMap<String,String>>();
149 321 mdecorde
                //fait la correspondance entre le respId et les attributs type de la propriété ana du w txm
150 321 mdecorde
                //pour construire les ref vers les taxonomies
151 321 mdecorde
                for(int r = 1 ; r <= nbResp ; r++)
152 321 mdecorde
                {
153 321 mdecorde
                        applications.put(properties.get("R"+r), new ArrayList<String>());
154 321 mdecorde
                        applications.get(properties.get("R"+r)).add(properties.get("R"+r+"_app_id"));//app ident
155 321 mdecorde
                        applications.get(properties.get("R"+r)).add(properties.get("R"+r+"_app_version"));//app version
156 321 mdecorde
                        applications.get(properties.get("R"+r)).add(properties.get("R"+r+"_app_reportfile"));//app report file path
157 321 mdecorde
                }
158 321 mdecorde
159 321 mdecorde
160 321 mdecorde
                def taxonomiesUtilisees = new HashMap<String,String[]>();
161 321 mdecorde
                //associe un id d'item avec sa description et son URI
162 321 mdecorde
                for(int t = 1 ; t <= nbTaxo ; t++)
163 321 mdecorde
                {
164 321 mdecorde
                        String resp_id = properties.get(properties.get("T"+t+"_resp"))
165 321 mdecorde
                        if(!taxonomiesUtilisees.containsKey(resp_id))
166 321 mdecorde
                                taxonomiesUtilisees.put(resp_id,[]);//,"lemma","lasla","grace"]);
167 321 mdecorde
                        taxonomiesUtilisees.get(resp_id) << properties.get("T"+t)
168 321 mdecorde
                }
169 321 mdecorde
170 321 mdecorde
                def itemsURI = new HashMap<String,HashMap<String,String>>();
171 321 mdecorde
                //informations de respStmt
172 321 mdecorde
                //resps (respId <voir ci-dessus>, [description, person, date])
173 321 mdecorde
                for(int t = 1 ; t <= nbTaxo ; t++)
174 321 mdecorde
                {
175 321 mdecorde
                        String taxo = properties.get("T"+t);
176 321 mdecorde
                        itemsURI.put(taxo,new HashMap<String,String>());
177 321 mdecorde
                        itemsURI.get(taxo).put("tagset",properties.get("T"+t+"_tagset"));
178 321 mdecorde
                        itemsURI.get(taxo).put("website",properties.get("T"+t+"_web"));
179 321 mdecorde
                }
180 321 mdecorde
                def resps = new HashMap<String,String[]>();
181 321 mdecorde
                for(int r = 1 ; r <= nbResp ; r++)
182 321 mdecorde
                {
183 321 mdecorde
                        resps.put(properties.get("R"+r), [properties.get("R"+r+"_desc"),properties.get("R"+r+"_who"),properties.get("R"+r+"_when"),properties.get("R"+r+"_day")])
184 321 mdecorde
                }
185 321 mdecorde
186 321 mdecorde
                println("Weblex import parameters : ")
187 321 mdecorde
                println("resps id "+respId);
188 321 mdecorde
                println("resps infos"+resps);
189 321 mdecorde
                println("applications "+applications);
190 321 mdecorde
191 321 mdecorde
                println("correspType "+correspType)
192 321 mdecorde
                println("correspRef "+correspRef)
193 321 mdecorde
194 321 mdecorde
                println("taxonomiesUtilisees "+taxonomiesUtilisees)
195 321 mdecorde
                println("itemsURI "+itemsURI)
196 321 mdecorde
197 321 mdecorde
                //TRANSFORM INTO XML-TEI-TXM
198 321 mdecorde
                for(File f : files)
199 321 mdecorde
                {
200 321 mdecorde
                        //ArrayList<String> milestones = new ArrayList<String>();
201 321 mdecorde
                        File file = f;
202 321 mdecorde
                        String txmfile = f.getName();
203 321 mdecorde
                        println("Building xml-tei-txm "+f+ " >> "+rootDir+"txm/"+txmfile)
204 321 mdecorde
205 321 mdecorde
                        //lance le traitement
206 321 mdecorde
                        def builder3 = new Xml2Ana(file);
207 321 mdecorde
                        builder3.setCorrespondances(correspRef, correspType);
208 321 mdecorde
                        builder3.setHeaderInfos(respId,resps, applications, taxonomiesUtilisees, itemsURI)
209 321 mdecorde
                        builder3.transformFile(rootDir+"txm/",txmfile);
210 321 mdecorde
                }
211 321 mdecorde
                return true;
212 321 mdecorde
        }
213 321 mdecorde
214 321 mdecorde
        /**
215 321 mdecorde
         * The main method.
216 321 mdecorde
         *
217 321 mdecorde
         * @param args the arguments
218 321 mdecorde
         */
219 321 mdecorde
        public static void main(String[] args)
220 321 mdecorde
        {
221 321 mdecorde
                File dir = new File("~/xml/bfm/")
222 321 mdecorde
                new importer().run(dir);
223 321 mdecorde
        }
224 321 mdecorde
}
225 321 mdecorde
226 321 mdecorde
/* PARAM FILE EXAMPLE
227 321 mdecorde
nbP=3
228 321 mdecorde
nbTaxo=2
229 321 mdecorde
nbResp=2
230 321 mdecorde

231 321 mdecorde
R1=init
232 321 mdecorde
R1_desc=initial taggin
233 321 mdecorde
R1_who=al
234 321 mdecorde
R1_when=2010
235 321 mdecorde
R1_day=Tue Mar  2 21:02:55 Paris, Madrid 2010
236 321 mdecorde
R1_app_id=appR1
237 321 mdecorde
R1_app_version=app1V
238 321 mdecorde
R1_app_reportfile=
239 321 mdecorde

240 321 mdecorde
R2=apinit
241 321 mdecorde
R2_desc=second taggin
242 321 mdecorde
R2_who=slh
243 321 mdecorde
R2_when=2010
244 321 mdecorde
R2_day=Tue Mar  2 21:02:55 Paris, Madrid 2010
245 321 mdecorde
R2_app_id=appR2
246 321 mdecorde
R2_app_version=app2V
247 321 mdecorde
R2_app_reportfile=
248 321 mdecorde

249 321 mdecorde
P1=truc1
250 321 mdecorde
P1_taxo=T1
251 321 mdecorde

252 321 mdecorde
P2=bidul2
253 321 mdecorde
P2_taxo=T1
254 321 mdecorde

255 321 mdecorde
P3=machin3
256 321 mdecorde
P3_taxo=T2
257 321 mdecorde

258 321 mdecorde
T1=CATTEX
259 321 mdecorde
T1_web=www.google.fr
260 321 mdecorde
T1_tagset=www.google.fr
261 321 mdecorde
T1_resp=R1
262 321 mdecorde

263 321 mdecorde
T2=TTFR
264 321 mdecorde
T2_web=www.bing.fr
265 321 mdecorde
T2_tagset=www.bing.fr
266 321 mdecorde
T2_resp=R2
267 321 mdecorde
*/