FdoStringP FdoRdbmsMySqlFilterProcessor::GetGeometryColumnNameForProperty ( const FdoSmLpGeometricPropertyDefinition *pGeomProp, bool bChangeFilter) { FdoStringP retVal; if (pGeomProp != NULL) { retVal = pGeomProp->GetColumnName(); if (bChangeFilter) { FdoStringP tmpRetVal(retVal); FdoStringP suffixName = FdoStringP::Format(L"%ls", (FdoString *) tmpRetVal.Mid( wcslen(retVal) - wcslen(NOTINDEXED_SUFFIX), wcslen(retVal))); // Strip the suffix from the column name if (suffixName.ICompare(NOTINDEXED_SUFFIX) == 0) { retVal = FdoStringP::Format(L"%ls", (FdoString *) tmpRetVal.Mid( 0, wcslen(retVal) - wcslen(NOTINDEXED_SUFFIX))); } } } return retVal; }
void FdoSmLpGrdDataPropertyDefinition::Update( FdoPhysicalPropertyMapping* pPropOverrides ) { FdoSmPhMgrP pPhysical = GetLogicalPhysicalSchema()->GetPhysicalSchema(); FdoRdbmsOvDataPropertyDefinition* pDataPropOverrides = dynamic_cast<FdoRdbmsOvDataPropertyDefinition*>(pPropOverrides); // Error if the overrides are not for a data property if ( pPropOverrides && !pDataPropOverrides ) AddWrongOverrideTypeError(); FdoStringP ovColName; if ( pDataPropOverrides ) { // Get the column name from the physical overrides, if specified. FdoRdbmsOvColumnP columnOverrides = pDataPropOverrides->GetColumn(); if ( columnOverrides ) { SetIsFixedColumn( true ); if ( wcslen(columnOverrides->GetName()) > 0 ) ovColName = columnOverrides->GetName(); } } if ( (ovColName == L"") && (GetElementState() == FdoSchemaElementState_Unchanged) && GetIsFromFdo() ) { // Always make column name fixed when this object is from an FDO config document. // In this case this property must attach to an existing column so must // prevent the column name from being mangled. // Property always attaches to a column in the providers neutral case. // An explicit override must be supplied to attach to column whose // name is of another case. ovColName =GetName(); SetIsFixedColumn( true ); } if ( (!RefBaseProperty()) && ((GetElementState() == FdoSchemaElementState_Added) || GetIsFromFdo()) ) { // Set column name from override when property is not inherited and it is // new or from a config doc. if ( ovColName.GetLength() > 0 ) { // For foreign columns, root column is always the one // specified in the overrides. if ( ColumnIsForeign() ) SetRootColumnName( ovColName ); SetColumnName( ovColName ); } } else if ( GetElementState() == FdoSchemaElementState_Modified ) { if ( (ovColName.GetLength() > 0) && (ovColName.ICompare(Get_ColumnName()) != 0) ) AddColNameChangeError( ovColName ); } }
FdoStringP FdoSmPhOdbcView::GetRootNameSql() { FdoStringP rootDatabase = this->GetRootDatabase(); FdoStringP rootOwner = this->GetRootOwner(); FdoStringP rootObject = this->GetRootObjectName(); if ( rootDatabase != L"" ) // TODO: proper message indicating that Odbc provider does not // support multiple database instances. throw FdoSchemaException::Create(); if ( (rootOwner == L"") || (rootOwner.ICompare(GetManager()->GetDefaultOwnerName()) == 0) ) return rootObject; else return FdoStringP::Format( L"%ls.dbo.%ls", (FdoString*) rootOwner, (FdoString*) rootObject ); }
void FdoSpatialContextTest::DoTest( bool hasMetaSchema ) { FdoPtr<FdoIConnection> connection; StaticConnection* staticConn = NULL; try { if ( !hasMetaSchema ) { staticConn = UnitTestUtil::NewStaticConnection(); staticConn->connect(); UnitTestUtil::CreateDBNoMeta( staticConn->CreateSchemaManager(), UnitTestUtil::GetEnviron("datastore", DB_NAME_SUFFIX) ); } // delete, re-create and open the datastore printf( "Initializing Connection ... \n" ); connection = UnitTestUtil::CreateConnection( hasMetaSchema, hasMetaSchema, DB_NAME_SUFFIX, 0, NULL, 0 ); printf( "Creating Spatial Contexts ... \n" ); UnitTestUtil::CreateSpatialContext( connection, L"Bermuda", L"Bermuda 1957", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"Rectangular", L"", 0, 0, 1000, 1000 ); UnitTestUtil::CreateSpatialContext( connection, L"Bermuda Duplicate", L"Bermuda 1957", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"Luxembourg Delete", L"Luxembourg 1930", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"South", L"Australian Antarctic", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"sc_2", L"Puerto Rico", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"South Delete", L"Australian Antarctic", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"sc_1", L"NAD27", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"South Duplicate", L"Australian Antarctic", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"Liberia by WKT", L"", 0, 0, 10, 10, L"GEOGCS[\"Liberia 1964\", DATUM[\"Liberia 1964\", ELLIPSOID[\"Clarke 1880 (RGS)\", 6378249.145, 293.465]], PRIMEM[\"Greenwich\", 0], UNIT[\"Degree\", 0.0174532925199433]]" ); UnitTestUtil::CreateSpatialContext( connection, L"Qatar wrong name", L"Bermuda 1957", 0, 0, 10, 10, L"GEOGCS[\"Qatar 1974\", DATUM[\"Qatar 1974\", ELLIPSOID[\"International 1924\", 6378388, 297]], PRIMEM[\"Greenwich\", 0], UNIT[\"Degree\", 0.0174532925199433]]" ); UnitTestUtil::CreateSpatialContext( connection, L"California", L"CA-I", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"Bermuda Mentor", L"Bermuda.LL", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"Mentor by WKT", L"", 0, 0, 10, 10, L"PROJCS[\"Quebec test\",GEOGCS[\"For testing only\",DATUM[\"Test\",SPHEROID[\"NAD 27\",6300000,123.465,]]]]" ); UnitTestUtil::CreateSpatialContext( connection, L"Rectangular (Metre)", L"XY-M", 0, 0, 10, 10); UnitTestUtil::CreateSpatialContext( connection, L"Rectangular (Feet)", L"XY-FT", 0, 0, 10, 10); connection->Close(); connection->Open(); printf( "Deleting Spatial Contexts ... \n" ); UnitTestUtil::DeleteSpatialContext( connection, L"Luxembourg Delete" ); UnitTestUtil::DeleteSpatialContext( connection, L"South Delete" ); connection->Close(); connection->Open(); CreateSchema( connection, hasMetaSchema ); printf( "Writing output ... \n" ); FdoStringP datastore = UnitTestUtil::GetEnviron("datastore", DB_NAME_SUFFIX); FdoIoMemoryStreamP stream1 = FdoIoMemoryStream::Create(); FdoXmlSpatialContextFlagsP flags = FdoXmlSpatialContextFlags::Create( L"fdo.osgeo.org/schemas/feature", FdoXmlFlags::ErrorLevel_Normal, true, FdoXmlSpatialContextFlags::ConflictOption_Add, true ); UnitTestUtil::ExportDb( connection, stream1, flags, false, FdoStringP(L"Fdo") + datastore ); UnitTestUtil::Config2SortedFile( stream1, UnitTestUtil::GetOutputFileName( GenFileName(1, hasMetaSchema, false) ) ); UnitTestUtil::CheckOutput( GenFileName( 1, hasMetaSchema, true ), UnitTestUtil::GetOutputFileName( GenFileName(1, hasMetaSchema, false) ) ); InsertFeatures( connection ); stream1 = FdoIoMemoryStream::Create(); UnitTestUtil::ExportDb( connection, stream1, flags, false, FdoStringP(L"Fdo") + datastore, L"AutoGen", true ); UnitTestUtil::Config2SortedFile( stream1, UnitTestUtil::GetOutputFileName( GenFileName(2, hasMetaSchema, false) ) ); UnitTestUtil::CheckOutput( GenFileName( 2, hasMetaSchema, true ), UnitTestUtil::GetOutputFileName( GenFileName(2, hasMetaSchema, false) ) ); if ( !hasMetaSchema ) { CreateTables( staticConn, datastore ); connection->Close(); connection->Open(); stream1 = FdoIoMemoryStream::Create(); UnitTestUtil::ExportDb( connection, stream1, flags, false, FdoStringP(L"Fdo") + datastore, L"AutoGen", true ); UnitTestUtil::Config2SortedFile( stream1, UnitTestUtil::GetOutputFileName( GenFileName(3, hasMetaSchema, false) ) ); UnitTestUtil::CheckOutput( GenFileName( 3, hasMetaSchema, true ), UnitTestUtil::GetOutputFileName( GenFileName(3, hasMetaSchema, false) ) ); try { UnitTestUtil::CreateSpatialContext( connection, L"Nowhere", L"JunkCS", 0, 0, 10, 10 ); CPPUNIT_FAIL( "Setting unsupported coordinate system by name supposed to fail" ); } catch (FdoException* e ) { #ifdef _WIN32 #ifdef _DEBUG FdoStringP expectedMessage = L" Error creating spatial context Nowhere, coordinate system JunkCS is not in current datastore. "; FdoString* pMessage = wcschr( e->GetExceptionMessage(), ')' ); if (pMessage) pMessage++; #else FdoStringP expectedMessage = L"Error creating spatial context Nowhere, coordinate system JunkCS is not in current datastore. "; FdoString* pMessage = e->GetExceptionMessage(); #endif CPPUNIT_ASSERT( pMessage && expectedMessage.ICompare(pMessage) == 0 ); #endif FDO_SAFE_RELEASE(e); } try { UnitTestUtil::CreateSpatialContext( connection, L"California2", L"", 0, 0, 10, 10, L"PROJCS[\"CA-I\",GEOGCS[\"LL27\",DATUM[\"NAD27\",SPHEROID[\"CLRK66\",60.400,294.97869821]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"false_easting\",2000000.000],PARAMETER[\"false_northing\",0.000],PARAMETER[\"central_meridian\",-122.00000000000000],PARAMETER[\"latitude_of_origin\",39.33333333333333],PARAMETER[\"standard_parallel_1\",41.66666666666666],PARAMETER[\"standard_parallel_2\",40.00000000000000],UNIT[\"Foot_US\",0.30480060960122]]" ); CPPUNIT_FAIL( "Setting unsupported coordinate system by wkt supposed to fail" ); } catch (FdoException* e ) { #ifdef _WIN32 #ifdef _DEBUG FdoStringP expectedMessage = L" Error creating spatial context California2, coordinate system catalog does not contain entry for WKT 'PROJCS[\"CA-I\",GEOGCS[\"LL27\",DATUM[\"NAD27\",SPHEROID[\"CLRK66\",60.400,294.97869821]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"false_easting\",2000000.000],PARAMETER[\"false_northing\",0.000],PARAMETER[\"central_meridian\",-122.00000000000000],PARAMETER[\"latitude_of_origin\",39.33333333333333],PARAMETER[\"standard_parallel_1\",41.66666666666666],PARAMETER[\"standard_parallel_2\",40.00000000000000],UNIT[\"Foot_US\",0.30480060960122]]' "; FdoString* pMessage = wcschr( e->GetExceptionMessage(), ')' ); if (pMessage) pMessage++; #else FdoStringP expectedMessage = L"Error creating spatial context California2, coordinate system catalog does not contain entry for WKT 'PROJCS[\"CA-I\",GEOGCS[\"LL27\",DATUM[\"NAD27\",SPHEROID[\"CLRK66\",60.400,294.97869821]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"false_easting\",2000000.000],PARAMETER[\"false_northing\",0.000],PARAMETER[\"central_meridian\",-122.00000000000000],PARAMETER[\"latitude_of_origin\",39.33333333333333],PARAMETER[\"standard_parallel_1\",41.66666666666666],PARAMETER[\"standard_parallel_2\",40.00000000000000],UNIT[\"Foot_US\",0.30480060960122]]' "; FdoString* pMessage = e->GetExceptionMessage(); #endif CPPUNIT_ASSERT( pMessage && expectedMessage.ICompare(pMessage) == 0 ); #endif FDO_SAFE_RELEASE(e); } } else { UnitTestUtil::CreateSpatialContext( connection, L"Nowhere", L"JunkCS", 0, 0, 10, 10 ); UnitTestUtil::CreateSpatialContext( connection, L"California2", L"CA_I", 0, 0, 10, 10, L"PROJCS[\"CA-I\",GEOGCS[\"LL27\",DATUM[\"NAD27\",SPHEROID[\"CLRK66\",60.400,294.97869821]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"false_easting\",2000000.000],PARAMETER[\"false_northing\",0.000],PARAMETER[\"central_meridian\",-122.00000000000000],PARAMETER[\"latitude_of_origin\",39.33333333333333],PARAMETER[\"standard_parallel_1\",41.66666666666666],PARAMETER[\"standard_parallel_2\",40.00000000000000],UNIT[\"Foot_US\",0.30480060960122]]" ); stream1 = FdoIoMemoryStream::Create(); UnitTestUtil::ExportDb( connection, stream1, flags, false, FdoStringP(L"Fdo") + datastore, L"AutoGen", true ); UnitTestUtil::Config2SortedFile( stream1, UnitTestUtil::GetOutputFileName( GenFileName(3, hasMetaSchema, false) ) ); UnitTestUtil::CheckOutput( GenFileName( 3, hasMetaSchema, true ), UnitTestUtil::GetOutputFileName( GenFileName(3, hasMetaSchema, false) ) ); } delete staticConn; connection->Close(); } catch ( ... ) { try { if ( staticConn ) delete staticConn; if ( connection ) connection->Close(); } catch ( ... ) { } throw; } }