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