⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formatter.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    //
    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 + -