formatter.cpp

来自「funambol window mobile客户端源代码」· C++ 代码 · 共 2,229 行 · 第 1/5 页

CPP
2,229
字号
    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer* cmdID     = NULL;
    StringBuffer* cred      = NULL;
    StringBuffer* meta      = NULL;
    StringBuffer* items     = NULL;
    StringBuffer* noResp    = NULL;
    StringBuffer* archive   = NULL;
    StringBuffer* sftdel    = NULL;

    cmdID     = getCmdID   (del->getCmdID());
    cred      = getCred    (del->getCred());
    meta      = getMeta    (del->getMeta());
    items     = getItems   (del->getItems());
    noResp    = getValue   (NO_RESP, del->getNoResp());
    archive   = getValue   (ARCHIVE, del->getArchive());
    sftdel    = getValue   (SFT_DEL, del->getSftDel());

    if (NotZeroStringBufferLenght(7, cmdID, cred, meta, items, noResp, sftdel, archive)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(noResp);
        s->append(archive);
        s->append(sftdel);
        s->append(cred);
        s->append(meta);
        s->append(items);
    }

    ret = getValue(DEL, s);
    deleteAllStringBuffer(8, &s, &cred, &cmdID, &meta, &items, &noResp, &sftdel, &archive);

    return ret;
}


/*
* Returns a series of
*  <Add> ... </Add>
*  <Add> ... </Add>
*  <Add> ... </Add>
*
*  The root is <SyncBody>
*/
StringBuffer* Formatter::getAdds(ArrayList* adds) {

    if (!adds || !NotZeroArrayLenght(1, adds))
        return NULL;

    StringBuffer* ret = new StringBuffer();

    for (int i = 0; i < adds->size(); i++) {
        ret->append(getAdd(((Add*)adds->get(i))));
    }
    return ret;
}

StringBuffer* Formatter::getAdd(Add* add) {

    if (!add)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer* cmdID     = NULL;
    StringBuffer* cred      = NULL;
    StringBuffer* meta      = NULL;
    StringBuffer* items     = NULL;
    StringBuffer* noResp    = NULL;

    cmdID     = getCmdID   (add->getCmdID());
    cred      = getCred    (add->getCred());
    meta      = getMeta    (add->getMeta());
    items     = getItems   (add->getItems());
    noResp    = getValue   (NO_RESP, add->getNoResp());

    if (NotZeroStringBufferLenght(5, cmdID, cred, meta, items, noResp)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(noResp);
        s->append(cred);
        s->append(meta);
        s->append(items);
    }

    ret = getValue(ADD, s);
    deleteAllStringBuffer(6, &s, &cred, &cmdID, &meta, &items, &noResp);

    return ret;
}

StringBuffer* Formatter::getPut(Put* put) {

    if (!put)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*        cmdID  = NULL;
    StringBuffer*        meta   = NULL;
    StringBuffer*        items  = NULL;
    StringBuffer*        cred   = NULL;
    StringBuffer*        noResp = NULL;
    StringBuffer*        lang   = NULL;

    cmdID     = getCmdID   (put->getCmdID());
    noResp    = getValue   (NO_RESP, put->getNoResp());
    lang      = getValue   (LANG, put->getLang());
    cred      = getCred    (put->getCred());
    meta      = getMeta    (put->getMeta());
    items     = getItems   (put->getItems());

    if (NotZeroStringBufferLenght(6, cmdID, lang, meta, items, cred, noResp)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(noResp);
        s->append(lang);
        s->append(cred);
        s->append(meta);
        s->append(items);
    }

    ret = getValue(PUT, s);
    deleteAllStringBuffer(7, &s, &cmdID, &items, &cred, &lang, &meta, &noResp);

    return ret;
}

