//implement enums
QStringList k=cls.enumTypes();
for(int i=0;i<k.size();i++){
+ code+="//enum "+k[i]+"\n";
QList<QPair<QString,int> >ev=cls.enumValues(k[i]);
for(int j=0;j<ev.size();j++)
code+="const "+ev[j].first+"="+QString::number(ev[j].second)+";\n";
//implement de-serializer
code+="\nstatic function fromString($txt){\n\t$xml=new DomDocument;\n";
- code+="\t$xml->loadXml(trim($txt));\n\treturn self::fromXml($xml,$xml->documentElement);\n}\n";
+ code+="\tif(!$xml->loadXml(trim($txt)))";
+ code+="\n\t\tthrow WobXmlException(\"Unable to deserialize object of type "+cn+".\");";
+ code+="\n\treturn self::fromXml($xml,$xml->documentElement);\n}\n";
code+="static function fromXml($xml,$elem){\n\t$data=array();\n";
k=cls.propertyNames();
for(int i=0;i<k.size();i++){
code+="\n//end of class\n};\n";
- //write & close
tf.write(code.toAscii());
tf.write(PHPEND);
tf.close();
return false;
}
-bool WocClass::isAbstract()const
-{
- for(int i=0;i<m_props.size();i++)
- if(m_props[i].isabstract)return true;
- return m_abstract;
-}
-
QStringList WocClass::propertyNames()const
{
QStringList r;
QString WocClass::propertyType(QString p)const
{
for(int i=0;i<m_props.size();i++)
- if(p==m_props[i].name)
- return m_props[i].type;
+ if(m_props[i].name==p)return m_props[i].type;
return "";
}
-bool WocClass::propertyIsId(QString p)const
+bool WocClass::propertyIsIdentity(QString p)const
{
for(int i=0;i<m_props.size();i++)
- if(p==m_props[i].name)
- return m_props[i].isid;
+ if(m_props[i].name==p)return m_props[i].isid;
return false;
}
bool WocClass::propertyIsAbstract(QString p)const
{
for(int i=0;i<m_props.size();i++)
- if(p==m_props[i].name)
- return m_props[i].isabstract;
+ if(m_props[i].name==p)return m_props[i].isabstract;
return false;
}
+bool WocClass::isAbstract()const
+{
+ for(int i=0;i<m_props.size();i++)
+ if(m_props[i].isabstract)return true;
+ return m_abstract;
+}
+
/******************************************************************************
* WocTable
bool hasProperty(QString)const;
QStringList propertyNames()const;
QString propertyType(QString)const;
- bool propertyIsId(QString)const;
+ bool propertyIsIdentity(QString)const;
bool propertyIsAbstract(QString)const;
bool isAbstract()const;
QList<s_prop> m_props;
QMap<QString,QList<QPair<QString,QString> > >m_maps;
QMap<QString,QList<QPair<QString,int> > >m_enumvals;
- QMap<QString,QStringList>m_serial;
+ QMap<QString,QStringList> m_serial;
};
class WocTable
$AUTOCLASS["WobTable"]="inc/wbase/table.php";
$AUTOCLASS["WobSchemaBase"]="inc/wbase/schema.php";
+$AUTOCLASS["WobXmlException"]="inc/wbase/exception.php";
$AUTOCLASS["WObject"]="inc/wbase/object.php";
function __autoload($cname)
--- /dev/null
+<?
+//
+// PHP Implementation: exception
+//
+// Description:
+//
+//
+// Author: Konrad Rosenbaum <konrad@silmor.de>, (C) 2009
+//
+// Copyright: See README/COPYING files that come with this distribution
+//
+//
+
+class WobXmlException extends Exception {};
+
+?>
\ No newline at end of file