//----------------------------------------------------------------------------
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);
}
示例#10
0
//----------------------------------------------------------------------------
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())");
    }
示例#11
0
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);
}
示例#18
0
void AcsMessageBuilder::buildDownloadRequest(QtSoapMessage &request, AcsParamDownload &paramDownload)
{
    //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) );
}
示例#20
0
文件: KEcm.cpp 项目: cassioarmy/KEcm
 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 ";
    }
 }
示例#21
0
void AcsMessageBuilder::buildSetValueRequest(QtSoapMessage &request, AcsParamList &paramList)
{
    //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);
    }
示例#25
0
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)
{}
示例#27
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;
}
示例#28
0
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");
}