00001
00002
00003
00004
00005
00006
00007 #include "EngaugeAssert.h"
00008 #include "FileCmdClose.h"
00009 #include "FileCmdExport.h"
00010 #include "FileCmdImport.h"
00011 #include "FileCmdOpen.h"
00012 #include "FileCmdFactory.h"
00013 #include "FileCmdSerialize.h"
00014 #include <QXmlStreamReader>
00015 #include "Xml.h"
00016
00017 FileCmdFactory::FileCmdFactory()
00018 {
00019 }
00020
00021 FileCmdFactory::~FileCmdFactory()
00022 {
00023 }
00024
00025 FileCmdAbstract *FileCmdFactory::createFileCmd (QXmlStreamReader &reader) const
00026 {
00027 FileCmdAbstract *cmd = 0;
00028
00029 QXmlStreamAttributes attributes = reader.attributes();
00030 if (!attributes.hasAttribute (FILE_CMD_SERIALIZE_CMD_TYPE)) {
00031 xmlExitWithError (reader,
00032 QString ("Missing attribute %1").arg (FILE_CMD_SERIALIZE_CMD_TYPE));
00033 }
00034
00035
00036 QString cmdType = attributes.value (FILE_CMD_SERIALIZE_CMD_TYPE).toString();
00037
00038 if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_CLOSE) {
00039 cmd = new FileCmdClose (reader);
00040 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_EXPORT) {
00041 cmd = new FileCmdExport (reader);
00042 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_IMPORT) {
00043 cmd = new FileCmdImport (reader);
00044 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_OPEN) {
00045 cmd = new FileCmdOpen (reader);
00046 } else {
00047
00048
00049 ENGAUGE_ASSERT (false);
00050
00051 }
00052
00053 return cmd;
00054 }
00055