#include<iostream>
#include<vector>
+#include<map>
-#include"modelCDMFolder.h"
+#include "modelCDMFolder.h"
+#include "modelCDMFile.h"
+/**
+ * Class representing an application in a Crea project. An Application is an stand alone application that uses the project libraries to show their functionalities.
+ */
class modelCDMApplication : public modelCDMFolder
{
public:
+ /**
+ * Default Constructor.
+ */
modelCDMApplication();
- modelCDMApplication(const std::string& path, const int& level = 2);
+ /**
+ * Application Constructor
+ * @param parent Parent node of the application node.
+ * @param path Full path of the application node.
+ * @param name Name of the applcation folder node.
+ * @param level Level of the application node folder in the project.
+ */
+ modelCDMApplication(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const int& level = 2);
+ /**
+ * Destructor.
+ */
~modelCDMApplication();
- const std::string& GetNameApplication() const;
- const std::string& GetMainFile() const;
+ /**
+ * Returns the executable name of the application node
+ * @return
+ */
+ const std::string& GetExecutableName() const;
+ /**
+ * Returns the main source file of the application node. That is, the file that contains the main method.
+ * @return File reference to main file.
+ */
+ modelCDMFile* GetMainFile() const;
+
+ /**
+ * Sets the executable name for the application.
+ * @param fileName Name of the application executable.
+ * @param result Result message.
+ * @return True if the operation was successful.
+ */
+ bool SetExecutableName(const std::string& fileName, std::string*& result);
- void SetMainFile(const std::string& fileName);
+ /**
+ * Creates a folder in the application folder node. This takes effect in the system as well as in the project model.
+ * @param name Name of the new folder.
+ * @param result Result message.
+ * @return True if the operation was successful.
+ */
+ modelCDMFolder* CreateFolder(const std::string& name, std::string*& result);
- bool CreateFolder(
- const std::string& name,
- std::string*& result,
- const std::string& path = "/"
- );
- bool OpenCMakeListsFile(std::string* & result);
+ /**
+ * Refreshes the structure of the application. Removes folders and files deleted since the last refresh. Also, adds folders and files created since the las refresh.
+ * @param result Result message.
+ * @return True if the operation was successful.
+ */
virtual const bool Refresh(std::string*& result);
+ /**
+ * Checks the CMakeLists file and the application structure to identify registration errors before compiling the project.
+ * @param properties Properties found in the structure.
+ */
+ void CheckStructure(std::map<std::string, bool>& properties);
+
private:
- std::string nameApplication;
- std::string mainFile;
- std::vector<modelCDMApplication*> applications;
+ /**
+ * Name of the application executable file.
+ */
+ std::string executableName;
+ /**
+ * Reference to the main file of the application.
+ */
+ modelCDMFile* mainFile;
+ /**
+ * Reference array of the children folders of the application.
+ */
+ std::vector<modelCDMFolder*> folders;
};
#endif /* MODELCDMAPPLICATION_H_ */