[fdo-users] FDO error : cannot apply schema no schema was specified

Brent Robinson brent.robinson at autodesk.com
Thu Apr 4 04:34:05 PDT 2013


Hi,

For the PostgreSQL provider, ApplySchema throws a chain of exceptions when it fails. The first one has just a general message; after that there is one exception per error in the schema. The more specific exceptions can be picked up by doing:

    while (ex != NULL)
    {
        FdoString*str = ex->GetMessage();
        FdoException* ex2 = ex->GetCause();
        FDO_SAFE_RELEASE(ex);
        ex = ex2;
    }



Brent.

-----Original Message-----
From: fdo-users-bounces at lists.osgeo.org [mailto:fdo-users-bounces at lists.osgeo.org] On Behalf Of nav
Sent: Thursday, April 04, 2013 7:20 AM
To: fdo-users at lists.osgeo.org
Subject: [fdo-users] FDO error : cannot apply schema no schema was specified

While compiling the sample code present in FDODevGuide.pdf, pg 77,78,79 for creation Feature schema table in PosggreSQL, i am getting following exception Message "Schema SampleFeatureSchema has error. Cannot apply it."

Any idea what causes such an exception error?
Part of the code: 

if(FdoConnectionState_Open == state)
	{
		try 
		{
			// Create the ApplySchema command
			FdoPtr<FdoIApplySchema> sampleApplySchema ;
			sampleApplySchema = (FdoIApplySchema
*)fdoConnection->CreateCommand(FdoCommandType_ApplySchema);
			// Create the feature schema
			FdoPtr<FdoFeatureSchema> sampleFeatureSchema;
			sampleFeatureSchema = FdoFeatureSchema::Create(L"SampleFeatureSchema",
L"Sample Feature Schema Description");
			// get a pointer to the feature schema's class collection
			// this object is used to add classes to the schema
			FdoPtr<FdoClassCollection> sampleClassCollection;
			sampleClassCollection = sampleFeatureSchema->GetClasses();
			// create a feature class, i.e., a class containing a geometric
			// property set some class level properties
			FdoPtr<FdoFeatureClass> sampleFeatureClass;
			sampleFeatureClass = FdoFeatureClass::Create(L"SampleFeatureClass",
L"Sample Feature Class Description");
			sampleFeatureClass->SetIsAbstract(false);
			// get a pointer to the feature class's property collection
			// this pointer is used to add data and other properties to the	class
			FdoPtr<FdoPropertyDefinitionCollection> sampleFeatureClassProperties;
			sampleFeatureClassProperties = sampleFeatureClass->GetProperties();
			// get a pointer to the feature schema's class collection
			// this object is used to add classes to the schema
			//FdoPtr<FdoClassCollection> sampleClassCollection2;
			//sampleClassCollection2 = sampleFeatureSchema->GetClasses();
			// get a pointer to the feature class's identity property collection
			// this property is used to add identity properties to the feature
			// class
			FdoPtr<FdoDataPropertyDefinitionCollection>
sampleFeatureClassIdentityProperties;
			sampleFeatureClassIdentityProperties =
sampleFeatureClass->GetIdentityProperties();
			// create a data property that is of type Int32 and identifies
			// the feature uniquely
			FdoPtr<FdoDataPropertyDefinition> sampleIdentityDataProperty;
			sampleIdentityDataProperty =
FdoDataPropertyDefinition::Create(L"SampleIdentityDataProperty", L"Sample Identity Data Property Description");
			sampleIdentityDataProperty->SetDataType(FdoDataType_Int32);		
			sampleIdentityDataProperty->SetReadOnly(false);
			sampleIdentityDataProperty->SetNullable(false);
			sampleIdentityDataProperty->SetIsAutoGenerated(false);
			// add the identity property to the sampleFeatureClass
			sampleFeatureClassProperties->Add(sampleIdentityDataProperty);
			sampleFeatureClassIdentityProperties->Add(sampleIdentityDataProperty);
			// create a data property that is of type String and names the
			// feature
			FdoPtr<FdoDataPropertyDefinition> sampleNameDataProperty;
			sampleNameDataProperty =
FdoDataPropertyDefinition::Create(L"SampleNameDataProperty", L"Sample Name Data Property Description");
			sampleNameDataProperty->SetDataType(FdoDataType_String);
			sampleNameDataProperty->SetLength(64);
			sampleNameDataProperty->SetReadOnly(false);
			sampleNameDataProperty->SetNullable(false);
			sampleNameDataProperty->SetIsAutoGenerated(false);
			// add the name property to the sampleFeatureClass
			sampleFeatureClassProperties->Add(sampleNameDataProperty);
			// create a geometric property
			FdoPtr<FdoGeometricPropertyDefinition> sampleGeometricProperty;
			sampleGeometricProperty =
FdoGeometricPropertyDefinition::Create(L"SampleGeometricProperty", L"Sample Geometric Property Description");
			sampleGeometricProperty->SetGeometryTypes(FdoGeometricType_Surface);
			sampleGeometricProperty->SetReadOnly(false);
			sampleGeometricProperty->SetHasMeasure(false);
			sampleGeometricProperty->SetHasElevation(false);
			// add the geometric property to the sampleFeatureClass
			sampleFeatureClassProperties->Add(sampleGeometricProperty);
			// identify it as a geometry property
			sampleFeatureClass->SetGeometryProperty(sampleGeometricProperty);
			// add the feature class to the schema
			sampleClassCollection->Add(sampleFeatureClass);
			// point the ApplySchema command at the newly created feature
			// schema and execute
                       
sampleApplySchema->SetFeatureSchema(sampleFeatureSchema);
			sampleApplySchema->Execute();
		}
		catch (FdoException *ex)
		{
			FdoString *str = ex->GetExceptionMessage();//"Schema Sample Feature Schema has error. Cannot apply it."
			ex->Release();
			
		}
	



--
View this message in context: http://osgeo-org.1560.n6.nabble.com/FDO-error-cannot-apply-schema-no-schema-was-specified-tp5044538.html
Sent from the FDO Users mailing list archive at Nabble.com.
_______________________________________________
fdo-users mailing list
fdo-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/fdo-users


More information about the fdo-users mailing list