}
}
-// TODO: apply better polymorphism
-ModeParser* ModeManager::getModeParser(const string &path)
+void ModeManager::addModeAttributes(ModeXMLParser &parser, const string &path)
{
- const size_t suffixLen = sizeof("xml") - 1;
- if (suffixLen < path.length()
- || path.compare(path.length() - suffixLen, suffixLen, "xml")) {
- return new ModeXMLParser(path, ruleMgr);
- } else {
- ERR("Wrong path(%s)", path.c_str());
- throw std::invalid_argument("Wrong path");
- }
-}
-
-void ModeManager::addModeAttributes(ModeParser *parser, const string &path)
-{
- Mode mode = parser->getMode();
- modeMap.insert(std::make_pair(mode.getName(), std::make_tuple(path, mode.getModeType(), mode.isHidden())));
+ Mode mode = parser.getMode();
+ auto infos = std::make_tuple(path, mode.getModeType(), mode.isHidden());
+ modeMap.insert(std::make_pair(mode.getName(), infos));
if (careTaker.hasUndoInfo(mode.getName()))
careTaker.restoreMode(mode);
- DBG("[%zu] modeName : %s, modePath : %s, type : %d, hidden : %s", modeMap.size(), mode.getName().c_str(), path.c_str(), mode.getModeType(), mode.isHidden()? "true": "false");
+ DBG("[%zu]Name(%s), Path(%s), Type(%d), hidden(%s)", modeMap.size(), mode.getName().c_str(),
+ path.c_str(), mode.getModeType(), mode.isHidden() ? "true": "false");
}
int ModeManager::applyMode(const string &modeName, ClientPrivilege &priv, bool isTest)
DBG("applyMode(%s)", path.c_str());
try {
- std::unique_ptr<ModeParser> parser(getModeParser(path));
- Mode mode = parser->getMode();
+ ModeXMLParser parser(path, ruleMgr);
+ Mode mode = parser.getMode();
DBG("applyMode(%s) Run", mode.getName().c_str());
int ModeManager::addMode(const Mode &mode)
{
- string filename = MODES_CUSTOM_MODE_DEFAULT_DIR "/tizen_" + mode.getName() + "_mode.xml";
+ string path = MODES_CUSTOM_MODE_DEFAULT_DIR "/tizen_" + mode.getName() + "_mode.xml";
XMLGenerator xmlWriter;
- auto element = std::make_pair(mode.getName(), std::make_tuple(filename, mode.getModeType(), false));
+ auto element = std::make_pair(mode.getName(), std::make_tuple(path, mode.getModeType(), false));
auto result = modeMap.insert(element);
if (false == result.second) {
ERR("Invalid mode(%s), already exists", mode.getName().c_str());
}
try {
- xmlWriter.makeModeXML(filename, mode);
+ xmlWriter.makeModeXML(path, mode);
} catch (ModesEx &e) {
ERR("XML generator Fail(%s)", e.what());
modeMap.erase(result.first);
return MODES_ERROR_INVALID_PARAMETER;
}
- DBG("[%zu] addMode modeName : %s, modePath : %s, type : %d, hidden : false", modeMap.size(), mode.getName().c_str(), filename.c_str(), mode.getModeType());
+ DBG("[%zu]addMode : Name(%s), Path(%s), Type(%d)", modeMap.size(), mode.getName().c_str(),
+ path.c_str(), mode.getModeType());
return MODES_ERROR_NONE;
}
return MODES_ERROR_INVALID_PARAMETER;
}
- string filename = std::get<0>(result->second);
- if (string::npos == filename.find(MODES_CUSTOM_MODE_DEFAULT_DIR))
- {
+ string path = std::get<0>(result->second);
+ if (string::npos == path.find(MODES_CUSTOM_MODE_DEFAULT_DIR)) {
ERR("Invalid mode(%s), custom mode only can be removed.", modeName.c_str());
return MODES_ERROR_INVALID_PARAMETER;
}
modeMap.erase(result);
- if (0 != remove(filename.c_str()))
- ERR("remove(%s) Fail(%d)", filename.c_str(), errno);
+ if (0 != remove(path.c_str()))
+ ERR("remove(%s) Fail(%d)", path.c_str(), errno);
- DBG("[%zu] Remove modeName : %s, modePath : %s", modeMap.size(), modeName.c_str(), filename.c_str());
+ DBG("[%zu]removeMode : Name(%s), Path(%s)", modeMap.size(), modeName.c_str(), path.c_str());
return MODES_ERROR_NONE;
}
string fileFullPath = dirPath + "/" + string(entry->d_name);
try {
- ModeParser *modeParser = getModeParser(fileFullPath);
- modeParser->validateMode(modeSyntaxFile);
+ ModeXMLParser modeParser(fileFullPath, ruleMgr);
+ modeParser.validateMode(modeSyntaxFile);
addModeAttributes(modeParser, fileFullPath);
- delete modeParser;
} catch (ModesEx &e) {
ERR("parser(%s) Fail(%s)", fileFullPath.c_str(), e.what());
} catch (std::invalid_argument &e) {