Exemple #1
0
Connector* buildTree(list<char**>& args, list<char*>& cons) {
    // Returns the head of the tree.
    // Allocated data here can be deleted during cleanup via preorder deletion.
    
    printLine(30);

    ConnectorFactory factory;
    // cout << "[DEBUG] Throwing "; printArgs(args.front()); cout << " into leftCmd." << endl;
    cout << "[DEBUG] Building left node branch." << endl;
    Connector* leftCmd = factory.createBranch(args, cons); 
    cout << "[DEBUG] Left node Subtree Built." << endl;
    // if (leftCmd != NULL) cout << "[DEBUG] leftCmd holds "; printArgs(leftCmd->getCmd()); cout << endl;
    if (args.empty()) {
        cout << "[DEBUG] args list held one element only, returning..." << endl;
        return leftCmd;
    }

    Connector* rightCmd = NULL; 
    Connector* currHead = NULL;
    
    while (!cons.empty()) {
        while (!args.empty()) {

            if (checkConnectors(cons.front()) == 1) { // If is hash, EVACUATE.
                while (!args.empty()) args.pop_front();
                while (!cons.empty()) cons.pop_front();
                break;
            }
            currHead = factory.createConnector(checkConnectors(cons.front()));
            cout << "[DEBUG] currHead speaking: "; currHead->identify();
            cons.pop_front();

            rightCmd = factory.createBranch(args, cons); // This is going to handle precedence.
            cout << "[DEBUG] Branch created." << endl;

            currHead->setLeft(leftCmd);
            currHead->setRight(rightCmd);
            cout << "[DEBUG] Statement: leftCmd = currHead" << endl;
            leftCmd = currHead; // Sets left leaf to be current head.
            cout << "[DEBUG] leftCmd: "; leftCmd->identify();
        }
        if (args.empty() && !cons.empty()) cons.pop_front();
    }
   
    printLine(30);

    return currHead;
}
void SpreadSheetConnectorsModule::prepare()
{
    SpreadSheetConnectorsObjectFactory *factory = new SpreadSheetConnectorsObjectFactory();
    factory->prepare();
    kernel()->addFactory(factory );

    ConnectorFactory *cfactory = kernel()->factory<ConnectorFactory>("ilwis::ConnectorFactory");
    if (!cfactory)
        return ;
    cfactory->addCreator(itTABLE,"spreadsheets",SpreadSheetTableConnector::create);

    cfactory->addCreator("spreadsheet","spreadsheets",SpreadSheetTableConnector::create);

    QFileInfo ilw = context()->ilwisFolder();
    QString path = ilw.canonicalFilePath() + "/extensions/spreadsheetconnectors/resources";
    DataFormat::setFormatInfo(path + "/spreadsheetformats.config","spreadsheets");

    QVariantList names = DataFormat::getFormatProperties(DataFormat::fpCODE,itTABLE,"spreadsheets");
    for(const QVariant& name : names)
        cfactory->addCreator(name.toString(),"spreadsheets", SpreadSheetTableConnector::create);

  kernel()->issues()->log("Loaded spreadsheet module",IssueObject::itMessage);

}
void PostgresqlModule::prepare()
{
    PostgresqlObjectFactory *factory = new PostgresqlObjectFactory();
    factory->prepare();
    kernel()->addFactory(factory);
    ConnectorFactory *cfactory = kernel()->factory<ConnectorFactory>("ilwis::ConnectorFactory");
    if (!cfactory)
        return ;
    cfactory->addCreator("table", "postgresql", PostgresqlTableConnector::create);
    cfactory->addCreator("simplefeatures", "postgresql", PostgresqlFeatureConnector::create);
    cfactory->addCreator("map", "postgresql", PostgresqlRasterConnector::create);
    cfactory->addCreator(itTABLE, "postgresql", PostgresqlTableConnector::create);
    cfactory->addCreator(itFEATURE, "postgresql", PostgresqlFeatureConnector::create);
    cfactory->addCreator(itRASTER, "postgresql", PostgresqlRasterConnector::create);
    cfactory->addCreator(itCATALOG, "postgresql", CatalogConnector::create);
    kernel()->issues()->log("Loaded Postgresql Module", IssueObject::itMessage);
}
void PostgresqlModule::prepare()
{
    PostgresqlObjectFactory *factory = new PostgresqlObjectFactory();
    factory->prepare();
    kernel()->addFactory(factory);
    ConnectorFactory *cfactory = kernel()->factory<ConnectorFactory>("ilwis::ConnectorFactory");
    if (!cfactory)
        return ;
    cfactory->addCreator("table", "postgresql", PostgresqlTableConnector::create);
    cfactory->addCreator("simplefeatures", "postgresql", PostgresqlFeatureConnector::create);
    cfactory->addCreator("map", "postgresql", PostgresqlRasterConnector::create);
    cfactory->addCreator(itTABLE, "postgresql", PostgresqlTableConnector::create);
    cfactory->addCreator(itFEATURE, "postgresql", PostgresqlFeatureConnector::create);
    cfactory->addCreator(itRASTER, "postgresql", PostgresqlRasterConnector::create);
    cfactory->addCreator(itCATALOG, "postgresql", CatalogConnector::create);

    QFileInfo ilw = context()->ilwisFolder();
    QString path = ilw.canonicalFilePath() + "/extensions/postgresqlconnector/resources";
    DataFormat::setFormatInfo(path + "/postgresformats.config","postgresql");

    kernel()->issues()->log("Loaded Postgresql Module", IssueObject::itMessage);
}
Exemple #5
0
void InternalModule::prepare()
{
    InternalIlwisObjectFactory *ifactory = new InternalIlwisObjectFactory();
    kernel()->addFactory(ifactory);

    ConnectorFactory *factory = kernel()->factory<ConnectorFactory>("ilwis::ConnectorFactory");
    if (!factory)
        return ;
    factory->addCreator(itCATALOG,"internal",CatalogConnector::create);
    factory->addCreator(itRASTER,"internal", InternalRasterCoverageConnector::create);
    factory->addCreator(itTABLE,"internal", InternalTableConnector::create);
    factory->addCreator(itFEATURE,"internal", InternalFeatureCoverageConnector::create);
    factory->addCreator(itGEOREF,"internal", InternalGeoReferenceConnector::create);
    factory->addCreator(itDOMAIN,"internal", InternalDomainConnector::create);
    factory->addCreator(itCOORDSYSTEM,"internal", InternalCoordinatesystemConnector::create);
    factory->addCreator(itREPRESENTATION,"internal", InternalRepresentationConnector::create);

    FactoryInterface *projfactory = new ProjectionImplFactory();
    projfactory->prepare();
    kernel()->addFactory(projfactory );

    QSqlQuery db(kernel()->database());

    bool ok = createItems(db,"projection", itPROJECTION);
    ok &= createItems(db,"ellipsoid", itELLIPSOID);
    ok &= createItems(db,"datum", itGEODETICDATUM);
    ok &= createItems(db,"numericdomain", itNUMERICDOMAIN, "domain");
    ok &= createItems(db,"representation", itREPRESENTATION);
    ok &= createPcs(db);
    ok &= createSpecialDomains();

    QString url = QString("ilwis://system/unknown");
    Resource resource(url, itBOUNDSONLYCSY);
    resource.code("unknown");
    resource.name("unknown", false);
    resource.addContainer(QUrl("ilwis://system"));
    resource.prepare();
    mastercatalog()->addItems({resource});

    url = QString("ilwis://system/undetermined");
    resource = Resource(url, itGEOREF);
    resource.code("undetermined");
    resource.name("undetermined", false);
    resource.addContainer(QUrl("ilwis://system"));
    resource.prepare();
    mastercatalog()->addItems({resource});

    url = QString("file:///%1/resources/country_boundaries.ilwis").arg(context()->ilwisFolder().absoluteFilePath());
    resource = Resource(QUrl("ilwis://system/country_boundaries.ilwis"), QUrl(url),itFEATURE);
    resource.code("catalogcountryboundaries");
    resource.name("countryboundaries", false);
    resource.addContainer(QUrl("ilwis://system"));
    resource.prepare();
    mastercatalog()->addItems({resource});


    IlwisObject::addTypeFunction(InternalModule::ilwisType);

    kernel()->issues()->log("Loaded internal objects module",IssueObject::itMessage);

}
void StreamModule::prepare()
{

    StreamObjectFactory *factory = new StreamObjectFactory();
    factory->prepare();
    kernel()->addFactory(factory );


    VersionedDataStreamFactory *versionFactory = new VersionedDataStreamFactory();
    kernel()->addFactory(versionFactory);

    versionFactory->addCreator({"iv40",itFEATURE},FeatureSerializerV1::create);
    versionFactory->addCreator({"iv40",itDOMAIN},DomainSerializerV1::create);
    versionFactory->addCreator({"iv40",itTABLE},TableSerializerV1::create);
    versionFactory->addCreator({"iv40",itCOORDSYSTEM},CoordinateSystemSerializerV1::create);
    versionFactory->addCreator({"iv40",itELLIPSOID},EllipsoidSerializerV1::create);
    versionFactory->addCreator({"iv40",itPROJECTION},ProjectionSerializerV1::create);
    versionFactory->addCreator({"iv40",itGEOREF},GeorefSerializerV1::create);
    versionFactory->addCreator({"iv40",itRASTER},RasterSerializerV1::create);
    versionFactory->addCreator({"iv40",itCATALOG},CatalogserializerV1::create);
    versionFactory->addCreator({"iv40",itSINGLEOPERATION},OperationMetadataSerializerV1::create);
    versionFactory->addCreator({"iv40",itWORKFLOW},WorkflowSerializerV1::create);
    versionFactory->addCreator({"iv40",itSCRIPT},ScriptSerializerV1::create);
    versionFactory->addCreator({"iv40",itMODEL},ModelSerializerV1::create);
    versionFactory->addCreator({"iv40",itCOMBINATIONMATRIX},CombinationMatrixSerializerv1::create);


    ConnectorFactory *cfactory = kernel()->factory<ConnectorFactory>("ilwis::ConnectorFactory");
    if (!cfactory)
        return ;

  //inputconnectors
    cfactory->addCreator(itCOVERAGE|itDOMAIN|itGEOREF|itCOORDSYSTEM|itREPRESENTATION|itELLIPSOID|itPROJECTION|itTABLE|
                         itOPERATIONMETADATA|itMODEL|itSCRIPT|itCOMBINATIONMATRIX  ,"stream", StreamConnector::create);
    cfactory->addCreator(itCATALOG,"stream", CatalogConnector::create);

    //outputconnectors
    cfactory->addCreator("featurecoverage","stream",StreamConnector::create);
    cfactory->addCreator("rastercoverage","stream",StreamConnector::create);
    cfactory->addCreator("table","stream",StreamConnector::create);
    cfactory->addCreator("catalog","stream",StreamConnector::create);
    cfactory->addCreator("domain","stream",StreamConnector::create);
    cfactory->addCreator("itemdomain","stream",StreamConnector::create);
    cfactory->addCreator("textdomain","stream",StreamConnector::create);
    cfactory->addCreator("colordomain","stream",StreamConnector::create);
    cfactory->addCreator("georeference","stream",StreamConnector::create);
    cfactory->addCreator("coordinatesystem","stream",StreamConnector::create);
  cfactory->addCreator("conventionalcoordinatesystem","stream",StreamConnector::create);
    cfactory->addCreator("boundsonlycoordinatesystem","stream",StreamConnector::create);
    cfactory->addCreator("operationmetadata","stream",StreamConnector::create);
    cfactory->addCreator("workflow","stream",StreamConnector::create);
    cfactory->addCreator("script","stream",StreamConnector::create);
    cfactory->addCreator("model","stream",StreamConnector::create);
    cfactory->addCreator("combinationmatrix","stream",StreamConnector::create);

    QFileInfo ilw = context()->ilwisFolder();
    QString path = ilw.canonicalFilePath() + "/extensions/streamconnector/resources";
    DataFormat::setFormatInfo(path + "/streamformats.config","stream");

    IlwisObject::addTypeFunction(StreamModule::ilwisType);

    kernel()->issues()->log("Loaded streaming module",IssueObject::itMessage);
}