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); }
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); }