Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsalgorithmtruncatetable.cpp 3 : : --------------------- 4 : : begin : December 2019 5 : : copyright : (C) 2019 by Alexander Bruy 6 : : email : alexander dot bruy at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #include "qgsalgorithmtruncatetable.h" 19 : : #include "qgsvectorlayer.h" 20 : : 21 : : ///@cond PRIVATE 22 : : 23 : 0 : QString QgsTruncateTableAlgorithm::name() const 24 : : { 25 : 0 : return QStringLiteral( "truncatetable" ); 26 : : } 27 : : 28 : 0 : QString QgsTruncateTableAlgorithm::displayName() const 29 : : { 30 : 0 : return QObject::tr( "Truncate table" ); 31 : : } 32 : : 33 : 0 : QStringList QgsTruncateTableAlgorithm::tags() const 34 : : { 35 : 0 : return QObject::tr( "empty,delete,layer,clear,features" ).split( ',' ); 36 : 0 : } 37 : : 38 : 0 : QString QgsTruncateTableAlgorithm::group() const 39 : : { 40 : 0 : return QObject::tr( "Vector general" ); 41 : : } 42 : : 43 : 0 : QString QgsTruncateTableAlgorithm::groupId() const 44 : : { 45 : 0 : return QStringLiteral( "vectorgeneral" ); 46 : : } 47 : : 48 : 0 : QString QgsTruncateTableAlgorithm::shortHelpString() const 49 : : { 50 : 0 : return QObject::tr( "This algorithm truncates a layer, by deleting all features from within the layer." ) 51 : 0 : + QStringLiteral( "\n\n" ) 52 : 0 : + QObject::tr( "Warning — this algorithm modifies the layer in place, and deleted features cannot be restored!" ); 53 : 0 : } 54 : : 55 : 0 : QgsProcessingAlgorithm::Flags QgsTruncateTableAlgorithm::flags() const 56 : : { 57 : 0 : return QgsProcessingAlgorithm::flags() | QgsProcessingAlgorithm::FlagNoThreading; 58 : : } 59 : : 60 : 0 : QgsTruncateTableAlgorithm *QgsTruncateTableAlgorithm::createInstance() const 61 : : { 62 : 0 : return new QgsTruncateTableAlgorithm(); 63 : : } 64 : : 65 : 0 : void QgsTruncateTableAlgorithm::initAlgorithm( const QVariantMap & ) 66 : : { 67 : 0 : addParameter( new QgsProcessingParameterVectorLayer( QStringLiteral( "INPUT" ), QObject::tr( "Input layer" ) ) ); 68 : 0 : addOutput( new QgsProcessingOutputVectorLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Truncated layer" ) ) ); 69 : 0 : } 70 : : 71 : 0 : QVariantMap QgsTruncateTableAlgorithm::processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * ) 72 : : { 73 : 0 : QgsVectorLayer *layer = parameterAsVectorLayer( parameters, QStringLiteral( "INPUT" ), context ); 74 : : 75 : 0 : if ( !layer ) 76 : 0 : throw QgsProcessingException( QObject::tr( "Invalid input layer" ) ); 77 : : 78 : 0 : if ( !layer->dataProvider()->truncate() ) 79 : : { 80 : 0 : throw QgsProcessingException( QObject::tr( "Could not truncate table." ) ); 81 : : } 82 : : 83 : 0 : QVariantMap outputs; 84 : 0 : outputs.insert( QStringLiteral( "OUTPUT" ), layer->id() ); 85 : 0 : return outputs; 86 : 0 : } 87 : : 88 : : ///@endcond