Ejemplo n.º 1
0
WsWuInfo::WsWuInfo(const char *wuid_, const char *qset, const char *qname, const char *user, const char *pw) :
    wuid(wuid_), qsetname(qset), queryname(qname), username(user), password(pw)
{
    Owned<IWorkUnitFactory> wf = getWorkUnitFactory();
    if (!wuid.length() && qsetname.length() && queryname.length())
    {
        Owned<IPropertyTree> qstree = getQueryRegistry(qsetname.sget(), true);
        if (qstree)
        {
            VStringBuffer xpath("Query[@id=\"%s\"]", queryname.sget());
            IPropertyTree *query = qstree->queryPropTree(xpath.str());
            if (query)
                wuid.set(query->queryProp("@wuid"));
            else
                throw MakeStringException(-1, "Query %s not found in QuerySet %s", queryname.sget(), qsetname.sget());
        }
        else
            throw MakeStringException(-1, "QuerySet %s not found", qsetname.sget());
    }
        
    if (wuid.length())
    {
        wu.setown(wf->openWorkUnit(wuid.sget(), false));
        if (!wu)
            throw MakeStringException(-1, "Could not open workunit: %s", wuid.sget());
    }
    else
        throw MakeStringException(-1, "Workunit not specified");
}
Ejemplo n.º 2
0
const char *WsEclWuInfo::ensureWuid()
{
    if (wuid.length())
        return wuid.get();
    if (qsetname.length() && queryname.length())
    {
        Owned<IPropertyTree> qstree = getQueryRegistry(qsetname, true);
        if (!qstree)
            throw MakeStringException(-1, "QuerySet %s not found", qsetname.get());

        Owned<IPropertyTree> query = resolveQueryAlias(qstree, queryname);
        if (!query)
            throw MakeStringException(-1, "Query %s/%s not found", qsetname.get(), queryname.get());
        if (query->getPropBool("@suspended"))
            throw MakeStringException(-1, "Query %s/%s is currently suspended", qsetname.get(), queryname.get());

        wuid.set(query->queryProp("@wuid"));
    }
    if (!wuid.length())
        throw MakeStringException(-1, "Workunit not specified");
    return wuid.get();
}