//---------------------------------------------------------------------------- ctkDicomSoapStudy::ctkDicomSoapStudy(const QString& name, const ctkDicomAppHosting::Study& s) : QtSoapStruct(QtSoapQName(name)) { //this->insert(new QtSoapSimpleType(QtSoapQName("StudyUID"),s.studyUID) ); this->insert(new ctkDicomSoapUID("StudyUID", s.studyUID)); QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other, s.objectDescriptors.size()); for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = s.objectDescriptors.constBegin(); it < s.objectDescriptors.constEnd(); it++) { odescriptors->append(new ctkDicomSoapObjectDescriptor("ObjectDescriptor", *it)); } this->insert(odescriptors); QtSoapArray* series = new QtSoapArray(QtSoapQName("Series"), QtSoapType::Other, s.series.size()); for (QList<ctkDicomAppHosting::Series>::ConstIterator it = s.series.constBegin(); it < s.series.constEnd(); it++) { series->append(new ctkDicomSoapSeries("Series",*it)); } this->insert(series); }
//---------------------------------------------------------------------------- ctkDicomSoapUUID::ctkDicomSoapUUID(const QString& name, const QUuid& uuid) : QtSoapStruct(QtSoapQName(name)) { QString uuidstring(uuid.toString()); uuidstring.remove(0,1).chop(1); this->insert(new QtSoapSimpleType(QtSoapQName("Uuid"),uuidstring)); }
//---------------------------------------------------------------------------- ctkDicomSoapRectangle::ctkDicomSoapRectangle(const QString& name,const QRect& rect) : QtSoapStruct(QtSoapQName(name)) { this->insert(new QtSoapSimpleType(QtSoapQName("Height"), rect.height())); this->insert(new QtSoapSimpleType(QtSoapQName("Width"), rect.width())); this->insert(new QtSoapSimpleType(QtSoapQName("RefPointX"), rect.x())); this->insert(new QtSoapSimpleType(QtSoapQName("RefPointY"), rect.y())); }
//---------------------------------------------------------------------------- ctkDicomSoapPatient::ctkDicomSoapPatient(const QString& name, const ctkDicomAppHosting::Patient& p) : QtSoapStruct(QtSoapQName(name)) { this->insert(new QtSoapSimpleType(QtSoapQName("Name"), p.name) ); this->insert(new QtSoapSimpleType(QtSoapQName("ID"), p.id) ); this->insert(new QtSoapSimpleType(QtSoapQName("AssigningAuthority"), p.assigningAuthority) ); this->insert(new QtSoapSimpleType(QtSoapQName("Sex"), p.sex) ); this->insert(new QtSoapSimpleType(QtSoapQName("DateOfBirth"), p.birthDate) ); QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other, p.objectDescriptors.size()); for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = p.objectDescriptors.constBegin(); it < p.objectDescriptors.constEnd(); it++) { odescriptors->append(new ctkDicomSoapObjectDescriptor("ObjectDescriptor",*it)); } this->insert(odescriptors); QtSoapArray* study = new QtSoapArray(QtSoapQName("Studies"), QtSoapType::Other, p.studies.size()); for (QList<ctkDicomAppHosting::Study>::ConstIterator it = p.studies.constBegin(); it < p.studies.constEnd(); it++) { study->append(new ctkDicomSoapStudy("Study",*it)); } this->insert(study); }
//---------------------------------------------------------------------------- ctkDicomSoapArrayOfStringType::ctkDicomSoapArrayOfStringType(const QString& typeName, const QString& name, const QStringList& array) // : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size()) : QtSoapStruct(QtSoapQName(name)) { QtSoapStruct *simpleStruct = new QtSoapStruct(QtSoapQName(typeName)); for (QStringList::ConstIterator it = array.constBegin(); it < array.constEnd(); it++) { simpleStruct->insert(new QtSoapSimpleType(QtSoapQName("Uid"),*it)); // this->append(new QtSoapSimpleType(QtSoapQName(typeName),*it)); } this->insert(simpleStruct); }
void AcsMessageBuilder::buildInformResponse(const QString &id, QtSoapMessage &informResponse) { //Envelope buildEnvelope(informResponse); //Header informResponse.header().insert(new QtSoapSimpleType(QtSoapQName(nsPrefix() + TAG_ID), id)); //Body QtSoapStruct *pInformResponseStruct = new QtSoapStruct(QtSoapQName(nsPrefix() + INFORMRESPONSE)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_MAXENVELOPES), "1")); QtSoapStruct& body = informResponse.body(); body.insert(pInformResponseStruct); }
//---------------------------------------------------------------------------- ctkDicomSoapStatus::ctkDicomSoapStatus(const QString& name, const ctkDicomAppHosting::Status& s) : QtSoapStruct(QtSoapQName(name)) { this->insert(new QtSoapSimpleType(QtSoapQName("StatusType"), s.statusType) ); this->insert(new QtSoapSimpleType( QtSoapQName("CodingSchemeDesignator"), s.codingSchemeDesignator) ); this->insert(new QtSoapSimpleType( QtSoapQName("CodeValue"), s.codeValue) ); this->insert(new QtSoapSimpleType( QtSoapQName("CodeMeaning"), s.codeMeaning) ); }
void AcsMessageBuilder::buildRebootRequest(QtSoapMessage &request) { //Envelope buildEnvelope(request); //Header QString id = "987654321"; request.header().insert(new QtSoapSimpleType(QtSoapQName(nsPrefix() + TAG_ID), id)); //Body QtSoapStruct *pInformResponseStruct = new QtSoapStruct(QtSoapQName(nsPrefix() + TAG_REBOOT)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_COMMAND_KEY), "Reboot Method (ACS)")); QtSoapStruct& body = request.body(); body.insert(pInformResponseStruct); }
//---------------------------------------------------------------------------- ctkDicomSoapObjectDescriptor::ctkDicomSoapObjectDescriptor(const QString& name, const ctkDicomAppHosting::ObjectDescriptor& od) : QtSoapStruct(QtSoapQName(name)) { this->insert(new ctkDicomSoapUUID("DescriptorUuid", od.descriptorUUID) ); /*this->insert(new QtSoapSimpleType( QtSoapQName("MimeType"), od.mimeType) );*/ /*QStringList mimeType; mimeType.append(od.mimeType); this->insert(new ctkDicomSoapArrayOfStringType("MimeType", "MimeType", mimeType) );*/ QtSoapStruct *stMimeType = new QtSoapStruct(QtSoapQName("MimeType")); stMimeType->insert(new QtSoapSimpleType(QtSoapQName("Type"),od.mimeType)); this->insert(stMimeType); /*this->insert(new QtSoapSimpleType( QtSoapQName("ClassUID"), od.classUID) );*/ this->insert(new ctkDicomSoapUID("ClassUID", od.classUID) ); /*this->insert(new QtSoapSimpleType( QtSoapQName("TransferSyntaxUID"), od.transferSyntaxUID) );*/ this->insert(new ctkDicomSoapUID("TransferSyntaxUID", od.transferSyntaxUID) ); /*this->insert(new QtSoapSimpleType( QtSoapQName("Modality"), od.modality) );*/ /*QStringList modality; modality.append(od.modality); this->insert(new ctkDicomSoapArrayOfStringType("Modality", "Modality", modality) );*/ QtSoapStruct *structModality = new QtSoapStruct(QtSoapQName("Modality")); structModality->insert(new QtSoapSimpleType(QtSoapQName("Modality"),od.modality)); this->insert(structModality); }
//---------------------------------------------------------------------------- const QtSoapType & ctkSimpleSoapClient::submitSoapRequest(const QString& methodName, const QList<QtSoapType*>& soapTypes ) { Q_D(ctkSimpleSoapClient); /*QString action="\""; //action.append(methodName); action.append("\""); d->Http.setAction(action);*/ QString action = "http://dicom.nema.org/PS3.19/IHostService/" + methodName; d->Http.setAction(action); CTK_SOAP_LOG( << "Submitting action " << action << " method " << methodName << " to path " << d->Path ); QtSoapMessage request; //request.setMethod(QtSoapQName(methodName,"http://wg23.dicom.nema.org/")); request.setMethod(QtSoapQName(methodName,"http://dicom.nema.org/PS3.19" + d->Path )); if(!soapTypes.isEmpty()) { for (QList<QtSoapType*>::ConstIterator it = soapTypes.begin(); it < soapTypes.constEnd(); it++) { request.addMethodArgument(*it); CTK_SOAP_LOG( << " Argument type added " << (*it)->typeName() << ". " << " Argument name is " << (*it)->name().name() ); } } CTK_SOAP_LOG_LOWLEVEL( << "Submitting request " << methodName); CTK_SOAP_LOG_LOWLEVEL( << request.toXmlString()); d->Http.submitRequest(request, d->Path);; CTK_SOAP_LOG_LOWLEVEL( << "Submitted request " << methodName); QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); d->BlockingLoop.exec(QEventLoop::ExcludeUserInputEvents | QEventLoop::WaitForMoreEvents); QApplication::restoreOverrideCursor(); //qDebug() << "Reply error: " << reply->errorString(); //qDebug() << reply->readAll(); const QtSoapMessage& response = d->Http.getResponse(); CTK_SOAP_LOG( << "Got Response." ); if (response.isFault()) { qCritical() << "ctkSimpleSoapClient: server error (response.IsFault())"; CTK_SOAP_LOG_LOWLEVEL( << response.faultString().toString().toLatin1().constData() << endl ); CTK_SOAP_LOG_LOWLEVEL( << response.toXmlString() ); return response.returnValue(); // throw ctkRuntimeException("ctkSimpleSoapClient: server error (response.IsFault())"); }
void AcsMessageBuilder::buildGetParameterNamesRequest(QtSoapMessage &request) { //Envelope buildEnvelope(request); //Header QString id = "123456"; request.header().insert(new QtSoapSimpleType(QtSoapQName(nsPrefix() + TAG_ID), id)); //Body QString path = "InternetGatewayDevice."; QtSoapStruct *pGetParameterNamesStruct = new QtSoapStruct(QtSoapQName(nsPrefix() + TAG_GETPARAMETERNAMES)); pGetParameterNamesStruct->insert(new QtSoapSimpleType(QtSoapQName("ParameterPath"), path)); pGetParameterNamesStruct->insert(new QtSoapSimpleType(QtSoapQName("NextLevel"), 1)); QtSoapStruct& body = request.body(); body.insert(pGetParameterNamesStruct); }
//---------------------------------------------------------------------------- ctkDicomSoapArrayOfObjectLocators::ctkDicomSoapArrayOfObjectLocators( const QString& name, const QList<ctkDicomAppHosting::ObjectLocator>& array) : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size()) { for (QList<ctkDicomAppHosting::ObjectLocator>::ConstIterator it = array.constBegin(); it < array.constEnd(); it++) { this->append(new ctkDicomSoapObjectLocator("ObjectLocator",(*it))); } }
//---------------------------------------------------------------------------- ctkDicomSoapArrayOfUIDS::ctkDicomSoapArrayOfUIDS(const QString& name, const QList<QString>& array) // : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size()) : QtSoapStruct(QtSoapQName(name)) { for (QList<QString>::ConstIterator it = array.constBegin(); it < array.constEnd(); it++) { this->insert(new ctkDicomSoapUID("Uid",(*it))); } }
//---------------------------------------------------------------------------- ctkDicomSoapArrayOfUUIDS::ctkDicomSoapArrayOfUUIDS(const QString& name, const QList<QUuid>& array) // : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size()) : QtSoapStruct(QtSoapQName(name)) { for (QList<QUuid>::ConstIterator it = array.constBegin(); it < array.constEnd(); it++) { QString uuidstring((*it).toString()); uuidstring.remove(0,1).chop(1); this->insert(new ctkDicomSoapUUID("UUID",uuidstring)); } }
void ctkHostSoapMessageProcessor::processGetOutputLocation( const QtSoapMessage& message, QtSoapMessage* reply) const { // extract arguments from input message const QtSoapType& inputType = message.method()["preferredProtocols"]; const QStringList preferredProtocols = ctkDicomSoapArrayOfStringType::getArray( dynamic_cast<const QtSoapArray&>(inputType)); // query interface const QString result = hostInterface->getOutputLocation(preferredProtocols); // set reply message reply->setMethod("getOutputLocation"); QtSoapType* resultType = new QtSoapSimpleType( QtSoapQName("preferredProtocols"), result ); reply->addMethodArgument(resultType); }
//---------------------------------------------------------------------------- ctkDicomSoapObjectLocator::ctkDicomSoapObjectLocator(const QString& name, const ctkDicomAppHosting::ObjectLocator& ol) : QtSoapStruct(QtSoapQName(name)) { /*this->insert(new QtSoapSimpleType(QtSoapQName("Locator"), ol.locator) );*/ this->insert(new QtSoapSimpleType( QtSoapQName("Length"), ol.length) ); this->insert(new QtSoapSimpleType( QtSoapQName("Offset"), ol.offset) ); this->insert(new ctkDicomSoapUID("TransferSyntax", ol.transferSyntax) ); this->insert(new QtSoapSimpleType( QtSoapQName("URI"), ol.URI) ); this->insert(new ctkDicomSoapUUID("Locator", ol.locator) ); this->insert(new ctkDicomSoapUUID("Source", ol.source) ); /*this->insert(new QtSoapSimpleType( QtSoapQName("Source"), ol.source) );*/ /*this->insert(new QtSoapSimpleType( QtSoapQName("TransferSyntax"), ol.transferSyntax) );*/ }
//---------------------------------------------------------------------------- ctkDicomSoapAvailableData::ctkDicomSoapAvailableData(const QString& name, const ctkDicomAppHosting::AvailableData& ad) : QtSoapStruct(QtSoapQName(name)) { QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other, ad.objectDescriptors.size()); for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = ad.objectDescriptors.constBegin(); it < ad.objectDescriptors.constEnd(); it++) { odescriptors->append(new ctkDicomSoapObjectDescriptor("ObjectDescriptor",*it)); } this->insert(odescriptors); QtSoapArray* patients = new QtSoapArray(QtSoapQName("Patients") ,QtSoapType::Other, ad.patients.size()); for (QList<ctkDicomAppHosting::Patient>::ConstIterator it = ad.patients.constBegin(); it < ad.patients.constEnd(); it++) { patients->append(new ctkDicomSoapPatient("Patient",*it)); } this->insert(patients); }
void AcsMessageBuilder::buildDownloadRequest(QtSoapMessage &request, AcsParamDownload ¶mDownload) { //Envelope buildEnvelope(request); //Header QString id = "987654321"; request.header().insert(new QtSoapSimpleType(QtSoapQName(nsPrefix() + TAG_ID), id)); //Body QtSoapStruct *pInformResponseStruct = new QtSoapStruct(QtSoapQName(nsPrefix() + TAG_DOWNLOAD)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_COMMAND_KEY), TAG_DOWNLOAD_ACS)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_FILE_TYPE), TAG_FIRMWARE_UPGRADE_IMAGE)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_URL), paramDownload.url)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_USERNAME), paramDownload.username)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_PASSWORD), paramDownload.password)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_FILE_SIZE), 0)); pInformResponseStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_TARGET_FILE_NAME), paramDownload.targetFilename)); QtSoapStruct& body = request.body(); body.insert(pInformResponseStruct); }
//---------------------------------------------------------------------------- ctkDicomSoapArrayOfObjectDescriptors::ctkDicomSoapArrayOfObjectDescriptors(const QString& name, const ctkDicomAppHosting::ArrayOfObjectDescriptors& ods) : QtSoapStruct(QtSoapQName(name)) { Q_UNUSED(ods); qCritical() << "ctkDicomSoapArrayOfObjectDescriptors not yet implemented"; //this->insert(new QtSoapSimpleType(QtSoapQName("uuid"), // od.descriptorUUID) ); //this->insert(new QtSoapSimpleType( // QtSoapQName("mimeType"), // od.mimeType) ); //this->insert(new QtSoapSimpleType( // QtSoapQName("classUID"), // od.classUID) ); //this->insert(new QtSoapSimpleType( // QtSoapQName("transferSyntaxUID"), // od.transferSyntaxUID) ); //this->insert(new QtSoapSimpleType( // QtSoapQName("modality"), // od.modality) ); }
void KEcm::getResponse(const QtSoapMessage &message) { //std::cout << "\nresponse " << message.toXmlString().toStdString(); if (message.isFault()) { std::cout << "\n" << message.faultDetail().toString().toStdString(); qDebug("Errorssssss: %s", qPrintable(message.faultString().toString())); }else { /* QString res = message.returnValue().toString(); QDateTime dt = QDateTime::fromString(res, Qt::ISODate); if (dt.isValid()) res = QLocale::c().toString(dt.date()); */ const QtSoapType &docInfo = message.returnValue(); qDebug() << docInfo[QtSoapQName("dDocName","http://www.stellent.com/DocInfo/")].toString().toLatin1().constData(); //qDebug("Easter is: %s", docInfo["DocInfoByNameResponse"].value().toString().toLatin1().constData()); //qDebug("Easter is: %s", docInfo.count()); std::cout << "\n\n\n\n\n\nTeste "; //qDebug() << docInfo["DocInfoByNameResponse"]["DocInfoByNameResult"]["ContentInfo"]["dDocName"].toString().toLatin1().constData(); //qDebug() << "TDDDD" << docInfo[0]["dDocName"].value().toString().toLatin1().constData(); int docInfoCount = docInfo.count(); int docInfoCounty = 0; for(int x= 0; x < docInfoCount; x++){ docInfoCounty = docInfo[x].count(); for(int y= 0; y < docInfoCounty; y++){ qDebug("Nome: %s \t Value: %s", QString(docInfo[x][y].name().name()).toLatin1().constData(), docInfo[x][y].value().toString().toLatin1().constData()); } qDebug("\n\n"); } std::cout << "\n\n\n\n\n\nTeste "; } }
void AcsMessageBuilder::buildSetValueRequest(QtSoapMessage &request, AcsParamList ¶mList) { //Envelope buildEnvelope(request); //Header QString id = "123458"; request.header().insert(new QtSoapSimpleType(QtSoapQName(nsPrefix() + TAG_ID), id)); //Body QtSoapStruct *pSetParameterValuesStruct = new QtSoapStruct(QtSoapQName(nsPrefix() + TAG_SETPARAMETERVALUES)); QtSoapStruct *pParameterListStruct = new QtSoapStruct(QtSoapQName(TAG_PARAMETERLIST)); pSetParameterValuesStruct->insert(pParameterListStruct); foreach(AcsParam param, paramList){ QtSoapStruct *pParameterValueStruct = new QtSoapStruct(QtSoapQName(TAG_PARAMETERVALUESTRUCT)); pParameterValueStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_NAME), param.name)); pParameterValueStruct->insert(new QtSoapSimpleType(QtSoapQName(TAG_VALUE), param.value)); pParameterListStruct->insert(pParameterValueStruct); }
//---------------------------------------------------------------------------- ctkDicomSoapUID::ctkDicomSoapUID(const QString& name, const QString& uid) //: QtSoapSimpleType(QtSoapQName(name), uid) : QtSoapStruct(QtSoapQName(name)) { this->insert(new QtSoapSimpleType(QtSoapQName("Uid"),uid)); }
//---------------------------------------------------------------------------- ctkDicomSoapState::ctkDicomSoapState(const QString& name, ctkDicomAppHosting::State s ) : QtSoapSimpleType(QtSoapQName(name), toStringValue(s)) {}
void HDeviceHostHttpServer::incomingControlRequest( HMessagingInfo* mi, const HInvokeActionRequest& invokeActionRequest) { HLOG2(H_AT, H_FUN, m_loggingIdentifier); HLOG_DBG(QString("Control message to [%1] received.").arg( invokeActionRequest.soapAction())); QUuid udn = extractUdn(invokeActionRequest.serviceUrl()); HServerDevice* device = !udn.isNull() ? m_deviceStorage.searchDeviceByUdn(HUdn(udn), AllDevices) : 0; HServerService* service = 0; if (!device) { // the request did not have the UDN prefix, which means that either // 1) the request was for a ControlURL that was defined as an absolute URL // in the device description or // 2) the request is invalid service = m_deviceStorage.searchServiceByControlUrl( invokeActionRequest.serviceUrl()); if (!service) { HLOG_WARN(QString( "Ignoring invalid action invocation to: [%1].").arg( invokeActionRequest.serviceUrl().toString())); mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( BadRequest, *mi)); return; } } else if (!service) { service = m_deviceStorage.searchServiceByControlUrl( device, extractRequestExludingUdn(invokeActionRequest.serviceUrl())); } if (!service) { HLOG_WARN(QString("Ignoring invalid action invocation to: [%1].").arg( invokeActionRequest.serviceUrl().toString())); mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( BadRequest, *mi)); return; } const QtSoapMessage* soapMsg = invokeActionRequest.soapMsg(); const QtSoapType& method = soapMsg->method(); if (!method.isValid()) { HLOG_WARN("Invalid control method."); mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( BadRequest, *mi)); return; } HServerAction* action = service->actions().value(method.name().name()); if (!action) { HLOG_WARN(QString("The service has no action named [%1].").arg( method.name().name())); mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( *mi, UpnpInvalidArgs, soapMsg->toXmlString())); return; } HActionArguments iargs = action->info().inputArguments(); HActionArguments::iterator it = iargs.begin(); for(; it != iargs.end(); ++it) { HActionArgument iarg = *it; const QtSoapType& arg = method[iarg.name()]; if (!arg.isValid()) { mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( *mi, UpnpInvalidArgs, soapMsg->toXmlString())); return; } if (!iarg.setValue( HUpnpDataTypes::convertToRightVariantType( arg.value().toString(), iarg.dataType()))) { mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( *mi, UpnpInvalidArgs, soapMsg->toXmlString())); return; } } HActionArguments outArgs = action->info().outputArguments(); qint32 retVal = action->invoke(iargs, &outArgs); if (retVal != UpnpSuccess) { mi->setKeepAlive(false); m_httpHandler->send(mi, HHttpMessageCreator::createResponse( *mi, retVal, soapMsg->toXmlString())); return; } QtSoapNamespaces::instance().registerNamespace( "u", service->info().serviceType().toString()); QtSoapMessage soapResponse; soapResponse.setMethod(QtSoapQName( QString("%1%2").arg(action->info().name(), "Response"), service->info().serviceType().toString())); foreach(const HActionArgument& oarg, outArgs) { QtSoapType* soapArg = new SoapType(oarg.name(), oarg.dataType(), oarg.value()); soapResponse.addMethodArgument(soapArg); }
QRect ctkDicomHostInterfaceImpl::getAvailableScreen(const QRect& preferredScreen) { http.setAction("GetAvailableScreen"); QtSoapMessage request; request.setMethod("GetAvailableScreen"); QtSoapStruct* preferredScreenType = new QtSoapStruct(QtSoapQName("preferredScreen")); preferredScreenType->insert(new QtSoapSimpleType(QtSoapQName("Height"), preferredScreen.height())); preferredScreenType->insert(new QtSoapSimpleType(QtSoapQName("Width"), preferredScreen.width())); preferredScreenType->insert(new QtSoapSimpleType(QtSoapQName("RefPointX"), preferredScreen.x())); preferredScreenType->insert(new QtSoapSimpleType(QtSoapQName("RefPointY"), preferredScreen.y())); request.addMethodArgument(preferredScreenType); http.submitRequest(request, "/IHostService"); qDebug() << "Submitted request GetAvailableScreen"; QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); blockingLoop.exec(QEventLoop::ExcludeUserInputEvents | QEventLoop::WaitForMoreEvents); QApplication::restoreOverrideCursor(); //qDebug() << "Reply error: " << reply->errorString(); //qDebug() << reply->readAll(); const QtSoapMessage& response = http.getResponse(); if (response.isFault()) { throw std::runtime_error("server error"); } qDebug() << "Response: " << response.toXmlString(); const QtSoapType &meth = response.method(); if (!meth.isValid() || meth.type() != QtSoapType::Struct) qDebug() << "SOAP returning NIL: invalid or type != Struct"; const QtSoapStruct &m = dynamic_cast<const QtSoapStruct &>(meth); if (m.count() == 0) qDebug() << "SOAP returning NIL: count == 0"; const QtSoapType& screenResult = response.returnValue(); if (!screenResult.isValid()) { //throw std::runtime_error("invalid return value"); qDebug() << response.errorString() << response.faultString().toString(); qDebug() << response.toXmlString(); return QRect(); } qDebug() << screenResult.count() << screenResult["Height"].typeName(); QRect resultRect; resultRect.setHeight(screenResult["Height"].toInt()); resultRect.setWidth(screenResult["Width"].toInt()); resultRect.setX(screenResult["RefPointX"].toInt()); resultRect.setY(screenResult["RefPointY"].toInt()); qDebug() << "x:" << resultRect.x() << " y:" << resultRect.y(); return resultRect; }
//---------------------------------------------------------------------------- ctkDicomSoapBool::ctkDicomSoapBool(const QString& name, bool boolean) : QtSoapSimpleType(QtSoapQName(name), boolean, 0) {}
bool CGantnerTime::isAccess(QMap<QString, QVariant> params, bool, bool ) { QString userId = params["userId"].toString(); QString deviceId = params["deviceId"].toString(); QString date = params["date"].toString(); QString time = params["time"].toString(); QString key = params["key"].toString(); QString code = params["code"].toString(); QString reason = params["reason"].toString() == "" ? "0" : params["reason"].toString(); QString keyId = ""; QString trackingIdToCheck = ""; if(userId == "0") { QSqlQuery querykey = "SELECT ka.id_user FROM hr_user AS u LEFT JOIN hr_keys_attribution AS ka ON ka.id_user=u.id LEFT JOIN hr_keys AS k ON k.id=ka.id_key WHERE k.serialNumber='" + key + "'"; if(querykey.next()) { userId = querykey.value(0).toString(); } else { return false; } } // get the id of the key QSqlQuery querykey("SELECT id FROM hr_keys WHERE serialNumber='" + key + "'"); if(querykey.next()) { keyId = querykey.value(0).toString(); } if(code == "150") { QString BDE1 = params["BDEValue1"].toString(); QString BDE2 = params["BDEValue2"].toString(); QString BDE3 = params["BDEValue3"].toString(); QString BDE4 = params["BDEValue4"].toString(); QString BDE5 = params["BDEValue5"].toString(); QString BDE6 = params["BDEValue6"].toString(); QString BDE7 = params["BDEValue7"].toString(); QString BDE8 = params["BDEValue8"].toString(); QString BDE9 = params["BDEValue9"].toString(); QString BDE10 = params["BDEValue10"].toString(); QString BDE11 = params["BDEValue11"].toString(); QString BDE12 = params["BDEValue12"].toString(); QString BDE13 = params["BDEValue13"].toString(); QString BDE14 = params["BDEValue14"].toString(); QString BDE15 = params["BDEValue15"].toString(); QString BDE16 = params["BDEValue16"].toString(); QString BDE17 = params["BDEValue17"].toString(); QString BDE18 = params["BDEValue18"].toString(); QString BDE19 = params["BDEValue19"].toString(); QString BDE20 = params["BDEValue20"].toString(); QSqlQuery bookquery("INSERT INTO `hr_timux_booking_bde` ( `user_id` , `device_id`, `date`, `time`, `code`, `BDE1`, `BDE2`, `BDE3`, `BDE4`, `BDE5`, `BDE6`, `BDE7`, `BDE8`, `BDE9`, `BDE10`, `BDE11`, `BDE12`, `BDE13`, `BDE14`, `BDE15`, `BDE16`, `BDE17`, `BDE18`, `BDE19`, `BDE20` ) VALUES (" + userId + "," + deviceId + ",'" + date + "','" + time + "','" + code + "','" + BDE1 + "','" + BDE2 + "','" + BDE3 + "','" + BDE4 + "','" + BDE5 + "','" + BDE6 + "','" + BDE7 + "','" + BDE8 + "','" + BDE9 + "','" + BDE10 + "','" + BDE11 + "','" + BDE12 + "','" + BDE13 + "','" + BDE14 + "','" + BDE15 + "','" + BDE16 + "','" + BDE17 + "','" + BDE18 + "','" + BDE19 + "','" + BDE20 + "')" ); setUserPresence(userId, true); } else { // compute the round of the time QStringList timeSplit = time.split(":"); QTime roundBooking ; QTime noRoundBooking(timeSplit.at(0).toInt(),timeSplit.at(1).toInt(),timeSplit.at(2).toInt()) ; QSqlQuery queryTimuxConfig("SELECT bookingRounding FROM hr_timux_config"); if(queryTimuxConfig.next()) { int round = queryTimuxConfig.value(0).toInt(); if(round == 0) { roundBooking = noRoundBooking; if(code == "255" || reason.right(3) == "_IN" || code == "155") // arrive { setUserPresence(userId, true); } else { if(code == "254" || reason.right(4) == "_OUT") // leave { setUserPresence(userId, false); } } } else { if(round == 1) { if(code == "255" || reason.right(3) == "_IN" || code == "155") // arrive { roundBooking.setHMS(noRoundBooking.hour(),noRoundBooking.minute()+1,0); setUserPresence(userId, true); } else { if(code == "254" || reason.right(4) == "_OUT") // leave { roundBooking.setHMS(noRoundBooking.hour(),noRoundBooking.minute(),0); setUserPresence(userId, false); } } } else { int m = noRoundBooking.minute(); while(m % round != 0) { if(code == "255" || reason.right(3) == "_IN" || code == "155") // arrive { m++; } else { if(code == "254" || reason.right(4) == "_OUT") // leave { m--; } } } if(code == "255" || reason.right(3) == "_IN" || code == "155") // arrive { roundBooking.setHMS(noRoundBooking.hour(),m,0); setUserPresence(userId, true); } else { if(code == "254" || reason.right(4) == "_OUT") // leave { roundBooking.setHMS(noRoundBooking.hour(),m,0); setUserPresence(userId, false); } } } } } QString lastTrackingId; // this is an entry BDE if(code == "155") { // be sure the last booking was an exit. Wo have to check this. If not the case, we have to insert an exit booking with the same time than // this booking QSqlQuery lastBooking("SELECT tb.action FROM hr_timux_booking AS tb LEFT JOIN hr_tracking AS t ON tb.tracking_id=t.id WHERE t.id_user="******" ORDER BY t.date DESC, t.time DESC, tb.tracking_id DESC LIMIT 0,1"); if(lastBooking.next()) { if(lastBooking.value(0) == "255") { // last booking was an already an entry, we have to insert an exit QSqlQuery query = "INSERT INTO `hr_tracking` ( `id` , `id_user` , `id_key` , `time` , `date` , `id_entry` , `is_access` , `id_comment`, `key`, `extData` ) VALUES ('', '" + userId + "','" + keyId + "', '" + time +"', '" + date +"', '" + deviceId + "', '" + "1" + "', '" + "0" + "', '" + key + "', '" + "hr_timux_booking" "')"; QSqlQuery lastTracking = "SELECT id FROM `hr_tracking` WHERE id_entry=" + deviceId + " AND id_user="******" ORDER BY id DESC LIMIT 0,1"; lastTracking.next(); QString last = lastTracking.value(0).toString(); QSqlQuery bookquery("INSERT INTO `hr_timux_booking` ( `tracking_id` , `action` , `actionReason`, `roundBooking` ) VALUES (" + last + "," + "254" + ",'" + reason + "','" + roundBooking.toString("hh:mm:ss") + "')" ); } } QSqlQuery query("INSERT INTO `hr_tracking` ( `id` , `id_user` , `id_key` , `time` , `date` , `id_entry` , `is_access` , `id_comment`, `key`, `extData` ) VALUES ('', '" + userId + "','" + keyId + "', '" + time +"', '" + date +"', '" + deviceId + "', '" + "1" + "', '" + "0" + "', '" + key + "', '" + "hr_timux_booking" "')" ); QSqlQuery lastTracking = "SELECT id FROM `hr_tracking` WHERE id_entry=" + deviceId + " AND id_user="******" ORDER BY id DESC LIMIT 0,1"; lastTracking.next(); lastTrackingId = lastTracking.value(0).toString(); QString BDE1 = params["BDEValue1"].toString(); QString BDE2 = params["BDEValue2"].toString(); QString BDE3 = params["BDEValue3"].toString(); QString BDE4 = params["BDEValue4"].toString(); QString BDE5 = params["BDEValue5"].toString(); QString BDE6 = params["BDEValue6"].toString(); QString BDE7 = params["BDEValue7"].toString(); QString BDE8 = params["BDEValue8"].toString(); QString BDE9 = params["BDEValue9"].toString(); QString BDE10 = params["BDEValue10"].toString(); QString BDE11 = params["BDEValue11"].toString(); QString BDE12 = params["BDEValue12"].toString(); QString BDE13 = params["BDEValue13"].toString(); QString BDE14 = params["BDEValue14"].toString(); QString BDE15 = params["BDEValue15"].toString(); QString BDE16 = params["BDEValue16"].toString(); QString BDE17 = params["BDEValue17"].toString(); QString BDE18 = params["BDEValue18"].toString(); QString BDE19 = params["BDEValue19"].toString(); QString BDE20 = params["BDEValue20"].toString(); QSqlQuery bookquery("INSERT INTO `hr_timux_booking_bde` ( `tracking_id` , `user_id` , `device_id`, `date`, `time`, `code`, `BDE1`, `BDE2`, `BDE3`, `BDE4`, `BDE5`, `BDE6`, `BDE7`, `BDE8`, `BDE9`, `BDE10`, `BDE11`, `BDE12`, `BDE13`, `BDE14`, `BDE15`, `BDE16`, `BDE17`, `BDE18`, `BDE19`, `BDE20` ) VALUES (" + lastTrackingId + "," + userId + "," + deviceId + ",'" + date + "','" + roundBooking.toString("hh:mm:ss") + "','" + code + "','" + BDE1 + "','" + BDE2 + "','" + BDE3 + "','" + BDE4 + "','" + BDE5 + "','" + BDE6 + "','" + BDE7 + "','" + BDE8 + "','" + BDE9 + "','" + BDE10 + "','" + BDE11 + "','" + BDE12 + "','" + BDE13 + "','" + BDE14 + "','" + BDE15 + "','" + BDE16 + "','" + BDE17 + "','" + BDE18 + "','" + BDE19 + "','" + BDE20 + "')" ); code = "255"; //check the booking if it is a valid input trackingIdToCheck = lastTrackingId; } else { QSqlQuery query("INSERT INTO `hr_tracking` ( `id` , `id_user` , `id_key` , `time` , `date` , `id_entry` , `is_access` , `id_comment`, `key`, `extData` ) VALUES ('', '" + userId + "','" + keyId + "', '" + time +"', '" + date +"', '" + deviceId + "', '" + "1" + "', '" + "0" + "', '" + key + "', '" + "hr_timux_booking" "')" ); QSqlQuery lastTracking = "SELECT id FROM `hr_tracking` WHERE id_entry=" + deviceId + " AND id_user="******" ORDER BY id DESC LIMIT 0,1"; lastTracking.next(); lastTrackingId = lastTracking.value(0).toString(); } QSqlQuery bookquery("INSERT INTO `hr_timux_booking` ( `tracking_id` , `action` , `actionReason`, `roundBooking` ) VALUES (" + lastTrackingId + "," + code + ",'" + reason + "','" + roundBooking.toString("hh:mm:ss") + "')" ); if(trackingIdToCheck != "") { QtSoapMessage message; message.setMethod("callServiceComponent"); QtSoapArray *array = new QtSoapArray(QtSoapQName("params")); array->insert(0, new QtSoapSimpleType(QtSoapQName("component"),"timuxadmin")); array->insert(1, new QtSoapSimpleType(QtSoapQName("class"),"timuxAdminDevice")); array->insert(2, new QtSoapSimpleType(QtSoapQName("function"),"checkInputBDE")); array->insert(3, new QtSoapSimpleType(QtSoapQName("trackingId"),lastTrackingId)); message.addMethodArgument(array); soapClientInputBDE.submitRequest(message, saas_path+"/index.php?soap=soapComponent&password="******"&username="******"Check the input BDE"; } checkBalances(userId.toInt()); } return true; }
void CGantnerTime::checkDb() { timerCheckDb->stop(); QStringList ids; QMapIterator<int, bool> i(devices); while (i.hasNext()) { i.next(); if(i.value()) { QSqlQuery query("SELECT * FROM hr_gantner_standalone_action WHERE deviceId=" + QString::number(i.key()) + " ORDER BY id" ); while(query.next()) { QString id = query.value(0).toString(); QString type = query.value(1).toString(); QString func = query.value(2).toString(); QString deviceId = QString::number(i.key()); QString userId = query.value(3).toString(); QString keyId = query.value(4).toString(); QString param = query.value(6).toString(); QString param2 = query.value(7).toString(); QString param3 = query.value(8).toString(); QString reasonId = query.value(9).toString(); if(type == "user") { QMap<QString, QString> p; QString f = func == "add" ? "addUser" : "removeUser" ; p["userId"] = userId; p["userNo"] = userId; p["displayName"] = param; p["lang"] = param2; p["fiuUse"] = "0"; if(param3 == "") p["attendanceStatus"] = "2"; else p["attendanceStatus"] = param3; QString xmlFunc = CXmlFactory::deviceAction( deviceId ,f, p); emit accessAction(xmlFunc); } if(type == "key") { QMap<QString, QString> p; QString f = func == "add" ? "addKey" : "removeKey" ; p["userId"] = userId; p["key"] = param; p["keyType"] = "01"; QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } if(type == "key_user") { QMap<QString, QString> p2; QString f2 = func == "add" ? "addUser" : "removeUser" ; p2["userId"] = userId; p2["userNo"] = userId; p2["displayName"] = param; p2["lang"] = param2; p2["fiuUse"] = "0"; p2["attendanceStatus"] = "2"; QString xmlFunc2 = CXmlFactory::deviceAction( deviceId ,f2, p2); emit accessAction(xmlFunc2); QMap<QString, QString> p; QString f = func == "add" ? "addKey" : "removeKey" ; p["userId"] = userId; p["key"] = param3; p["keyType"] = "01"; QString xmlFunc = CXmlFactory::deviceAction( deviceId ,f, p); emit accessAction(xmlFunc); } if(type == "reason") { QMap<QString, QString> p; QString f = func == "add" ? "addAbsentReason" : "removeAbsentReason" ; p["reasonId"] = reasonId; p["text"] = param; p["status"] = param2; p["group"] = param2 == "1" ? "IN" : "OUT"; QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } if(type == "balances") { QMap<QString, QString> p; QString f = "addUserBalances"; p["userId"] = userId; p["balances"] = param; QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } if(type == "balancesText") { QMap<QString, QString> p; QString f = "setBalanceText"; p["fieldNo"] = param; p["text"] = param2; QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } if(type == "reinit") { QMap<QString, QString> p; QString f = "reinit"; QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } if(type == "load") { QMap<QString, QString> p; QString f = func == "add" ? "addBDEData" : "removeBDEData"; if(func == "add") { p["BDEfieldNo"] = param; p["value"] = param2; p["valueText"] = param3; } else { p["BDEfieldNo"] = param; p["value"] = param2; } QString xmlFunc = CXmlFactory::deviceAction( deviceId, f, p); emit accessAction(xmlFunc); } ids << id; } if(saas && ids.count()>0) { QtSoapMessage message; message.setMethod("callServiceComponent"); QtSoapArray *array = new QtSoapArray(QtSoapQName("params")); array->insert(0, new QtSoapSimpleType(QtSoapQName("component"),"timuxadmin")); array->insert(1, new QtSoapSimpleType(QtSoapQName("class"),"timuxAdminDevice")); array->insert(2, new QtSoapSimpleType(QtSoapQName("function"),"syncStandalone")); array->insert(3, new QtSoapSimpleType(QtSoapQName("params"),ids.join(","))); message.addMethodArgument(array); soapClient.submitRequest(message, saas_path+"/index.php?soap=soapComponent&password="******"&username="******"DELETE FROM hr_gantner_standalone_action WHERE deviceId=" + QString::number(i.key()) ); timerCheckDb->start(TIME_DB_CHECKING); } } } if(!saas) QSqlQuery queryOptimize("OPTIMIZE TABLE hr_gantner_standalone_action"); }