/****************************************************************************
-** $Id: ametadata.cpp,v 1.3 2008/12/14 10:53:02 leader Exp $
+** $Id: ametadata.cpp,v 1.5 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
*
*/
AMetaData::AMetaData()
-:AMetaObjectGroup( "MetaData", (AMetaObjectGroup *) 0 )
+:AMetaGroup( "MetaData", 0 )
{
/*
int i = qRegisterMetaType<AMetaDataInfo>("AMetaDataInfo");
myClassPtr = 0;
}
*/
+ addChild( &v_info );
+ addChild( &v_global );
+
+ addChild( &v_catalogues );
+ addChild( &v_documents );
+ addChild( &v_reports );
+ addChild( &v_journals );
+ addChild( &v_inforegisters );
+ addChild( &v_accregisters );
+
+// addChild( &v_info );
}
/****************************************************************************
-** $Id: ametadata.h,v 1.3 2008/12/14 10:53:02 leader Exp $
+** $Id: ametadata.h,v 1.4 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
#include "ametaobject.h"
#include "ametaobjectgroup.h"
+#include "ametadocument.h"
#ifdef __BORLANDC__
* Наследует QObject.
*\_ru
*/
-class AMetaData: public AMetaObjectGroup
+class AMetaData: public AMetaGroup
{
Q_OBJECT
//Q_PROPERTY( AMetaDataInfo info READ info SCRIPTABLE true )
/****************************************************************************
-** $Id: ametadataio.h,v 1.3 2008/12/15 22:22:48 leader Exp $
+** $Id: ametadataio.h,v 1.4 2008/12/19 20:15:50 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
virtual int write( const QString &name, AMetaData *md = 0);
virtual QObject *createObject( const QString &name );
//virtual void storeGroup( AMetaObjectGroup *g );
- virtual void storeGroupBegin( AMetaObjectGroup *g );
+// virtual void storeGroupBegin( AMetaObjectGroup *g );
signals:
void message( int msg_class, const QString & msg );
/****************************************************************************
-** $Id: ametadataioxml.cpp,v 1.2 2008/12/13 22:19:15 leader Exp $
+** $Id: ametadataioxml.cpp,v 1.5 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
QFile file( name );
if ( !md ) md = AMetaData::metadata();
-// QDomDocument xml("ananas4_configuration");
QDomNode cur, sub;
QDomElement node, rootnode, cfginfo, mdelement, iface, actions;
xml.setContent(QString("<?xml version = '1.0' encoding = 'UTF-8'?>\n"));
xml.appendChild( xml.implementation().createDocumentType("ananas_configuration",
QString::null,"ananas-cfg.dtd"));
- rootnode = xml.createElement( md_root );
+ rootnode = AMetaObjectToXML( md );
+//xml.createElement( md_root );
xml.appendChild( rootnode );
rootnode = xml.documentElement();
+// rootnode.appendChild( AMetaObjectToXML( md ) );
+/*
rootnode.appendChild( AMetaObjectToXML( md->info() ) );
rootnode.appendChild( AMetaObjectToXML( md->global() ) );
-
- node = xml.createElement( md_info );
+ int i;
+ for ( i = 0; i< md->groupCount(); i++ ){
+ node = xml.createElement( md->group( i )->name() );
+ rootnode.appendChild( node );
+ }
+*/
+/* node = xml.createElement( md_info );
rootnode.appendChild( node );
node = xml.createElement( md_actions );
rootnode.appendChild( node );
-
+*/
if ( !file.open( QIODevice::WriteOnly ) ) return 1;
QTextStream ts( &file );
QDomNode cur;
QString s, t;
int id;
+ QVariant v;
cur = e.firstChild();
while (!cur.isNull()) {
id = se.attribute( mda_id ).toInt();
o->setId( id );
}
- s = se.text();
-// qDebug() << se.tagName() << ":" << s;
- if ( !s.isNull() ) o->setText( se.tagName(), s );
+ if ( se.hasAttribute( "type" ) ) {
+ t = se.attribute("type");
+ v.clear();
+ v = se.text();
+ if ( v.convert( QVariant::nameToType( t ) ) ) o->setAttr( se.tagName(), v );
+ }
cur = cur.nextSibling();
}
QDomElement e, se;
e = xml.createElement( o->className() );
- for ( i=0; i< o->textCount(); i++ ){
- se = xml.createElement( o->textName( i ) );
- se.appendChild( xml.createTextNode( o->text( i ) ) );
+ if ( !o->inherits("AMetaObjectGroup") ){
+ if ( !o->name().isEmpty() ) {
+ e.setAttribute("name", o->name() );
+ if ( o->id() > 0 ) e.setAttribute("id", QString::number(o->id()) );
+ }
+ }
+ for ( i=0; i< o->attrCount(); i++ ){
+ se = xml.createElement( o->attrName( i ) );
+ se.setAttribute("type", o->attr( i ).typeName() );
+ se.appendChild( xml.createTextNode( o->attr( i ).toString() ) );
e.appendChild( se );
}
+ for ( i=0; i< o->childCount(); i++ ){
+ e.appendChild( AMetaObjectToXML( o->child( i ) ) );
+ }
return e;
}
+
QString
AMetaDataIOXML::text()
{
/****************************************************************************
-** $Id: ametadataioxml.h,v 1.2 2008/12/13 22:19:15 leader Exp $
+** $Id: ametadataioxml.h,v 1.4 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
/****************************************************************************
-** $Id: ametadocument.cpp,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametadocument.cpp,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
* \class AMetaDocument
*
*/
-AMetaDocument::AMetaDocument()
-:AMetaObject("Document")
+AMetaDocument::AMetaDocument( AMetaObject *parent )
+:AMetaObject("Document", "", parent )
{
+ setId( lastId() );
+ setName( QString("%1_%2").arg( tr("Document") ).arg( id() ) );
+ addChild( &v_fields );
+ addChild( &v_tables );
+ addChild( &v_forms );
+
}
{
return &v_forms;
}
+
+
+
+/*!
+ * \class ADocumentsGroup
+ *
+ */
+ADocumentsGroup::ADocumentsGroup()
+:AMetaGroup("Documents")
+{
+
+}
+
/****************************************************************************
-** $Id: ametadocument.h,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametadocument.h,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
#include "ametaobject.h"
#include "ametaobjectgroup.h"
#include "ametafield.h"
+#include "ametaform.h"
class AMetaDocument: public AMetaObject
{
Q_OBJECT
public:
- AMetaDocument();
+ AMetaDocument( AMetaObject *parent = 0 );
public slots:
AMetaFields *fields();
AMetaForms v_forms;
};
+
+
+class ADocumentsGroup: public AMetaGroup
+{
+Q_OBJECT
+public:
+ ADocumentsGroup();
+
+ AMetaDocument *newDocument(){ return new AMetaDocument( this );};
+ AMetaDocument *document( const QString &name ){ return (AMetaDocument*) child( name );};
+ AMetaDocument *document( int idx ){ return (AMetaDocument*) child( idx );};
+ int documentCount(){ return childCount(); };
+
+public slots:
+ QString test(){ return QString("DOCUMENTS TEST STRING");};
+
+
+};
+
#endif
/****************************************************************************
-** $Id: ametafield.cpp,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametafield.cpp,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
* \class AMetaField
*
*/
-AMetaField::AMetaField()
-:AMetaObject("MetaField")
+AMetaField::AMetaField( AMetaObject *parent )
+:AMetaObject("MetaField","", parent )
{
+ setId( lastId() );
+ setName( QString("%1_%2").arg( tr("Field") ).arg( id() ) );
setFieldType( Unknown );
setFieldSubType( 0 );
setWidth( 0 );
}
-AMetaField::AMetaField( FieldTypes t, int st, int w, int d, bool notnul, bool notneg, bool calcsum )
-:AMetaObject("MetaField")
+/*
+AMetaField::AMetaField( FieldTypes t, int st, int w, int d, bool notnul, bool notneg, bool calcsum, )
+:AMetaObject("MetaField", "", parent )
{
setFieldType( t );
setFieldSubType( st );
setNotNegative( notneg );
setCalcSumm( calcsum );
}
-
+*/
int
AMetaField::fieldType()
*
*/
AMetaFields::AMetaFields()
-:AMetaObjectGroup("MetaFields")
+:AMetaGroup("MetaFields")
{
}
/****************************************************************************
-** $Id: ametafield.h,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametafield.h,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
public:
enum FieldTypes { Unknown, Char, String, Number, Date, Object, Document, Catalogue };
- AMetaField();
+ AMetaField( AMetaObject *parent = 0 );
- AMetaField( FieldTypes t, int st = 0, int w = 0,
+/* AMetaField( FieldTypes t, int st = 0, int w = 0,
int d = 0, bool notnul = false, bool notneg = false,
bool calcsum = false );
-
+*/
int fieldType();
void setFieldType( FieldTypes t );
};
-class AMetaFields: public AMetaObjectGroup
+class AMetaFields: public AMetaGroup
{
Q_OBJECT
public:
AMetaFields();
+ AMetaField * newField(){ return new AMetaField( this );};
+ AMetaField *field( const QString &name ){ return (AMetaField*) child( name );};
+ AMetaField *field( int idx ){ return (AMetaField*) child( idx );};
+ int fieldCount(){ return childCount(); };
public slots:
/****************************************************************************
-** $Id: ametaform.cpp,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaform.cpp,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
:AMetaObject("MetaForm")
{
}
+
+
+/*!
+ * \class AMetaForms
+ *
+ */
+AMetaForms::AMetaForms()
+:AMetaGroup("MetaForms")
+{
+
+}
/****************************************************************************
-** $Id: ametaform.h,v 1.1 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaform.h,v 1.2 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
};
+
+class AMetaForms: public AMetaGroup
+{
+Q_OBJECT
+public:
+ AMetaForms();
+
+public slots:
+
+
+};
+
#endif
/****************************************************************************
-** $Id: ametaobject.cpp,v 1.2 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaobject.cpp,v 1.5 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
#include <qstringlist.h>
#include <QTextStream>
#include <QDomDocument>
+#include <QMutex>
#include "ametaobject.h"
#include "ametaobjectgroup.h"
* Наследует QObject.
*\_ru
*/
+int AMetaObject::v_lastId = 101;
AMetaObject::AMetaObject(const QString &objectclass,
const QString &objectname,
- AMetaObjectGroup *parent)
+ AMetaObject *parent)
:QObject( parent )
{
setObjectName( objectname );
setClassName( objectclass );
setDescription("");
+ setId( 0 );
+ if ( parent ) parent->addChild( this );
+// if ( !this->inherits("AMetaObjectGroup") ) setId( lastId() );
}
+AMetaObject::~AMetaObject()
+{
+ AMetaObject *p = ( AMetaObject *) parent();
+ if ( p && p->inherits("AMetaObject") ) p->removeChild( this );
+}
+
+
+
Q_ULONG
AMetaObject::id()
{
}
-QString
-AMetaObject::description()
+AMetaObject *
+AMetaObject::rootObject()
{
- return text("description");
+ AMetaObject *o = parentMetaObject();
+ while ( o->parentMetaObject() ) o = o->parentMetaObject();
+ if ( !o->inherits("AMetaData" ) ) o = 0;
+ return o;
}
-void
-AMetaObject::setDescription( const QString &descr )
-{
- setText( "description", descr );
-}
-void
-AMetaObject::setAttr( const QString &name, const QVariant &value )
+AMetaObject *
+AMetaObject::parentMetaObject()
{
- if ( value.isNull() && attrExists( name ) ) v_attr.remove( name );
- else v_attr[ name ] = value;
+ AMetaObject *p = (AMetaObject *) parent();
+ if ( !p ) p = v_parent;
+ else if ( !p->inherits("AMetaObject") ) p = 0;
+ return p;
}
void
-AMetaObject::setText( const QString &name, const QString &text )
+AMetaObject::setParentMetaObject( AMetaObject * parent )
{
- if ( text.isNull() && textExists( name ) ) v_text.remove( name );
- else v_text[ name ] = text;
+ v_parent = parent;
}
-void
-AMetaObject::setRawdata( const QString &name, const QByteArray &data )
+
+QString
+AMetaObject::description()
{
- if ( data.isNull() && rawdataExists( name ) ) v_rawdata.remove( name );
- else v_rawdata[ name ] = data;
+ return v_description;
}
-
-
-QVariant
-AMetaObject::attr( const QString &name ) const
+void
+AMetaObject::setDescription( const QString &descr )
{
- return v_attr.value( name, QVariant() );
+ v_description = descr;
}
-
-QString
-AMetaObject::text( const QString &name ) const
+void
+AMetaObject::setAttr( const QString &name, const QVariant &value )
{
- return v_text.value( name, QString::null );
+ if ( value.isNull() && attrExists( name ) ) v_attr.remove( name );
+ else v_attr[ name ] = value;
}
-QByteArray
-AMetaObject::rawdata( const QString &name ) const
+QVariant
+AMetaObject::attr( const QString &name ) const
{
- return v_rawdata.value( name, QByteArray() );
+ return v_attr.value( name, QVariant() );
}
QString
-AMetaObject::text( int idx ) const
+AMetaObject::attrName( int idx ) const
{
- return text( textName( idx ) );
+ if ( idx < 0 || idx >= attrCount() ) return QString::null;
+ return v_attr.keys().at( idx );
}
-QByteArray
-AMetaObject::rawdata( int idx ) const
+bool
+AMetaObject::attrExists( const QString &name )
{
- return rawdata( rawdataName( idx ) );
+ return v_attr.contains( name );
}
-QString
-AMetaObject::attrName( int idx ) const
+int
+AMetaObject::attrCount() const
{
- if ( idx < 0 || idx >= attrCount() ) return QString::null;
- return v_attr.keys().at( idx );
+ return v_attr.size();
}
-QString
-AMetaObject::textName( int idx ) const
+int
+AMetaObject::lastId()
{
- if ( idx < 0 || idx >= textCount() ) return QString::null;
- return v_text.keys().at( idx );
-}
-
-
+ static QMutex m;
-QString
-AMetaObject::rawdataName( int idx ) const
-{
- if ( idx < 0 || idx >= rawdataCount() ) return QString::null;
- return v_rawdata.keys().at( idx );
+ m.lock();
+ int res = v_lastId;
+ v_lastId++;
+ m.unlock();
+ return res;
}
-bool
-AMetaObject::attrExists( const QString &name )
+void
+AMetaObject::setLastId( int id )
{
- return v_attr.contains( name );
+ v_lastId = id;
}
-
-bool
-AMetaObject::textExists( const QString &name )
+int
+AMetaObject::childCount()
{
- return v_text.contains( name );
+ return v_child.count();
}
-bool
-AMetaObject::rawdataExists( const QString &name )
+AMetaObject *
+AMetaObject::child( int idx )
{
- return v_rawdata.contains( name );
+ if ( idx < 0 || idx >= childCount() ) return 0;
+ return v_child.values().at( idx );
}
-int
-AMetaObject::attrCount() const
+AMetaObject *
+AMetaObject::child( const QString &name )
{
- return v_attr.size();
+ return v_child.value( name, 0 );
}
-int
-AMetaObject::textCount() const
+void
+AMetaObject::addChild( AMetaObject * c )
{
- return v_text.size();
+ QString name;
+
+ if ( c ) {
+ name = c->name();
+ if ( name.isEmpty() ) name = c->className();
+ v_child.insertMulti( name, c );
+ }
}
-int
-AMetaObject::rawdataCount() const
+
+void
+AMetaObject::removeChild( AMetaObject * c )
{
- return v_rawdata.size();
+ if ( c ) v_child.remove( v_child.key( c ) );
}
AMetaCatalogue::AMetaCatalogue()
:AMetaObject("Catalogue")
{
+ setId( lastId() );
+ setName( QString("%1_%2").arg( tr("Catalogue") ).arg( id() ) );
}
QString
AMetaDataInfo::appName()
{
- return text("name");
+ return attr("name").toString();
}
void
AMetaDataInfo::setAppName( const QString &name )
{
- setText( "name", name );
+ setAttr( "name", name );
}
-long
+int
AMetaDataInfo::lastId()
{
- return text( "lastid" ).toLong();
+ return attr( "lastid" ).toInt();
}
void
-AMetaDataInfo::setLastId( long id )
+AMetaDataInfo::setLastId( int id )
{
- setText( "lastid", QString::number( id ) );
+ setAttr( "lastid", id );
}
QString
AMetaDataInfo::author()
{
- return text("author");
+ return attr("author").toString();
}
void
AMetaDataInfo::setAuthor( const QString &name )
{
- setText( "author", name );
+ setAttr( "author", name );
}
QDate
AMetaDataInfo::date()
{
- return QDate::fromString( text("date"), Qt::ISODate );
+ return attr("date").toDate();
}
void
AMetaDataInfo::setDate( QDate d )
{
- setText( "date", d.toString( Qt::ISODate ) );
+ setAttr( "date", d );
}
QString
AMetaDataGlobal::sourceCode()
{
- return text("sourcecode");
+ return attr("sourcecode").toString();
}
void
AMetaDataGlobal::setSourceCode( const QString &src )
{
- setText( "sourcecode", src );
+ setAttr( "sourcecode", src );
}
/****************************************************************************
-** $Id: ametaobject.h,v 1.2 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaobject.h,v 1.5 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
#define RC_OK 0 /**< All right - no errors */
#define RC_ERROR 1 /**< Error while executing method */
-#include <QHash>
+//#include <QHash>
+#include <QMap>
#include <QVariant>
class AMetaObjectGroup;
public:
AMetaObject( const QString &objectclass = QString::null,
const QString &objectname = QString::null,
- AMetaObjectGroup *parent = 0 );
+ AMetaObject *parent = 0 );
+ ~AMetaObject();
void setClassName( const QString &name );
Q_ULONG id();
void setId( Q_ULONG );
QString className();
QString name();
+ AMetaObject *rootObject();
+ AMetaObject *parentMetaObject();
+ void setParentMetaObject( AMetaObject * parent );
QString description();
void setDescription( const QString &descr );
void setAttr( const QString &name, const QVariant &value );
- void setText( const QString &name, const QString &text );
- void setRawdata( const QString &name, const QByteArray &data );
-
QVariant attr( const QString &name ) const;
- QString text( const QString &name ) const;
- QByteArray rawdata( const QString &name ) const;
-
QVariant attr( int idx ) const;
- QString text( int idx ) const;
- QByteArray rawdata( int idx ) const;
-
QString attrName( int idx ) const;
- QString textName( int idx ) const;
- QString rawdataName( int idx ) const;
-
bool attrExists( const QString &name );
- bool textExists( const QString &name );
- bool rawdataExists( const QString &name );
-
int attrCount() const;
- int textCount() const;
- int rawdataCount() const;
+
+ static int lastId();
+ static void setLastId( int id );
+
+ int childCount();
+ AMetaObject *child( int idx );
+ AMetaObject *child( const QString &name );
+ void addChild( AMetaObject * c );
+ void removeChild( AMetaObject * c );
public slots:
private:
+ static int v_lastId;
+ AMetaObject *v_parent;
Q_ULONG v_id;
QString v_className;
- QHash <QString, QVariant> v_attr;
- QHash <QString, QString> v_text;
- QHash <QString, QByteArray> v_rawdata;
+ QString v_description;
+ QMap <QString, QVariant> v_attr;
+ QMap <QString, AMetaObject *> v_child;
+};
+
+
+class AMetaGroup: public AMetaObject
+{
+Q_OBJECT
+public:
+ AMetaGroup( const QString &groupname, AMetaObject *parent = 0 )
+ :AMetaObject( groupname, QString::null, parent ){};
+};
+
+
+
+template<class T>
+class AMetaGroupA : public AMetaGroup
+{
+// Q_OBJECT
+public:
+
+ AMetaGroupA( AMetaObject * parent = 0 )
+ :AMetaGroup( "", parent )
+ {
+ };
};
+typedef AMetaGroupA<AMetaObject> AMetaGroupAXXX;
class AMetaCatalogue: public AMetaObject
QString appName();
void setAppName( const QString &name );
- long lastId();
- void setLastId( long id );
+ int lastId();
+ void setLastId( int id );
QString author();
void setAuthor( const QString &name );
QDate date();
/****************************************************************************
-** $Id: ametaobjectgroup.cpp,v 1.2 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaobjectgroup.cpp,v 1.4 2008/12/20 21:17:49 leader Exp $
**
** Code file of the Ananas configuration objects of Ananas
** Designer and Engine applications
/*!
- * \class AMetaObjectGroup
+ * \class AMetaGroup
*
*/
-AMetaObjectGroup::AMetaObjectGroup( const QString &groupname )
-:QObject()
-{
- setObjectName( groupname );
-}
-
-
-
-
-AMetaObjectGroup::AMetaObjectGroup( const QString &groupname, AMetaObject *parent )
-:QObject( parent )
-{
- setObjectName( groupname );
-}
-
-
-AMetaObjectGroup::AMetaObjectGroup( const QString &groupname, AMetaObjectGroup *parent )
-:QObject( parent )
-{
- setObjectName( groupname );
-}
-
-
-QString
-AMetaObjectGroup::name()
-{
- return objectName();
-}
-
-
-
-AMetaObject *
-AMetaObjectGroup::metaObject( const QString &name )
-{
- return findChild<AMetaObject *>( name );
-}
-
-
-
-AMetaObject *
-AMetaObjectGroup::metaObject( int idx )
-{
- return v_metaObjects.at( idx );
-}
-
-
-void
-AMetaObjectGroup::append( AMetaObject *obj )
-{
- obj->setParent( this );
- v_metaObjects.append( obj );
- connect( obj, SIGNAL(destroyed(QObject*)), this, SLOT(destroyed(QObject *)));
-}
-
-
-int
-AMetaObjectGroup::count() const
-{
- return v_metaObjects.count();
-}
-
-
-void
-AMetaObjectGroup::clear()
-{
- v_metaObjects.clear();
-}
-
-
-void
-AMetaObjectGroup::destroyed( QObject *obj )
-{
- if ( obj->inherits("AMetaObject") ){
- v_metaObjects.removeAll( ( AMetaObject *) obj );
- }
-}
-
-
-
-/*!
- * \class ADocumentsGroup
- *
- */
-ADocumentsGroup::ADocumentsGroup()
-:AMetaObjectGroup("Documents")
-{
-
-}
*
*/
ACataloguesGroup::ACataloguesGroup()
-:AMetaObjectGroup("Catalogues")
+:AMetaGroup("Catalogues")
{
}
*
*/
AReportsGroup::AReportsGroup()
-:AMetaObjectGroup("Reports")
+:AMetaGroup("Reports")
{
}
*
*/
AJournalsGroup::AJournalsGroup()
-:AMetaObjectGroup("Journals")
+:AMetaGroup("Journals")
{
}
*
*/
AInfoRegistersGroup::AInfoRegistersGroup()
-:AMetaObjectGroup("InfoRegisters")
+:AMetaGroup("InfoRegisters")
{
}
*
*/
AAccRegistersGroup::AAccRegistersGroup()
-:AMetaObjectGroup("AccRegisters")
+:AMetaGroup("AccRegisters")
{
}
*
*/
AMetaTables::AMetaTables()
-:AMetaObjectGroup("MetaTables")
+:AMetaGroup("MetaTables")
{
}
-/*!
- * \class AMetaForms
- *
- */
-AMetaForms::AMetaForms()
-:AMetaObjectGroup("MetaForms")
-{
-
-}
/****************************************************************************
-** $Id: ametaobjectgroup.h,v 1.2 2008/12/15 22:22:48 leader Exp $
+** $Id: ametaobjectgroup.h,v 1.4 2008/12/20 21:17:49 leader Exp $
**
** Header file of the Ananas configuration objects of Ananas
** Designer and Engine applications
#include <QVariant>
-/*!
- *\en
- * Metadata object for metadata script access.
- *\_en
- *\ru
- * \brief Объект метаданных для обеспечения доступа из скриптов.
- * Наследует QObject.
- *\_ru
- */
-class AMetaObjectGroup: public QObject
-{
-Q_OBJECT
-Q_PROPERTY( QString name READ name SCRIPTABLE true )
-public:
- AMetaObjectGroup( const QString &groupname );
- AMetaObjectGroup( const QString &groupname, AMetaObject *parent );
- AMetaObjectGroup( const QString &groupname, AMetaObjectGroup *parent );
-
- QString name();
-// QMetaObject *metaObject(const QString &objClass, const QString &objName);
-// QMetaObject *metaObject(const QString &objClass, const QString &objName);
- AMetaObject *metaObject( const QString &name );
- AMetaObject *metaObject( int idx );
- void append( AMetaObject *object );
- int count() const;
- void clear();
-
-public slots:
- QString test(){ return QString("TEST STRING");};
-
-private slots:
- void destroyed( QObject *obj );
-
-private:
- QList <AMetaObject *> v_metaObjects;
-};
-
-
-class ACataloguesGroup: public AMetaObjectGroup
+class ACataloguesGroup: public AMetaGroup
{
Q_OBJECT
public:
-class ADocumentsGroup: public AMetaObjectGroup
-{
-Q_OBJECT
-public:
- ADocumentsGroup();
-
-public slots:
- QString test(){ return QString("DOCUMENTS TEST STRING");};
-
-
-};
-
-
-
-class AReportsGroup: public AMetaObjectGroup
+class AReportsGroup: public AMetaGroup
{
Q_OBJECT
public:
-class AJournalsGroup: public AMetaObjectGroup
+class AJournalsGroup: public AMetaGroup
{
Q_OBJECT
public:
-class AInfoRegistersGroup: public AMetaObjectGroup
+class AInfoRegistersGroup: public AMetaGroup
{
Q_OBJECT
public:
-class AAccRegistersGroup: public AMetaObjectGroup
+class AAccRegistersGroup: public AMetaGroup
{
Q_OBJECT
public:
-class AMetaTables: public AMetaObjectGroup
+class AMetaTables: public AMetaGroup
{
Q_OBJECT
public:
-class AMetaForms: public AMetaObjectGroup
-{
-Q_OBJECT
-public:
- AMetaForms();
-
-public slots:
-
-
-};
#endif
/****************************************************************************
-** $Id: testametadata.cpp,v 1.5 2008/12/15 22:22:48 leader Exp $
+** $Id: testametadata.cpp,v 1.8 2008/12/20 21:17:49 leader Exp $
**
** Tool for automatic running Ananas tests
**
o->setAttr("String","String");
o->setAttr("Int", 123456 );
- o->setText("Text", QString::fromUtf8("Проверочный текст"));
- o->setRawdata("RAW1", ba );
- o->setRawdata("RAW2", ba );
+// o->setText("Text", QString::fromUtf8("Проверочный текст"));
+// o->setRawdata("RAW1", ba );
+// o->setRawdata("RAW2", ba );
// Test attr functions
QVERIFY( o->attrCount() == 2 );
QVERIFY( o->attrExists("IntX") == false );
QVERIFY( o->attr("String") == "String" );
QVERIFY( o->attr("Int") == 123456 );
- QVERIFY( o->attr( 0 ) == "String" );
- QVERIFY( o->attr( 1 ) == 123456 );
+ QVERIFY( o->attr( 1 ) == "String" );
+ QVERIFY( o->attr( 0 ) == 123456 );
QVERIFY( o->attr( -1 ) == QVariant() );
QVERIFY( o->attr( 10 ) == QVariant() );
// Test text functions
- QVERIFY( o->textCount() == 1+1 );
- QVERIFY( o->textExists("Text") );
- QVERIFY( o->textExists("Text0") == false );
- QVERIFY( o->text("Text") == QString::fromUtf8("Проверочный текст") );
- QVERIFY( o->text( 1 ) == QString::fromUtf8("Проверочный текст") );
- QVERIFY( o->text( -1 ) == QString::null );
- QVERIFY( o->text( 10 ) == QString::null );
+// QVERIFY( o->textCount() == 1+1 );
+// QVERIFY( o->textExists("Text") );
+// QVERIFY( o->textExists("Text0") == false );
+// QVERIFY( o->text("Text") == QString::fromUtf8("Проверочный текст") );
+// QVERIFY( o->text( 1 ) == QString::fromUtf8("Проверочный текст") );
+// QVERIFY( o->text( -1 ) == QString::null );
+// QVERIFY( o->text( 10 ) == QString::null );
// Test rawdata functions
- QVERIFY( o->rawdataCount() == 2 );
- QVERIFY( o->rawdataExists("RAW1") );
- QVERIFY( o->rawdataExists("RAW2") );
- QVERIFY( o->rawdataExists("RAW3") == false );
- QVERIFY( o->rawdata("RAW1") == QString( ba.data() ) );
- QVERIFY( o->rawdata("RAW2") == QString( ba.data() ) );
- QVERIFY( o->rawdata( 0 ) == QString( ba.data() ) );
- QVERIFY( o->rawdata( 1 ) == QString( ba.data() ) );
- QVERIFY( o->rawdata( -1 ) == QByteArray() );
- QVERIFY( o->rawdata( 10 ) == QByteArray() );
+// QVERIFY( o->rawdataCount() == 2 );
+// QVERIFY( o->rawdataExists("RAW1") );
+// QVERIFY( o->rawdataExists("RAW2") );
+// QVERIFY( o->rawdataExists("RAW3") == false );
+// QVERIFY( o->rawdata("RAW1") == QString( ba.data() ) );
+// QVERIFY( o->rawdata("RAW2") == QString( ba.data() ) );
+// QVERIFY( o->rawdata( 0 ) == QString( ba.data() ) );
+// QVERIFY( o->rawdata( 1 ) == QString( ba.data() ) );
+// QVERIFY( o->rawdata( -1 ) == QByteArray() );
+// QVERIFY( o->rawdata( 10 ) == QByteArray() );
delete o;
}
-void TestAMetaData::testAMetaObjectGroup()
+void TestAMetaData::testAMetaGroup()
{
- AMetaObjectGroup *o = new AMetaObjectGroup( QString::fromUtf8("ИмяОбъекта") );
+ AMetaGroup *o = new AMetaGroup( QString::fromUtf8("ИмяОбъекта") );
- QCOMPARE( o->name(), QString::fromUtf8("ИмяОбъекта"));
+ AMetaGroupAXXX oo;
+ printf("xxx=%s\n", oo.className().toUtf8().data() );
+
+
+ QCOMPARE( o->className(), QString::fromUtf8("ИмяОбъекта"));
+ QCOMPARE( o->name(), QString("") );
delete o;
+
}
void TestAMetaData::testAMetaData()
{
AMetaData *o = new AMetaData();
- QCOMPARE( o->name(), QString("MetaData") );
+ AMetaObject::setLastId( 101 );
+ QCOMPARE( o->className(), QString("MetaData") );
+ QCOMPARE( AMetaObject::lastId(), 101 );
+ QCOMPARE( AMetaObject::lastId(), 102 );
+ QCOMPARE( o->childCount(), 8 );
delete o;
}
{
AMetaDataIOXML *o = new AMetaDataIOXML();
QString xml;
-
+
+ AMetaData *md = AMetaData::metadata();
+ AMetaDocument *d = md->documents()->newDocument();
+ AMetaField *f;
+ f = d->fields()->newField();
+ f = d->fields()->newField();
+
+// delete d;
QCOMPARE( o->write("test.cfg"), 0 );
QCOMPARE( o->read("test1.cfg"), 0 );
xml = o->text();
/****************************************************************************
-** $Id: testametadata.h,v 1.5 2008/12/15 22:22:48 leader Exp $
+** $Id: testametadata.h,v 1.6 2008/12/20 21:17:49 leader Exp $
**
** Tool for automatic running Ananas tests
**
// void toUpper();
void testAMetaObject();
- void testAMetaObjectGroup();
+ void testAMetaGroup();
void testAMetaData();
void testAMetaField();
void testAMetaDataIOXML();