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);
  }
}
Exemple #2
0
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);
}