Engauge Digitizer  2
FileCmdFactory.cpp
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "EngaugeAssert.h"
8 #include "FileCmdClose.h"
9 #include "FileCmdExport.h"
10 #include "FileCmdImport.h"
11 #include "FileCmdOpen.h"
12 #include "FileCmdFactory.h"
13 #include "FileCmdSerialize.h"
14 #include <QXmlStreamReader>
15 #include "Xml.h"
16 
18 {
19 }
20 
21 FileCmdFactory::~FileCmdFactory()
22 {
23 }
24 
25 FileCmdAbstract *FileCmdFactory::createFileCmd (QXmlStreamReader &reader) const
26 {
27  FileCmdAbstract *cmd = 0;
28 
29  QXmlStreamAttributes attributes = reader.attributes();
30  if (!attributes.hasAttribute (FILE_CMD_SERIALIZE_CMD_TYPE)) {
31  xmlExitWithError (reader,
32  QString ("Missing attribute %1").arg (FILE_CMD_SERIALIZE_CMD_TYPE));
33  }
34 
35  // Get common attributes
36  QString cmdType = attributes.value (FILE_CMD_SERIALIZE_CMD_TYPE).toString();
37 
38  if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_CLOSE) {
39  cmd = new FileCmdClose (reader);
40  } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_EXPORT) {
41  cmd = new FileCmdExport (reader);
42  } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_IMPORT) {
43  cmd = new FileCmdImport (reader);
44  } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_OPEN) {
45  cmd = new FileCmdOpen (reader);
46  } else {
47 
48  // Invalid xml
49  ENGAUGE_ASSERT (false);
50 
51  }
52 
53  return cmd;
54 }
55 
Command for opening a file.
Definition: FileCmdOpen.h:15
Command for importing a file.
Definition: FileCmdImport.h:15
FileCmdFactory()
Single constructor.
Command for closing a file.
Definition: FileCmdClose.h:15
Base class for &#39;file commands&#39; that are used specifically for regression testing of file import/open/...
FileCmdAbstract * createFileCmd(QXmlStreamReader &reader) const
Create one FileCmdAbstract from the specified xml subtree.
Command for exporting a file.
Definition: FileCmdExport.h:15