//! Gets a reference to an object. ObjectFront* VaultFront::object( const QJsonValue& objectInfoValue //!< Json object that identifies the object. This can be ObjVer or ObjectVersion. ) { // First identiy which type of id we have and // then get new front for the object. QJsonObject objectInfo = objectInfoValue.toObject(); ObjectFront* front = 0; if( objectInfo.find( QString( "Title" ) ) != objectInfo.end() ) { // This is an ObjectVersion Json object. QJsonValue objverJson = objectInfo[ "ObjVer" ]; MFiles::ObjVer objver( objverJson.toObject() ); front = this->newFront( objver.objId() ); } else if( objectInfo.find( QString( "Type" ) ) != objectInfo.end() && objectInfo.find( QString( "Version" ) ) == objectInfo.end() ) { // This is ObjID Json object. MFiles::ObjID objid( objectInfo ); front = this->newFront( objid ); } else if( objectInfo.find( QString( "Type" ) ) != objectInfo.end() && objectInfo.find( QString( "Version" ) ) != objectInfo.end() ) { // This is ObjVer Json object. MFiles::ObjVer objver( objectInfo ); front = this->newFront( objver.objId() ); } else { // TODO: Error handling. front = 0; } // Set the ownership to JavaScript. if( front ) QQmlEngine::setObjectOwnership( front, QQmlEngine::JavaScriptOwnership ); // Return the front. return front; }
HostedObjectPtr ObjectHost::getCommandObject(const Command::Command& cmd, Command::Commander* cmdr, Command::CommandID cmdid) { String obj_string = cmd.getString("object", ""); UUID objid(obj_string, UUID::HumanReadable()); if (objid == UUID::null()) { // not specified, not parsed Command::Result result = Command::EmptyResult(); result.put("error", "Ill-formatted request: no object specified for disconnect."); cmdr->result(cmdid, result); return HostedObjectPtr(); } HostedObjectPtr ho = getHostedObject(objid); if (!ho) { Command::Result result = Command::EmptyResult(); result.put("error", "Object not found"); cmdr->result(cmdid, result); return HostedObjectPtr(); } return ho; }
Event LBoundary::getEvent(const Particle& part) const { #ifdef ISSS_DEBUG if (!Sim->dynamics->isUpToDate(part)) M_throw() << "Particle is not up to date"; #endif Event event(part, std::numeric_limits<float>::infinity(), LOCAL, NONE, ID); const double diameter = _diameter->getProperty(part); for (size_t objid(0); objid < _objects.size(); ++objid) { Event newevent = _objects[objid]->getEvent(part, diameter); if (newevent < event) { newevent._sourceID = ID; newevent._additionalData2 = objid; event = newevent; } } return event; }
QMimeData* DbStructureModel::mimeData(const QModelIndexList& indices) const { // We store the SQL data and the names data separately QByteArray sqlData, namesData; // Loop through selected indices for(const QModelIndex& index : indices) { // Get the item the index points at QTreeWidgetItem* item = static_cast<QTreeWidgetItem*>(index.internalPointer()); // Only export data for valid indices and only once per row (SQL column or Name column). if(index.isValid()) { QString objectType = data(index.sibling(index.row(), ColumnObjectType), Qt::DisplayRole).toString(); // For names, export a (qualified) (escaped) identifier of the item for statement composition in SQL editor. if(objectType == "field") namesData.append(getNameForDropping(item->text(ColumnSchema), item->parent()->text(ColumnName), item->text(ColumnName))); else if(objectType == "database") namesData.append(getNameForDropping(item->text(ColumnName), "", "")); else if(!objectType.isEmpty()) namesData.append(getNameForDropping(item->text(ColumnSchema), item->text(ColumnName), "")); if(objectType != "field" && index.column() == ColumnSQL) { // Add the SQL code used to create the object sqlData.append(data(index, Qt::DisplayRole).toString() + ";\n"); // If it is a table also add the content if(objectType == "table") { SqliteTableModel tableModel(m_db); sqlb::ObjectIdentifier objid(data(index.sibling(index.row(), ColumnSchema), Qt::DisplayRole).toString(), data(index.sibling(index.row(), ColumnName), Qt::DisplayRole).toString()); tableModel.setQuery(sqlb::Query(objid)); if(tableModel.completeCache()) { // Only continue if all data was fetched for(int i=0; i < tableModel.rowCount(); ++i) { QString insertStatement = "INSERT INTO " + objid.toString() + " VALUES("; for(int j=1; j < tableModel.columnCount(); ++j) insertStatement += QString("'%1',").arg(tableModel.data(tableModel.index(i, j), Qt::EditRole).toString()); insertStatement.chop(1); insertStatement += ");\n"; sqlData.append(insertStatement); } } } } } } // Create the MIME data object QMimeData* mime = new QMimeData(); mime->setProperty("db_file", m_db.currentFile()); // Also save the file name to avoid dropping an object on the same database as it comes from // When we have both SQL and Names data (probable row selection mode) we give precedence to the SQL data if (sqlData.length() == 0 && namesData.length() > 0) { // Remove last ", " or "." if (namesData.endsWith(", ")) namesData.chop(2); else if (namesData.endsWith(".")) namesData.chop(1); mime->setData("text/plain", namesData); } else mime->setData("text/plain", sqlData); return mime; }