28 #include <QListWidgetItem>
29 #include <QProgressDialog>
31 #include <mongo/client/dbclient.h>
66 commonStoragePrx = getProxy<memoryx::CommonStorageInterfacePrx>(
"CommonStorage");
68 widget.cbDBNames->clear();
70 auto stdNames = commonStoragePrx->getDBNames();
71 for (
auto& name : stdNames)
73 widget.cbDBNames->addItem(QString::fromStdString(name));
75 widget.cbDBNames->setCurrentIndex(0);
89 GridFSFileEditorWidgetController::connectSlots()
91 connect(widget.listFileNames,
92 SIGNAL(currentTextChanged(QString)),
95 Qt::UniqueConnection);
96 connect(widget.btnSaveFile,
100 Qt::UniqueConnection);
101 connect(widget.btnDelUnreferencedFiles,
105 Qt::UniqueConnection);
107 connect(widget.cbDBNames,
108 SIGNAL(currentIndexChanged(QString)),
110 Qt::UniqueConnection);
111 connect(widget.btnLoadDB, SIGNAL(clicked()), SLOT(
loadFileNames()), Qt::UniqueConnection);
117 auto dbName = widget.cbDBNames->currentText().toStdString();
118 NameList ids = commonStoragePrx->getFileIdList(dbName);
119 auto colls = commonStoragePrx->getCollectionNames(dbName);
120 std::map<std::string, memoryx::CollectionInterfacePrx> collPrxs;
122 for (
auto coll : colls)
124 collPrxs[coll] = commonStoragePrx->requestCollection(coll);
126 QProgressDialog progress(
127 "Deleting unreferenced files",
"Cancel", 0, ids.size(),
getWidget());
128 progress.setWindowModality(Qt::WindowModal);
130 for (
auto fileId : ids)
133 auto query = whereQuery(fileId);
135 for (
auto coll : colls)
137 auto prx = collPrxs[coll];
138 auto list = prx->findByConstraintQuery(
"", query);
142 found +=
list.size();
144 qApp->processEvents();
145 progress.setValue(i);
146 if (progress.wasCanceled())
151 if (progress.wasCanceled())
156 auto filePrx = commonStoragePrx->getFileProxyById(dbName, fileId);
161 commonStoragePrx->removeFileById(dbName, fileId);
166 <<
" references - not deleting";
171 for (
auto& coll : collPrxs)
173 commonStoragePrx->releaseCollection(coll.second);
183 dbName.isEmpty() ? widget.cbDBNames->currentText().toStdString() : dbName.toStdString();
184 NameList filesNames = commonStoragePrx->getFileNameList(stdDBName);
185 NameList ids = commonStoragePrx->getFileIdList(stdDBName);
186 widget.listFileNames->clear();
188 for (
size_t i = 0; i < filesNames.size(); i++)
193 QListWidgetItem* item =
new QListWidgetItem();
194 item->setText(QString::fromStdString(
filename));
195 item->setData(Qt::UserRole, QString::fromStdString(
id));
196 widget.listFileNames->addItem(item);
199 widget.listFileNames->sortItems();
200 widget.textEdit->clear();
208 if (commonStoragePrx->getTextFileByName(
209 widget.cbDBNames->currentText().toStdString(), fileName.toStdString(), content))
211 widget.textEdit->clear();
212 widget.textEdit->insertPlainText(QString::fromStdString(content));
213 currentId = widget.listFileNames->currentItem()->data(Qt::UserRole).toString();
220 auto dbName = widget.cbDBNames->currentText().toStdString();
221 auto newId = commonStoragePrx->storeTextFile(
223 widget.textEdit->toPlainText().toStdString(),
224 widget.listFileNames->currentItem()->text().toStdString());
225 ARMARX_INFO <<
"stored " << widget.listFileNames->currentItem()->text().toStdString()
226 <<
" in grid fs: " <<
newId;
227 replaceFileDocID(currentId, QString::fromStdString(
newId));
228 commonStoragePrx->removeFileById(dbName, currentId.toStdString());
232 GridFSFileEditorWidgetController::replaceFileDocID(QString fileId,
const QString&
newId)
235 auto query = whereQuery(fileId.toStdString());
236 auto dbName = widget.cbDBNames->currentText().toStdString();
237 auto colls = commonStoragePrx->getCollectionNames(dbName);
239 for (
auto coll : colls)
241 auto prx = commonStoragePrx->requestCollection(coll);
243 auto list = prx->findByConstraintQuery(
"", query);
245 for (memoryx::DBStorableData
data :
list)
247 QString json = QString::fromStdString(
data.JSON);
248 json = json.replace(fileId,
newId);
249 data.JSON = json.toStdString();
253 commonStoragePrx->releaseCollection(prx);
258 GridFSFileEditorWidgetController::whereQuery(std::string fileId)
const
260 std::string query =
"function(){\
263 while(objs.length > 0) \
265 var obj = objs.pop(); \
266 var keys = Object.keySet(obj); \
267 for(var i = 0; i < keys.length;i++) \
269 if(keys[i] == \"docId\" && obj[keys[i]] === \"" +
272 if(isObject(obj[keys[i]])) \
274 objs.push(obj[keys[i]]); \