QString SnippetsConfigWidget::parseSnippet(attribs_map snippet, attribs_map attribs) { SchemaParser schparser; QStringList aux_attribs; QString buf=snippet[ParsersAttributes::CONTENTS]; if(snippet[ParsersAttributes::PARSABLE]!=ParsersAttributes::_TRUE_) return(buf); try { schparser.loadBuffer(buf); //Assigning dummy values for empty attributes if(snippet[ParsersAttributes::PLACEHOLDERS]==ParsersAttributes::_TRUE_) { aux_attribs=schparser.extractAttributes(); for(QString attr : aux_attribs) { if(attribs.count(attr)==0 || (attribs.count(attr) && attribs[attr].isEmpty())) attribs[attr]=QString("{%1}").arg(attr); } } schparser.ignoreEmptyAttributes(true); schparser.ignoreUnkownAttributes(true); return(schparser.getCodeDefinition(attribs)); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e); } }
QString BaseObject::getAlterDefinition(QString sch_name, attribs_map &attribs, bool ignore_ukn_attribs, bool ignore_empty_attribs) { try { SchemaParser schparser; QString alter_sch_dir=GlobalAttributes::SCHEMAS_ROOT_DIR + GlobalAttributes::DIR_SEPARATOR + GlobalAttributes::ALTER_SCHEMA_DIR + GlobalAttributes::DIR_SEPARATOR + QString("%1") + GlobalAttributes::SCHEMA_EXT; schparser.setPgSQLVersion(BaseObject::pgsql_ver); schparser.ignoreEmptyAttributes(ignore_empty_attribs); schparser.ignoreUnkownAttributes(ignore_ukn_attribs); return(schparser.getCodeDefinition(alter_sch_dir.arg(sch_name), attribs)); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e); } }
bool SnippetsConfigWidget::isSnippetValid(attribs_map &attribs, const QString &orig_id) { Messagebox msg_box; QString snip_id=attribs.at(ParsersAttributes::ID), err_msg; if(!orig_id.isEmpty() && snip_id!=orig_id && config_params.count(snip_id)!=0) err_msg=trUtf8("Duplicated snippet id <strong>%1</strong> detected. Please, specify a different one!").arg(snip_id); else if(!ID_FORMAT_REGEXP.exactMatch(snip_id)) err_msg=trUtf8("Invalid ID pattern detected <strong>%1</strong>. This one must start with at leat one letter and be composed by letters, numbers and/or underscore!").arg(snip_id); else if(attribs[ParsersAttributes::LABEL].isEmpty()) err_msg=trUtf8("Empty label for snippet <strong>%1</strong>. Please, specify a value for it!").arg(snip_id); else if(attribs[ParsersAttributes::CONTENTS].isEmpty()) err_msg=trUtf8("Empty code for snippet <strong>%1</strong>. Please, specify a value for it!").arg(snip_id); else if(attribs[ParsersAttributes::PARSABLE]==ParsersAttributes::_TRUE_) { try { QString buf=snippet_txt->toPlainText(); attribs_map attribs; SchemaParser schparser; schparser.loadBuffer(buf); schparser.ignoreEmptyAttributes(true); schparser.ignoreUnkownAttributes(true); schparser.getCodeDefinition(attribs); } catch(Exception &e) { err_msg=trUtf8("The dynamic snippet contains syntax error(s). Additional info: <br/><em>%1</em>").arg(e.getErrorMessage()); } } if(!err_msg.isEmpty()) { msg_box.show(err_msg, Messagebox::ERROR_ICON, Messagebox::OK_BUTTON); return(false); } else return(true); }