LCOV - code coverage report
Current view: top level - core/project - qgsprojectbadlayerhandler.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 50 0.0 %
Date: 2021-03-26 12:19:53 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :   qgsprojectbadlayerhandler.cpp - QgsProjectBadLayerHandler
       3                 :            : 
       4                 :            :  ---------------------
       5                 :            :  begin                : 22.10.2016
       6                 :            :  copyright            : (C) 2016 by Matthias Kuhn
       7                 :            :  email                : matthias@opengis.ch
       8                 :            :  ***************************************************************************
       9                 :            :  *                                                                         *
      10                 :            :  *   This program is free software; you can redistribute it and/or modify  *
      11                 :            :  *   it under the terms of the GNU General Public License as published by  *
      12                 :            :  *   the Free Software Foundation; either version 2 of the License, or     *
      13                 :            :  *   (at your option) any later version.                                   *
      14                 :            :  *                                                                         *
      15                 :            :  ***************************************************************************/
      16                 :            : #include "qgsprojectbadlayerhandler.h"
      17                 :            : #include "qgslogger.h"
      18                 :            : #include "qgsmessagelog.h"
      19                 :            : #include "qgsapplication.h"
      20                 :            : 
      21                 :            : #include <QFileInfo>
      22                 :            : 
      23                 :          0 : void QgsProjectBadLayerHandler::handleBadLayers( const QList<QDomNode> &layers )
      24                 :            : {
      25                 :          0 :   QgsApplication::messageLog()->logMessage( QObject::tr( "%1 unavailable layers found:" ).arg( layers.size() ) );
      26                 :          0 :   const auto constLayers = layers;
      27                 :          0 :   for ( const QDomNode &layer : constLayers )
      28                 :            :   {
      29                 :          0 :     QgsApplication::messageLog()->logMessage( QObject::tr( " * %1" ).arg( dataSource( layer ) ) );
      30                 :            :   }
      31                 :          0 : }
      32                 :            : 
      33                 :          0 : QgsProjectBadLayerHandler::DataType QgsProjectBadLayerHandler::dataType( const QDomNode &layerNode )
      34                 :            : {
      35                 :          0 :   QString type = layerNode.toElement().attribute( QStringLiteral( "type" ) );
      36                 :            : 
      37                 :          0 :   if ( type.isNull() )
      38                 :            :   {
      39                 :          0 :     QgsDebugMsg( QStringLiteral( "cannot find ``type'' attribute" ) );
      40                 :            : 
      41                 :          0 :     return IS_BOGUS;
      42                 :            :   }
      43                 :            : 
      44                 :          0 :   if ( "raster" == type )
      45                 :            :   {
      46                 :          0 :     QgsDebugMsg( QStringLiteral( "is a raster" ) );
      47                 :            : 
      48                 :          0 :     return IS_RASTER;
      49                 :            :   }
      50                 :          0 :   else if ( "vector" == type )
      51                 :            :   {
      52                 :          0 :     QgsDebugMsg( QStringLiteral( "is a vector" ) );
      53                 :            : 
      54                 :          0 :     return IS_VECTOR;
      55                 :            :   }
      56                 :            : 
      57                 :          0 :   QgsDebugMsg( "is unknown type " + type );
      58                 :            : 
      59                 :          0 :   return IS_BOGUS;
      60                 :          0 : }
      61                 :            : 
      62                 :          0 : QString QgsProjectBadLayerHandler::dataSource( const QDomNode &layerNode )
      63                 :            : {
      64                 :          0 :   QDomNode dataSourceNode = layerNode.namedItem( QStringLiteral( "datasource" ) );
      65                 :            : 
      66                 :          0 :   if ( dataSourceNode.isNull() )
      67                 :            :   {
      68                 :          0 :     QgsDebugMsg( QStringLiteral( "cannot find datasource node" ) );
      69                 :            : 
      70                 :          0 :     return QString();
      71                 :            :   }
      72                 :            : 
      73                 :          0 :   return dataSourceNode.toElement().text();
      74                 :          0 : }
      75                 :            : 
      76                 :          0 : QgsProjectBadLayerHandler::ProviderType QgsProjectBadLayerHandler::providerType( const QDomNode &layerNode )
      77                 :            : {
      78                 :            :   // XXX but what about rasters that can be URLs?  _Can_ they be URLs?
      79                 :            : 
      80                 :          0 :   switch ( dataType( layerNode ) )
      81                 :            :   {
      82                 :            :     case IS_VECTOR:
      83                 :            :     {
      84                 :          0 :       QString ds = dataSource( layerNode );
      85                 :            : 
      86                 :          0 :       QgsDebugMsg( "datasource is " + ds );
      87                 :            : 
      88                 :          0 :       if ( ds.contains( QLatin1String( "host=" ) ) )
      89                 :            :       {
      90                 :          0 :         return IS_URL;
      91                 :            :       }
      92                 :          0 :       else if ( ds.contains( QLatin1String( "dbname=" ) ) )
      93                 :            :       {
      94                 :          0 :         return IS_DATABASE;
      95                 :            :       }
      96                 :            :       // be default, then, this should be a file based layer data source
      97                 :            :       // XXX is this a reasonable assumption?
      98                 :            : 
      99                 :          0 :       return IS_FILE;
     100                 :          0 :     }
     101                 :            : 
     102                 :            :     case IS_RASTER:         // rasters are currently only accessed as
     103                 :            :       // physical files
     104                 :          0 :       return IS_FILE;
     105                 :            : 
     106                 :            :     default:
     107                 :          0 :       QgsDebugMsg( QStringLiteral( "unknown ``type'' attribute" ) );
     108                 :          0 :   }
     109                 :            : 
     110                 :          0 :   return IS_Unknown;
     111                 :          0 : }
     112                 :            : 
     113                 :          0 : void QgsProjectBadLayerHandler::setDataSource( QDomNode &layerNode, const QString &dataSource )
     114                 :            : {
     115                 :          0 :   QDomNode dataSourceNode = layerNode.namedItem( QStringLiteral( "datasource" ) );
     116                 :          0 :   QDomElement dataSourceElement = dataSourceNode.toElement();
     117                 :          0 :   QDomText dataSourceText = dataSourceElement.firstChild().toText();
     118                 :            : 
     119                 :          0 :   QgsDebugMsg( "datasource changed from " + dataSourceText.data() );
     120                 :            : 
     121                 :          0 :   dataSourceText.setData( dataSource );
     122                 :            : 
     123                 :          0 :   QgsDebugMsg( "to " + dataSourceText.data() );
     124                 :          0 : }

Generated by: LCOV version 1.14