StringBuffer* Formatter::getResults(Results* results) {

    if (!results)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*        cmdID  = NULL;
    StringBuffer*        msgRef = NULL;
    StringBuffer*        cmdRef = NULL;
    StringBuffer*        meta   = NULL;
    StringBuffer*        items  = NULL;
    StringBuffer*        targetRefs  = NULL;
    StringBuffer*        sourceRefs  = NULL;

    cmdID     = getCmdID   (results->getCmdID());
    msgRef    = getValue   (MSG_REF, results->getMsgRef());
    cmdRef    = getValue   (CMD_REF, results->getCmdRef());
    meta      = getMeta    (results->getMeta());
    items     = getItems   (results->getItems());
    sourceRefs = getSourceRefs(results->getSourceRef());
    targetRefs = getTargetRefs(results->getTargetRef());

    if (NotZeroStringBufferLenght(7, cmdID, msgRef, cmdRef, meta, items, sourceRefs, targetRefs)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(msgRef);
        s->append(cmdRef);
        s->append(meta);
        s->append(targetRefs);
        s->append(sourceRefs);
        s->append(items);
    }

    ret = getValue(RESULTS, s);
    deleteAllStringBuffer(8, &s, &cmdID, &items, &msgRef, &cmdRef, &meta, &sourceRefs, &targetRefs);

    return ret;
}

