📄 formatter.cpp
字号:
//
if (target->getFilter()) {
filter = getFilter(target->getFilter());
s->append(filter);
}
if (NotZeroStringBufferLenght(1, s)) {
delete ret; ret = NULL;
ret = getValue(TARGET, s);
}
deleteAllStringBuffer(2, &s, &filter);
return ret;
}
StringBuffer* Formatter::getSessionID(SessionID* sessionID) {
if (!sessionID)
return NULL;
StringBuffer* s = NULL;
s = getValue(SESSION_ID, sessionID->getSessionID());
return s;
}
StringBuffer* Formatter::getVerDTD(VerDTD* verDTD) {
if (!verDTD)
return NULL;
StringBuffer* s = NULL;
s = getValue(VER_DTD, verDTD->getValue());
return s;
}
StringBuffer* Formatter::getCmdID(CmdID* cmdID) {
if (!cmdID)
return NULL;
StringBuffer* s = NULL;
s = getValue(CMD_ID, cmdID->getCmdID());
return s;
}
StringBuffer* Formatter::getVerProto(VerProto* verProto) {
if (!verProto)
return NULL;
StringBuffer* s = NULL;
s = getValue(VER_PROTO, verProto->getVersion());
return s;
}
/*
* Used to retrieve the extra command list that are
* Exec
* Alert
* Get
* Map
*/
StringBuffer* Formatter::getExtraCommandList(ArrayList* commands) {
StringBuffer* s = NULL;
StringBuffer* exec = NULL;
StringBuffer* map = NULL;
StringBuffer* alert = NULL;
StringBuffer* get = NULL;
const char* name = NULL;
StringBuffer* tmp = NULL;
/*
* Use the name of the command to get the proper action to invoke
*/
for (int i = 0; i < commands->size(); i++) {
name = ((AbstractCommand*)(commands->get(i)))->getName();
if (name && strcmp(name, EXEC) == 0) {
if (!exec) {
exec = new StringBuffer();
}
tmp = getExec((Exec*)commands->get(i));
exec->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, ALERT) == 0) {
if (!alert) {
alert = new StringBuffer();
}
tmp = getAlert((Alert*)commands->get(i));
alert->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, GET) == 0) {
if (!get) {
get = new StringBuffer();
}
tmp = getGet((Get*)commands->get(i));
get->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, MAP) == 0) {
if (!map) {
map = new StringBuffer();
}
tmp = getMap((Map*)commands->get(i));
map->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
}
}
if (NotZeroStringBufferLenght(4, exec, map, alert, get)) {
s = new StringBuffer();
s->append(exec);
s->append(map);
s->append(alert);
s->append(get);
}
deleteAllStringBuffer(4, &exec, &map, &alert, &get);
return s;
}
/*
* Used to retrieve the common command list that are
* Add
* Replace
* Copy
* Delete
*/
StringBuffer* Formatter::getCommonCommandList(ArrayList* commands) {
StringBuffer* s = NULL;
StringBuffer* adds = NULL;
StringBuffer* dels = NULL;
StringBuffer* replaces = NULL;
StringBuffer* copies = NULL;
const char* name = NULL;
StringBuffer* tmp = NULL;
/*
* Use the name of the command to get the proper action to invoke
*/
for (int i = 0; i < commands->size(); i++) {
name = ((AbstractCommand*)(commands->get(i)))->getName();
if (name && strcmp(name, COPY) == 0) {
if (!copies) {
copies = new StringBuffer();
}
tmp = getCopy((Copy*)commands->get(i));
copies->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, ADD) == 0) {
if (!adds) {
adds = new StringBuffer();
}
tmp = getAdd((Add*)commands->get(i));
adds->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, DEL) == 0) {
if (!dels) {
dels = new StringBuffer();
}
tmp = getDelete((Delete*)commands->get(i));
dels->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, REPLACE) == 0) {
if (!replaces) {
replaces = new StringBuffer();
}
tmp = getReplace((Replace*)commands->get(i));
replaces->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
}
}
if (NotZeroStringBufferLenght(4, copies, adds, replaces, dels)) {
s = new StringBuffer();
s->append(copies);
s->append(adds);
s->append(replaces);
s->append(dels);
}
deleteAllStringBuffer(4, &copies, &adds, &replaces, &dels);
return s;
}
/*
* Used to retrieve a specific command like SYNC or ATOMIC or SEQUENCE
*/
StringBuffer* Formatter::getSpecificCommand(ArrayList* commands, const char*commandName) {
StringBuffer* s = NULL;
StringBuffer* ret = NULL;
const char* name = NULL;
StringBuffer* tmp = NULL;
/*
* Use the name of the command to get the proper action to invoke
*/
for (int i = 0; i < commands->size(); i++) {
name = ((AbstractCommand*)(commands->get(i)))->getName();
if (name && strcmp(name, SYNC) == 0 && strcmp(SYNC, commandName) == 0) {
if (!ret) {
ret = new StringBuffer();
}
tmp = getSync((Sync*)commands->get(i));
ret->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, ATOMIC) == 0 && strcmp(ATOMIC, commandName) == 0) {
if (!ret) {
ret = new StringBuffer();
}
tmp = getAtomic((Atomic*)commands->get(i));
ret->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, SEQUENCE) == 0 && strcmp(SEQUENCE, commandName) == 0) {
if (!ret) {
ret = new StringBuffer();
}
tmp = getSequence((Sequence*)commands->get(i));
ret->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
}
}
if (NotZeroStringBufferLenght(1, ret)) {
s = new StringBuffer();
s->append(ret);
}
deleteAllStringBuffer(1, &ret);
return s;
}
StringBuffer* Formatter::getSyncBody(SyncBody* syncBody) {
StringBuffer* ret = NULL;
StringBuffer* s = NULL;
ArrayList* commands = NULL;
const char* name = NULL;
StringBuffer* alerts = NULL;
StringBuffer* statusArray = NULL;
StringBuffer* sync = NULL;
StringBuffer* commonCommandList = NULL;
StringBuffer* map = NULL;
StringBuffer* exec = NULL;
StringBuffer* get = NULL;
StringBuffer* put = NULL;
StringBuffer* results = NULL;
StringBuffer* search = NULL;
StringBuffer* sequence = NULL;
StringBuffer* atomic = NULL;
StringBuffer* finalMessage = NULL;
commands = syncBody->getCommands();
StringBuffer* tmp = NULL;
/*
* Use the name of the command to get the proper action to invoke
*/
for (int i = 0; i < commands->size(); i++) {
name = ((AbstractCommand*)(commands->get(i)))->getName();
if (name && strcmp(name, STATUS) == 0) {
if (!statusArray) {
statusArray = new StringBuffer();
}
tmp = getStatus((Status*)commands->get(i));
statusArray->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, ALERT) == 0) {
if (!alerts) {
alerts = new StringBuffer();
}
tmp = getAlert((Alert*)commands->get(i));
alerts->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, SYNC) == 0) {
if (!sync) {
sync = new StringBuffer();
}
tmp = getSync((Sync*)commands->get(i));
sync->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, MAP) == 0) {
if (!map) {
map = new StringBuffer();
}
tmp = getMap((Map*)commands->get(i));
map->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, EXEC) == 0) {
if (!exec) {
exec = new StringBuffer();
}
tmp = getExec((Exec*)commands->get(i));
exec->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, GET) == 0) {
if (!get) {
get = new StringBuffer();
}
tmp = getGet((Get*)commands->get(i));
get->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, RESULTS) == 0) {
if (!results) {
results = new StringBuffer();
}
tmp = getResults((Results*)commands->get(i));
results->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, PUT) == 0) {
if (!put) {
put = new StringBuffer();
}
tmp = getPut((Put*)commands->get(i));
put->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, SEARCH) == 0) {
if (!search) {
search = new StringBuffer();
}
tmp = getSearch((Search*)commands->get(i));
search->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, SEQUENCE) == 0) {
if (!sequence) {
sequence = new StringBuffer();
}
tmp = getSequence((Sequence*)commands->get(i));
sequence->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
} else if (name && strcmp(name, ATOMIC) == 0) {
if (!atomic) {
atomic = new StringBuffer();
}
tmp = getAtomic((Atomic*)commands->get(i));
atomic->append(tmp);
if (tmp) { delete tmp; tmp = NULL; }
}
}
//
// get the common command copy, add, delete, replace
//
commonCommandList = getCommonCommandList(commands);
finalMessage = getValue(FINAL_MSG, syncBody->getFinalMsg());
if (finalMessage || NotZeroStringBufferLenght(11, alerts, commonCommandList, statusArray, sync, map,
exec, get, put, results, search, sequence)) {
s = new StringBuffer();
s->append(statusArray);
s->append(alerts);
s->append(atomic);
s->append(exec);
s->append(get);
s->append(map);
s->append(put);
s->append(results);
s->append(search);
s->append(sequence);
s->append(sync);
s->append(commonCommandList);
s->append(finalMessage);
}
ret = getValue(SYNC_BODY, s);
deleteAllStringBuffer(12, &s, &alerts, &finalMessage, &statusArray, &sync, &map, &exec, &get, &put, &results, &search, &sequence);
return ret;
}
StringBuffer* Formatter::getSearch(Search* search) {
if (!search)
return NULL;
StringBuffer* ret = NULL;
StringBuffer* s = NULL;
StringBuffer* cmdID = NULL;
StringBuffer* cred = NULL;
StringBuffer* meta = NULL;
StringBuffer* noResp = NULL;
StringBuffer* noResults = NULL;
StringBuffer* lang = NULL;
StringBuffer* data = NULL;
StringBuffer* target = NULL;
StringBuffer* sources = NULL;
cmdID = getCmdID (search->getCmdID());
cred = getCred (search->getCred());
meta = getMeta (search->getMeta());
noResp = getValue (NO_RESP, search->getNoResp());
noResults = getValue (NO_RESULTS, search->getNoResults());
lang = getValue (LANG, search->getLang());
data = getData (search->getData());
target = getTarget (search->getTarget());
sources = getSources (search->getSources());
if (NotZeroStringBufferLenght(9, cmdID, cred, meta, noResults, noResp, lang, data, target, sources)) {
s = new StringBuffer();
s->append(cmdID);
s->append(noResp);
s->append(noResults);
s->append(cred);
s->append(target);
s->append(sources);
s->append(lang);
s->append(meta);
s->append(data);
}
ret = getValue(SEARCH, s);
deleteAllStringBuffer(10, &s, &cred, &cmdID, &meta, &noResults, &noResp, &lang, &data, &target, &sources);
return ret;
}
StringBuffer* Formatter::getGet(Get* get) {
if (!get)
return NULL;
StringBuffer* ret = NULL;
StringBuffer* s = NULL;
StringBuffer* cmdID = NULL;
StringBuffer* cred = NULL;
StringBuffer* meta = NULL;
StringBuffer* items = NULL;
StringBuffer* noResp = NULL;
StringBuffer* lang = NULL;
cmdID = getCmdID (get->getCmdID());
cred = getCred (get->getCred());
meta = getMeta (get->getMeta());
items = getItems (get->getItems());
noResp = getValue (NO_RESP, get->getNoResp());
lang = getValue (LANG, get->getNoResp());
if (NotZeroStringBufferLenght(6, cmdID, cred, meta, items, noResp, lang)) {
s = new StringBuffer();
s->append(cmdID);
s->append(noResp);
s->append(lang);
s->append(cred);
s->append(meta);
s->append(items);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -