lbajardsilogic@21
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@21
|
2
|
lbajardsilogic@21
|
3 /* Sound Access
|
lbajardsilogic@21
|
4 EASAIER client application.
|
lbajardsilogic@21
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@21
|
6
|
lbajardsilogic@21
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@21
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@21
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@21
|
10 License, or (at your option) any later version. See the file
|
lbajardsilogic@21
|
11 COPYING included with this distribution for more information.
|
lbajardsilogic@21
|
12 */
|
lbajardsilogic@21
|
13
|
lbajardsilogic@21
|
14 #include "EasaierSessionManager.h"
|
lbajardsilogic@21
|
15
|
lbajardsilogic@21
|
16 #include <QUrl>
|
lbajardsilogic@21
|
17 #include <QMessageBox>
|
lbajardsilogic@21
|
18 #include <QTextStream>
|
lbajardsilogic@21
|
19 #include <iostream>
|
lbajardsilogic@29
|
20 #include <QStatusBar>
|
benoitrigolleau@81
|
21 #include <vector>
|
lbajardsilogic@90
|
22
|
benoitrigolleau@88
|
23 #include <QApplication>
|
benoitrigolleau@88
|
24 #include <Qt>
|
lbajardsilogic@29
|
25
|
lbajardsilogic@21
|
26 #include "layer/Layer.h"
|
lbajardsilogic@21
|
27 #include "base/TempDirectory.h"
|
lbajardsilogic@21
|
28 #include "data/fileio/AudioSourceInfoReader.h"
|
lbajardsilogic@21
|
29 #include "data/fileio/ModelReader.h"
|
lbajardsilogic@21
|
30 #include "data/fileio/QueryConfigReader.h"
|
lbajardsilogic@21
|
31 #include "data/fileio/SparqlResultsReader.h"
|
lbajardsilogic@21
|
32 #include "data/model/WaveFileModel.h"
|
lbajardsilogic@21
|
33 #include "main/MainWindow.h"
|
lbajardsilogic@21
|
34 #include "widgets/QueryResultsWidget.h"
|
benoitrigolleau@81
|
35 #include "base/PropertyContainer.h"
|
lbajardsilogic@85
|
36 #include "data/fileio/AudioFileReaderFactory.h"
|
lbajardsilogic@21
|
37
|
lbajardsilogic@21
|
38 EasaierSessionManager::EasaierSessionManager(HttpClient* httpClient) : QObject(),
|
lbajardsilogic@21
|
39 m_fileName(""),
|
lbajardsilogic@21
|
40 m_httpClient(httpClient),
|
lbajardsilogic@21
|
41 m_document(0),
|
lbajardsilogic@21
|
42 m_audioSourceInfoModel(0),
|
lbajardsilogic@21
|
43 m_queryModel(0)
|
lbajardsilogic@64
|
44 {
|
lbajardsilogic@64
|
45 connect(m_httpClient, SIGNAL(requestFinished(int, bool)), this, SLOT(fileLoaded(int, bool)));
|
lbajardsilogic@64
|
46 }
|
lbajardsilogic@21
|
47
|
lbajardsilogic@21
|
48 EasaierSessionManager::~EasaierSessionManager()
|
lbajardsilogic@21
|
49 {
|
lbajardsilogic@21
|
50 closeSession();
|
lbajardsilogic@21
|
51 m_httpClient = 0;
|
lbajardsilogic@21
|
52 }
|
lbajardsilogic@21
|
53
|
lbajardsilogic@21
|
54 bool EasaierSessionManager::newSession()
|
lbajardsilogic@21
|
55 {
|
lbajardsilogic@21
|
56 closeSession();
|
lbajardsilogic@21
|
57
|
lbajardsilogic@21
|
58 m_queryModel = new QueryModel();
|
lbajardsilogic@86
|
59 QString filename = "http://" + m_httpClient->getHost() + "/data/query/queryfield.xml";
|
lbajardsilogic@92
|
60 QString query = "/data/query/queryfield.xml";
|
lbajardsilogic@92
|
61
|
lbajardsilogic@92
|
62 m_httpClient->setHost(m_httpClient->getHost());
|
lbajardsilogic@90
|
63
|
lbajardsilogic@90
|
64 loadFile(query, filename, LoadedFile::QUERY_CONFIG);
|
lbajardsilogic@21
|
65
|
lbajardsilogic@21
|
66 return true;
|
lbajardsilogic@21
|
67 }
|
lbajardsilogic@21
|
68
|
lbajardsilogic@21
|
69 bool EasaierSessionManager::openSession(Document *document)
|
lbajardsilogic@21
|
70 {
|
lbajardsilogic@21
|
71 newSession();
|
lbajardsilogic@21
|
72
|
lbajardsilogic@21
|
73 m_fileName = document->getAudioSourceInfoFileName();
|
lbajardsilogic@21
|
74 m_document = document;
|
lbajardsilogic@21
|
75
|
lbajardsilogic@90
|
76 QString params = "&identification=" + m_fileName;
|
lbajardsilogic@90
|
77
|
lbajardsilogic@92
|
78 QString query = "/easaier/servlet/MOQueryServlet?theme=infoFile"+params;
|
lbajardsilogic@90
|
79
|
lbajardsilogic@92
|
80 QString filename = "http://"+ m_httpClient->getHost() + ":" + "9876" +
|
lbajardsilogic@90
|
81 "/easaier/servlet/infoFile";
|
lbajardsilogic@21
|
82
|
lbajardsilogic@92
|
83 m_httpClient->setHost(m_httpClient->getHost(), 9876);
|
lbajardsilogic@92
|
84
|
lbajardsilogic@90
|
85 loadFile(query, filename, LoadedFile::AUDIO_SOURCE_INFO);
|
lbajardsilogic@90
|
86
|
lbajardsilogic@21
|
87 return true;
|
lbajardsilogic@21
|
88 }
|
lbajardsilogic@21
|
89
|
lbajardsilogic@21
|
90 bool EasaierSessionManager::openAudioInfoFile(Document *document)
|
lbajardsilogic@21
|
91 {
|
lbajardsilogic@21
|
92 closeFile();
|
lbajardsilogic@21
|
93
|
lbajardsilogic@21
|
94 m_fileName = document->getAudioSourceInfoFileName();
|
lbajardsilogic@21
|
95 m_document = document;
|
lbajardsilogic@21
|
96
|
lbajardsilogic@90
|
97 QString params = "&identification=" + m_fileName;
|
lbajardsilogic@90
|
98
|
lbajardsilogic@92
|
99 QString query = "/easaier/servlet/MOQueryServlet?theme=infoFile"+params;
|
lbajardsilogic@90
|
100
|
lbajardsilogic@92
|
101 QString filename = "http://"+ m_httpClient->getHost() + ":" + "9876" +
|
lbajardsilogic@90
|
102 "/easaier/servlet/infoFile";
|
lbajardsilogic@90
|
103
|
lbajardsilogic@92
|
104 m_httpClient->setHost(m_httpClient->getHost(), 9876);
|
lbajardsilogic@92
|
105
|
lbajardsilogic@90
|
106 loadFile(query, filename, LoadedFile::AUDIO_SOURCE_INFO);
|
lbajardsilogic@21
|
107
|
lbajardsilogic@21
|
108 return true;
|
lbajardsilogic@21
|
109 }
|
lbajardsilogic@21
|
110
|
lbajardsilogic@21
|
111 void EasaierSessionManager::closeFile()
|
lbajardsilogic@21
|
112 {
|
lbajardsilogic@21
|
113 m_audioSourceInfoModel = 0;
|
lbajardsilogic@21
|
114
|
lbajardsilogic@21
|
115 while (!m_loadFile.empty())
|
lbajardsilogic@21
|
116 {
|
lbajardsilogic@64
|
117 m_loadFile.begin()->second->close();
|
lbajardsilogic@21
|
118 delete m_loadFile.begin()->second;
|
lbajardsilogic@21
|
119 m_loadFile.erase(m_loadFile.begin());
|
lbajardsilogic@21
|
120 }
|
lbajardsilogic@21
|
121
|
lbajardsilogic@21
|
122 m_modelLoaded.clear();
|
lbajardsilogic@21
|
123 }
|
lbajardsilogic@21
|
124
|
lbajardsilogic@21
|
125 void EasaierSessionManager::closeSession()
|
lbajardsilogic@21
|
126 {
|
lbajardsilogic@21
|
127 closeFile();
|
lbajardsilogic@21
|
128
|
lbajardsilogic@21
|
129 m_fileName = "";
|
lbajardsilogic@21
|
130 m_document = 0;
|
lbajardsilogic@21
|
131
|
lbajardsilogic@21
|
132 if (m_queryModel)
|
lbajardsilogic@21
|
133 {
|
lbajardsilogic@21
|
134 delete m_queryModel;
|
lbajardsilogic@21
|
135 m_queryModel = 0;
|
lbajardsilogic@21
|
136 }
|
lbajardsilogic@21
|
137 }
|
lbajardsilogic@21
|
138
|
lbajardsilogic@90
|
139 void EasaierSessionManager::loadFile(const QString& query, const QString& filename, LoadedFile::FileType type)
|
lbajardsilogic@21
|
140 {
|
lbajardsilogic@90
|
141 if ((query == 0) || (filename == 0))
|
lbajardsilogic@21
|
142 return;
|
lbajardsilogic@21
|
143
|
lbajardsilogic@21
|
144 if (m_httpClient->getHost() == "")
|
lbajardsilogic@21
|
145 return;
|
lbajardsilogic@21
|
146
|
lbajardsilogic@90
|
147 QUrl url(filename);
|
lbajardsilogic@21
|
148 QString path = url.path();
|
lbajardsilogic@21
|
149 QString directory = path.left(path.lastIndexOf("/"));
|
lbajardsilogic@90
|
150 QString file = path.right(path.length() - path.lastIndexOf("/"));
|
lbajardsilogic@21
|
151
|
lbajardsilogic@21
|
152 if (directory.left(1) == "/")
|
lbajardsilogic@21
|
153 {
|
lbajardsilogic@21
|
154 directory.remove(0, 1);
|
lbajardsilogic@21
|
155 }
|
lbajardsilogic@21
|
156
|
lbajardsilogic@21
|
157 //create the subdirectory in local
|
lbajardsilogic@21
|
158 QString localPath = TempDirectory::getInstance()->getSubDirectoryPath(directory);
|
lbajardsilogic@90
|
159 localPath.append(file);
|
lbajardsilogic@21
|
160
|
lbajardsilogic@21
|
161 LoadedFile* newFile = new LoadedFile(localPath);
|
lbajardsilogic@90
|
162 newFile->setFileType(type);
|
lbajardsilogic@90
|
163 newFile->setUri(query);
|
benoitrigolleau@88
|
164
|
lbajardsilogic@90
|
165 int index = m_httpClient->get(query, newFile);
|
lbajardsilogic@21
|
166
|
lbajardsilogic@64
|
167 std::cerr << "Ask for file : GET " << path.toStdString() << " - index : " << index << std::endl;
|
lbajardsilogic@64
|
168
|
lbajardsilogic@21
|
169 m_loadFile[index] = newFile;
|
lbajardsilogic@21
|
170
|
lbajardsilogic@29
|
171 if (type == LoadedFile::QUERY_RESULTS)
|
lbajardsilogic@21
|
172 MainWindow::instance()->statusBar()->showMessage(tr("Querying database..."));
|
lbajardsilogic@21
|
173 else if (type == LoadedFile::QUERY_CONFIG)
|
lbajardsilogic@21
|
174 MainWindow::instance()->statusBar()->showMessage(tr("Asking for query config..."));
|
lbajardsilogic@21
|
175 else
|
lbajardsilogic@29
|
176 MainWindow::instance()->statusBar()->showMessage(tr("Loading File : %1").arg(filename));
|
lbajardsilogic@21
|
177 }
|
lbajardsilogic@21
|
178
|
lbajardsilogic@21
|
179 void EasaierSessionManager::fileLoaded(int index, bool error)
|
lbajardsilogic@21
|
180 {
|
lbajardsilogic@21
|
181 QString errorString = m_httpClient->errorString();
|
lbajardsilogic@21
|
182 std::map<int , LoadedFile*>::iterator iter = m_loadFile.find(index);
|
lbajardsilogic@21
|
183 if (iter == m_loadFile.end())
|
lbajardsilogic@21
|
184 {
|
lbajardsilogic@64
|
185 std::cerr << "fileLoaded() : file " << index << " not found. " << std::endl;
|
lbajardsilogic@21
|
186 return;
|
lbajardsilogic@21
|
187 }
|
lbajardsilogic@21
|
188 if (error)
|
lbajardsilogic@21
|
189 {
|
benoitrigolleau@88
|
190 QApplication::restoreOverrideCursor();
|
lbajardsilogic@21
|
191 QMessageBox::critical(MainWindow::instance(), tr("Download Failed"), m_httpClient->errorString());
|
lbajardsilogic@21
|
192 return;
|
lbajardsilogic@21
|
193 }
|
lbajardsilogic@21
|
194 bool read = false;
|
lbajardsilogic@21
|
195
|
lbajardsilogic@21
|
196 //retreive loaded file
|
lbajardsilogic@21
|
197 LoadedFile* loadedFile = iter->second;
|
lbajardsilogic@21
|
198 loadedFile->close();
|
lbajardsilogic@21
|
199
|
lbajardsilogic@21
|
200 //save type and filename for reading
|
lbajardsilogic@21
|
201 LoadedFile::FileType type = loadedFile->getFileType();
|
lbajardsilogic@21
|
202 QString filename = loadedFile->fileName();
|
lbajardsilogic@21
|
203 QString uri = loadedFile->getUri();
|
lbajardsilogic@21
|
204
|
lbajardsilogic@21
|
205 //delete de file and erase from the loaded file queue
|
lbajardsilogic@21
|
206 delete loadedFile;
|
lbajardsilogic@21
|
207 m_loadFile.erase(iter);
|
lbajardsilogic@21
|
208
|
lbajardsilogic@64
|
209 std::cerr << "fileLoaded() : file loaded, start to read file " << index << std::endl;
|
lbajardsilogic@64
|
210
|
lbajardsilogic@29
|
211 if ((type == LoadedFile::QUERY_RESULTS) || (type == LoadedFile::QUERY_CONFIG))
|
lbajardsilogic@21
|
212 {
|
lbajardsilogic@21
|
213 MainWindow::instance()->statusBar()->clearMessage();
|
lbajardsilogic@21
|
214 }
|
lbajardsilogic@21
|
215 else
|
lbajardsilogic@21
|
216 {
|
lbajardsilogic@21
|
217 QString name = filename.right(filename.length() - filename.lastIndexOf("/"));
|
lbajardsilogic@21
|
218 MainWindow::instance()->statusBar()->showMessage(tr("File Loaded : %1").arg(name), 3000);
|
lbajardsilogic@29
|
219 }
|
lbajardsilogic@21
|
220
|
lbajardsilogic@21
|
221 //read and load (in m_document) the file according to its type
|
lbajardsilogic@21
|
222 switch (type) {
|
lbajardsilogic@21
|
223
|
lbajardsilogic@21
|
224 case LoadedFile::AUDIO_SOURCE_INFO :
|
lbajardsilogic@21
|
225 {
|
lbajardsilogic@21
|
226 m_audioSourceInfoModel = new AudioSourceInfoModel();
|
lbajardsilogic@21
|
227 AudioSourceInfoReader audioSourceInfoReader(m_audioSourceInfoModel);
|
lbajardsilogic@21
|
228 read = audioSourceInfoReader.parse(filename);
|
lbajardsilogic@21
|
229 if (read)
|
lbajardsilogic@21
|
230 {
|
lbajardsilogic@21
|
231 m_document->setAudioSourceInfoModel(m_audioSourceInfoModel);
|
lbajardsilogic@21
|
232 loadRelatedModel();
|
lbajardsilogic@21
|
233 }
|
lbajardsilogic@21
|
234 break;
|
lbajardsilogic@21
|
235 }
|
lbajardsilogic@21
|
236 case LoadedFile::MODEL :
|
lbajardsilogic@21
|
237 {
|
lbajardsilogic@21
|
238 QString modelName = m_audioSourceInfoModel->getKey(uri);
|
lbajardsilogic@21
|
239
|
lbajardsilogic@21
|
240 read = addModelToLayers(modelName, filename);
|
lbajardsilogic@21
|
241
|
lbajardsilogic@21
|
242 break;
|
lbajardsilogic@21
|
243 }
|
lbajardsilogic@21
|
244 case LoadedFile::METADATA :
|
lbajardsilogic@21
|
245 {
|
lbajardsilogic@21
|
246 ModelReader modelReader(m_document,0, m_currentPane);
|
lbajardsilogic@21
|
247 read = modelReader.parse(filename);
|
lbajardsilogic@21
|
248
|
lbajardsilogic@21
|
249 break;
|
lbajardsilogic@21
|
250 }
|
lbajardsilogic@21
|
251 case LoadedFile::QUERY_CONFIG :
|
lbajardsilogic@21
|
252 {
|
lbajardsilogic@21
|
253 QueryConfigReader reader(m_queryModel);
|
lbajardsilogic@21
|
254 bool ok = reader.parse(filename);
|
lbajardsilogic@21
|
255
|
lbajardsilogic@21
|
256 if (ok)
|
lbajardsilogic@21
|
257 emit queryModelLoaded(m_queryModel);
|
lbajardsilogic@21
|
258
|
lbajardsilogic@21
|
259 read = ok;
|
lbajardsilogic@21
|
260 break;
|
lbajardsilogic@21
|
261 }
|
lbajardsilogic@21
|
262 case LoadedFile::QUERY_RESULTS :
|
lbajardsilogic@21
|
263 {
|
lbajardsilogic@21
|
264 QueryResultsWidget* resultsWidget = MainWindow::instance()->getQueryResultsWidget();
|
lbajardsilogic@21
|
265 resultsWidget->reset();
|
lbajardsilogic@21
|
266
|
lbajardsilogic@21
|
267 if (resultsWidget)
|
lbajardsilogic@21
|
268 {
|
lbajardsilogic@21
|
269 SparqlResultsReader reader(resultsWidget);
|
lbajardsilogic@21
|
270 read = reader.parse(filename);
|
lbajardsilogic@21
|
271 }
|
lbajardsilogic@21
|
272 break;
|
lbajardsilogic@21
|
273 }
|
lbajardsilogic@21
|
274 default: break;
|
lbajardsilogic@21
|
275 }
|
lbajardsilogic@21
|
276
|
lbajardsilogic@21
|
277 //if the file could not be read by any reader
|
lbajardsilogic@21
|
278 if (!read)
|
lbajardsilogic@21
|
279 {
|
lbajardsilogic@21
|
280 QFile file(filename);
|
lbajardsilogic@21
|
281 if (file.open(QFile::ReadOnly)) {
|
benoitrigolleau@88
|
282 QApplication::restoreOverrideCursor();
|
lbajardsilogic@21
|
283 QMessageBox::critical(MainWindow::instance(), tr("Download Error"), file.readAll());
|
lbajardsilogic@21
|
284 }
|
lbajardsilogic@21
|
285 }
|
lbajardsilogic@64
|
286 else {
|
lbajardsilogic@64
|
287 std::cerr << "fileLoaded() : " << index << " all successful. " << std::endl;
|
lbajardsilogic@64
|
288 }
|
benoitrigolleau@88
|
289 QApplication::restoreOverrideCursor();
|
lbajardsilogic@21
|
290 }
|
lbajardsilogic@21
|
291
|
lbajardsilogic@21
|
292 void EasaierSessionManager::loadRelatedModel()
|
lbajardsilogic@21
|
293 {
|
lbajardsilogic@21
|
294 std::set<Layer *> layers = m_document->getLayers();
|
lbajardsilogic@21
|
295 std::set<Layer *>::iterator iter;
|
lbajardsilogic@21
|
296
|
lbajardsilogic@21
|
297 std::set<QString> loadedModel;
|
lbajardsilogic@21
|
298
|
lbajardsilogic@21
|
299 for (iter=layers.begin(); iter != layers.end(); iter++)
|
lbajardsilogic@21
|
300 {
|
lbajardsilogic@21
|
301 Layer * layer = *iter;
|
lbajardsilogic@21
|
302
|
lbajardsilogic@21
|
303 QString modelName = layer->getModelName();
|
lbajardsilogic@21
|
304 if (modelName != "")
|
lbajardsilogic@21
|
305 {
|
lbajardsilogic@21
|
306 QString modelId = QString::number(layer->getModelId());
|
lbajardsilogic@90
|
307 //modelName.append(modelId);
|
lbajardsilogic@21
|
308
|
lbajardsilogic@21
|
309 } else if (layer->getLayerPresentationName() == "Waveform")
|
lbajardsilogic@21
|
310 {
|
lbajardsilogic@90
|
311 modelName = "http://purl.org/dc/elements/1.1/source";
|
lbajardsilogic@21
|
312 int modelId = 1;
|
lbajardsilogic@21
|
313 layer->setModelName(modelName);
|
lbajardsilogic@21
|
314 layer->setModelId(modelId);
|
lbajardsilogic@90
|
315 //modelName.append(QString::number(modelId));
|
lbajardsilogic@21
|
316 }
|
lbajardsilogic@21
|
317
|
lbajardsilogic@21
|
318 if (modelName != "")
|
lbajardsilogic@21
|
319 {
|
lbajardsilogic@21
|
320 QString uri = m_audioSourceInfoModel->getInfo(modelName);
|
lbajardsilogic@90
|
321
|
lbajardsilogic@92
|
322 QString filename = "http://" + m_httpClient->getHost() + uri;
|
lbajardsilogic@90
|
323
|
lbajardsilogic@21
|
324 std::set<QString>::iterator iterModel = m_modelLoaded.find(uri);
|
lbajardsilogic@21
|
325
|
lbajardsilogic@92
|
326 m_httpClient->setHost(m_httpClient->getHost());
|
lbajardsilogic@92
|
327
|
lbajardsilogic@21
|
328 if (iterModel == m_modelLoaded.end())
|
lbajardsilogic@21
|
329 {
|
lbajardsilogic@21
|
330 m_modelLoaded.insert(uri);
|
lbajardsilogic@92
|
331 loadFile(uri, filename, LoadedFile::MODEL);
|
lbajardsilogic@21
|
332 }
|
lbajardsilogic@21
|
333 }
|
lbajardsilogic@21
|
334 }
|
lbajardsilogic@21
|
335 }
|
lbajardsilogic@21
|
336
|
lbajardsilogic@21
|
337 bool EasaierSessionManager::addModelToLayers(const QString& name, const QString& filename)
|
lbajardsilogic@21
|
338 {
|
lbajardsilogic@21
|
339 std::set<Layer *> layers = m_document->getLayers();
|
lbajardsilogic@21
|
340 std::set<Layer *>::iterator iter;
|
lbajardsilogic@21
|
341
|
lbajardsilogic@21
|
342 std::map<QString, Model *> addedModel;
|
lbajardsilogic@21
|
343
|
lbajardsilogic@21
|
344 bool ok = false;
|
lbajardsilogic@21
|
345
|
lbajardsilogic@21
|
346 for (iter=layers.begin(); iter != layers.end(); iter++)
|
lbajardsilogic@21
|
347 {
|
lbajardsilogic@21
|
348 Layer * layer = *iter;
|
lbajardsilogic@21
|
349
|
lbajardsilogic@21
|
350 QString modelName = layer->getModelName();
|
lbajardsilogic@21
|
351 QString modelId = QString::number(layer->getModelId());
|
lbajardsilogic@21
|
352
|
lbajardsilogic@90
|
353 //modelName.append(modelId);
|
lbajardsilogic@21
|
354 modelName = modelName.toLower();
|
lbajardsilogic@21
|
355
|
lbajardsilogic@21
|
356 if (modelName == name)
|
lbajardsilogic@21
|
357 {
|
lbajardsilogic@21
|
358 std::map<QString, Model *>::iterator iterModel;
|
lbajardsilogic@21
|
359 iterModel = addedModel.find(modelName);
|
lbajardsilogic@21
|
360
|
lbajardsilogic@21
|
361 if (iterModel == addedModel.end())
|
lbajardsilogic@21
|
362 {
|
lbajardsilogic@85
|
363 QString extension = filename.right(filename.length()-filename.lastIndexOf(".")-1);
|
lbajardsilogic@85
|
364 if (AudioFileReaderFactory::isKnownExtensions(extension))
|
lbajardsilogic@21
|
365 {
|
lbajardsilogic@21
|
366 WaveFileModel *model = new WaveFileModel(filename);
|
lbajardsilogic@21
|
367 m_document->setMainModel(model);
|
lbajardsilogic@21
|
368 addedModel[modelName] = (Model* ) model;
|
lbajardsilogic@21
|
369 ok = true;
|
lbajardsilogic@21
|
370 } else
|
lbajardsilogic@21
|
371 {
|
lbajardsilogic@21
|
372 ModelReader modelReader(m_document, layer);
|
lbajardsilogic@21
|
373 ok = modelReader.parse(filename);
|
lbajardsilogic@21
|
374 }
|
lbajardsilogic@21
|
375 }
|
lbajardsilogic@21
|
376 else
|
lbajardsilogic@21
|
377 {
|
lbajardsilogic@21
|
378 Model* model = iterModel->second;
|
lbajardsilogic@21
|
379 m_document->addImportedModel(model);
|
lbajardsilogic@21
|
380 m_document->setModel(layer, model);
|
lbajardsilogic@21
|
381 }
|
lbajardsilogic@21
|
382 }
|
lbajardsilogic@21
|
383 }
|
lbajardsilogic@21
|
384
|
lbajardsilogic@21
|
385 return ok;
|
lbajardsilogic@21
|
386 }
|
lbajardsilogic@21
|
387
|
lbajardsilogic@21
|
388 void EasaierSessionManager::importMetadata(const QString& filename, Pane* pane)
|
lbajardsilogic@21
|
389 {
|
lbajardsilogic@90
|
390 QString file = "http://" + m_httpClient->getHost() + filename;
|
lbajardsilogic@90
|
391
|
lbajardsilogic@92
|
392 m_httpClient->setHost(m_httpClient->getHost());
|
lbajardsilogic@92
|
393
|
lbajardsilogic@92
|
394 loadFile(filename, file, LoadedFile::METADATA);
|
lbajardsilogic@90
|
395
|
lbajardsilogic@21
|
396 m_currentPane = pane;
|
lbajardsilogic@21
|
397 }
|
lbajardsilogic@21
|
398
|
lbajardsilogic@21
|
399 void EasaierSessionManager::queryDatabase(const QString& themeName)
|
lbajardsilogic@21
|
400 {
|
lbajardsilogic@21
|
401
|
benoitrigolleau@81
|
402 QueryThemeModel *themeModel = (m_queryModel->getThemes()).find(themeName)->second;
|
benoitrigolleau@81
|
403 QString params = "";
|
benoitrigolleau@81
|
404 if(themeModel!=0){
|
benoitrigolleau@81
|
405 PropertyContainer::PropertyList propertyList = themeModel->getProperties();
|
benoitrigolleau@81
|
406 for(int i=0; i<propertyList.size();i++){
|
benoitrigolleau@81
|
407 params+= "&"+propertyList[i] + "="+themeModel->getPropertyValue(propertyList[i]);
|
benoitrigolleau@81
|
408 }
|
benoitrigolleau@81
|
409 }
|
lbajardsilogic@86
|
410
|
lbajardsilogic@92
|
411 QString query = "/easaier/servlet/MOQueryServlet?theme="+themeName+""+params;
|
lbajardsilogic@92
|
412 QString filename = "http://"+ m_httpClient->getHost() + ":" + "9876" + "/easaier/servlet/"+themeName;
|
lbajardsilogic@92
|
413
|
lbajardsilogic@92
|
414 m_httpClient->setHost(m_httpClient->getHost(), 9876);
|
benoitrigolleau@88
|
415
|
benoitrigolleau@88
|
416 QApplication::setOverrideCursor( Qt::WaitCursor );
|
lbajardsilogic@90
|
417 loadFile(query, filename, LoadedFile::QUERY_RESULTS);
|
lbajardsilogic@90
|
418
|
lbajardsilogic@21
|
419 }
|