/*
* Returns a series of
*  <Status> ... </Status>
*  <Status> ... </Status>
*  <Status> ... </Status>
*
*/
StringBuffer* Formatter::getStatusArray(ArrayList* statusArray) {

    if (!statusArray || !NotZeroArrayLenght(1, statusArray))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < statusArray->size(); i++) {
        tmp = getStatus(((Status*)statusArray->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getStatus(Status* status) {

    if (!status)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*        cmdID  = NULL;
    StringBuffer*        msgRef = NULL;
    StringBuffer*        cmdRef = NULL;
    StringBuffer*        cmd    = NULL;
    StringBuffer*        cred   = NULL;
    StringBuffer*        items  = NULL;
    StringBuffer*        targetRefs  = NULL;
    StringBuffer*        sourceRefs  = NULL;
    StringBuffer*        data        = NULL;
    StringBuffer*        chal        = NULL;

    cmdID     = getCmdID   (status->getCmdID());
    msgRef    = getValue   (MSG_REF, status->getMsgRef());
    cmdRef    = getValue   (CMD_REF, status->getCmdRef());
    cmd       = getValue   (CMD     , status->getCmd());
    items     = getItems   (status->getItems());
    cred      = getCred    (status->getCred());
    sourceRefs = getSourceRefs(status->getSourceRef());
    targetRefs = getTargetRefs(status->getTargetRef());
    chal      = getChal(status->getChal());
    data      = getData   (status->getData());

    if (NotZeroStringBufferLenght(10, cmdID, msgRef, cmdRef, cmd, cred, data, items, sourceRefs, targetRefs, chal)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(msgRef);
        s->append(cmdRef);
        s->append(cmd);
        s->append(targetRefs);
        s->append(sourceRefs);
        s->append(cred);
        s->append(chal);
        s->append(data);
        s->append(items);
    }

    ret = getValue(STATUS, s);
    deleteAllStringBuffer(11, &s, &cred, &cmdID, &data, &items, &msgRef, &cmdRef, &cmd, &sourceRefs, &targetRefs, &chal);

    return ret;
}

StringBuffer* Formatter::getChal(Chal* chal) {
    if (!chal)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer* meta     = getMeta   (chal->getMeta());

    if (NotZeroStringBufferLenght(1, meta)) {
        s = new StringBuffer();
        s->append(meta);
    }

    ret = getValue(CHAL, s);
    deleteAllStringBuffer(2, &s, &meta);

    return ret;

}

/*
* Returns a series of
*  <Alert> ... </Alert>
*  <Alert> ... </Alert>
*  <Alert> ... </Alert>
*
*  The root is <SyncBody>
*/
StringBuffer* Formatter::getAlerts(ArrayList* alerts) {

    if (!alerts || !NotZeroArrayLenght(1, alerts))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < alerts->size(); i++) {
        tmp = getAlert(((Alert*)alerts->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getAlert(Alert* alert) {

    if (!alert)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer* cmdID     = getCmdID   (alert->getCmdID());
    StringBuffer* cred      = getCred    (alert->getCred());
    StringBuffer* data      = getValue   (DATA, (long)alert->getData());
    StringBuffer* items     = getItems   (alert->getItems());
    StringBuffer* noResp    = getValue   (NO_RESP, alert->getNoResp());

    if (NotZeroStringBufferLenght(5, cmdID, cred, data, items, noResp)) {
        s = new StringBuffer();
        s->append(cmdID);
        s->append(noResp);
        s->append(cred);
        s->append(data);
        s->append(items);
    }

    ret = getValue(ALERT, s);
    deleteAllStringBuffer(6, &s, &cred, &cmdID, &data, &items, &noResp);

    return ret;
}

/*
* Returns a series of
*  <Item> ... </Item>
*  <Item> ... </Item>
*  <Item> ... </Item>
*
*/
StringBuffer* Formatter::getItems(ArrayList* items) {

    if (!items || !NotZeroArrayLenght(1, items))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < items->size(); i++) {
        tmp = getItem(((Item*)items->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getItem(Item* item) {

    if (!item)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*      target   = NULL;
    StringBuffer*      source   = NULL;
    StringBuffer*      meta     = NULL;
    StringBuffer*      data     = NULL;
    StringBuffer*      moreData = NULL;
    StringBuffer*      targetParent = NULL;
    StringBuffer*      sourceParent = NULL;



    target    = getTarget   (item->getTarget());
    source    = getSource   (item->getSource());
    meta      = getMeta     (item->getMeta());
    data      = getData     (item->getData());
    moreData  = getValue    (MORE_DATA, item->getMoreData());
    targetParent  = getValue    (TARGET_PARENT, item->getTargetParent());
    sourceParent  = getValue    (SOURCE_PARENT, item->getSourceParent());


    if (NotZeroStringBufferLenght(7, target, source, targetParent, sourceParent, meta, data, moreData)) {
        s = new StringBuffer();
        s->append(target);
        s->append(source);
        s->append(targetParent);
        s->append(sourceParent);
        s->append(meta);
        s->append(data);
        s->append(moreData);
    }

    ret = getValue(ITEM, s);
    deleteAllStringBuffer(8, &s, &target, &source, &targetParent, &sourceParent, &meta, &data, &moreData);

    return ret;
}

StringBuffer* Formatter::getData(Data* data) {

    if (!data)
        return NULL;

    StringBuffer* ret       = NULL;
    StringBuffer* s         = NULL;
    const char* simpleData  = NULL;

    if ((simpleData = data->getData()) != NULL) {
        s = new StringBuffer();
        s->append(simpleData);
        ret = getValue(DATA, s);
    }
    deleteAllStringBuffer(1, &s);
    return ret;
}

StringBuffer* Formatter::getData(ComplexData* data) {

    if (!data)
        return NULL;

    StringBuffer s;

    StringBuffer* anchor = getAnchor(data->getAnchor());
    StringBuffer* devInf = getDevInf(data->getDevInf());

    if ((anchor != NULL && anchor->length() > 0) ||
        (devInf != NULL && devInf->length() > 0)) {
        s.append(anchor);
        s.append(devInf);
    } else {
        if (data->getData() == NULL || strlen(data->getData()) == 0) {
            //nothing to do. For mailfilter
        }
        // it avoid error for the closing tag of CDATA
        else if (data->getData() && strstr(data->getData(), "]]>") == NULL ) {

            s.append("<![CDATA[");
            s.append(data->getData());
            s.append("]]>");

        } else {
            StringBuffer tmp(data->getData());
            tmp.replaceAll("&", "&amp;");
            tmp.replaceAll("<", "&lt;");
            s.append(tmp);
        }
    }

    deleteAllStringBuffer(2, &anchor, &devInf);

    //
    // Now let's process the list of Property (if any)
    //
    int nProps = 0;
    ArrayList* properties = data->getProperties();
    if (properties) {
        nProps = properties->size();

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?