bool TransactionHandler::Insert(XNode* pxInsert, WebContext* pWebContext, Map* pMap) { XNode* pxLayer = pxInsert->GetFirstChild(); if(pxLayer==NULL) { return false; } const char* name = pxLayer->GetName(); Layer *pLayer = pMap->GetLayer(name); if(pLayer==NULL) { return false; } augeLayerType ltype = pLayer->GetType(); if(ltype != augeLayerFeature) { return false; } FeatureLayer* pFeatureLayer = NULL; pFeatureLayer = static_cast<FeatureLayer*>(pLayer); FeatureClass* pFeatureClass = NULL; pFeatureClass = pFeatureLayer->GetFeatureClass(); if(pFeatureClass==NULL) { return false; } Feature* pFeature = pFeatureClass->NewFeature(); if(pFeature==NULL) { return false; } GField *pField = NULL; GFields *pFields = pFeatureClass->GetFields(); const char* fname = NULL; GValue* pValue = NULL; XNode* pxNode = NULL; XNodeSet* pxNodeSet = pxLayer->GetChildren(); pxNodeSet->Reset(); while((pxNode=pxNodeSet->Next())!=NULL) { fname = pxNode->GetName(); pField = pFields->GetField(fname); if(pField!=NULL) { pValue = CreateValue(pxNode, pField); if(pValue!=NULL) { pFeature->SetValue(fname, pValue); } } } pxNodeSet->Release(); FeatureInsertCommand* cmd = pFeatureClass->CreateInsertCommand(); RESULTCODE rc = cmd->Insert(pFeature); AUGE_SAFE_RELEASE(pFeature); AUGE_SAFE_RELEASE(cmd); return !rc; }
bool TransactionHandler::Insert(XNode* pxInsert, WebContext* pWebContext, FeatureWorkspace* pWorkspace) { XNode* pxType = pxInsert->GetFirstChild(); if(pxType==NULL) { return false; } GLogger* pLogger = augeGetLoggerInstance(); GError* pError = augeGetErrorInstance(); RESULTCODE rc = AG_FAILURE; const char* name = pxType->GetName(); FeatureClass* pFeatureClass = NULL; pFeatureClass = pWorkspace->OpenFeatureClass(name); if(pFeatureClass==NULL) { char msg[AUGE_MSG_MAX]; g_snprintf(msg, AUGE_MSG_MAX, "Fail to get FeatureClass [%s]", name); pLogger->Error(msg, __FILE__, __LINE__); pError->SetError(msg); return false; } Feature* pFeature = pFeatureClass->NewFeature(); if(pFeature==NULL) { return false; } GField *pField = NULL; GFields *pFields = pFeatureClass->GetFields(); const char* fname = NULL; bool ok = true; GValue* pValue = NULL; XNode* pxNode = NULL; XNodeSet* pxNodeSet = pxType->GetChildren(); pxNodeSet->Reset(); while((pxNode=pxNodeSet->Next())!=NULL) { fname = pxNode->GetName(); pField = pFields->GetField(fname); if(pField!=NULL) { pValue = CreateValue(pxNode, pField); if(pValue!=NULL) { pFeature->SetValue(fname, pValue); } else { char msg[AUGE_MSG_MAX]; g_snprintf(msg, AUGE_MSG_MAX, "Field [%s]: Invalid Value", fname); pLogger->Error(msg, __FILE__, __LINE__); pError->SetError(msg); ok = false; break; } } else { char msg[AUGE_MSG_MAX]; g_snprintf(msg, AUGE_MSG_MAX, "FeatureClss does not have Field [%s]", fname); pLogger->Error(msg, __FILE__, __LINE__); pError->SetError(msg); ok = false; break; } } pxNodeSet->Release(); if(ok) { FeatureInsertCommand* cmd = pFeatureClass->CreateInsertCommand(); rc = cmd->Insert(pFeature); AUGE_SAFE_RELEASE(cmd); } AUGE_SAFE_RELEASE(pFeature); AUGE_SAFE_RELEASE(pFeatureClass); return !rc; }
void BackgroundImpl::Init() { if( m_bInitted ) return; m_bInitted = true; m_bDangerAllWasVisible = false; m_StaticBackgroundDef = BackgroundDef(); if( !USE_STATIC_BG ) { m_StaticBackgroundDef.m_sColor1 = "#00000000"; m_StaticBackgroundDef.m_sColor2 = "#00000000"; } // load transitions { ASSERT( m_mapNameToTransition.empty() ); vector<RString> vsPaths, vsNames; BackgroundUtil::GetBackgroundTransitions( "", vsPaths, vsNames ); for( unsigned i=0; i<vsPaths.size(); i++ ) { const RString &sPath = vsPaths[i]; const RString &sName = vsNames[i]; XNode xml; XmlFileUtil::LoadFromFileShowErrors(xml, sPath); ASSERT( xml.GetName() == "BackgroundTransition" ); BackgroundTransition &bgt = m_mapNameToTransition[sName]; RString sCmdLeaves; bool bSuccess = xml.GetAttrValue( "LeavesCommand", sCmdLeaves ); ASSERT( bSuccess ); bgt.cmdLeaves = ActorUtil::ParseActorCommands( sCmdLeaves ); RString sCmdRoot; bSuccess = xml.GetAttrValue( "RootCommand", sCmdRoot ); ASSERT( bSuccess ); bgt.cmdRoot = ActorUtil::ParseActorCommands( sCmdRoot ); } } bool bOneOrMoreChars = false; bool bShowingBeginnerHelper = false; FOREACH_HumanPlayer( p ) { bOneOrMoreChars = true; // Disable dancing characters if Beginner Helper will be showing. if( PREFSMAN->m_bShowBeginnerHelper && BeginnerHelper::CanUse() && GAMESTATE->m_pCurSteps[p] && GAMESTATE->m_pCurSteps[p]->GetDifficulty() == Difficulty_Beginner ) bShowingBeginnerHelper = true; } if( bOneOrMoreChars && !bShowingBeginnerHelper && SHOW_DANCING_CHARACTERS ) m_pDancingCharacters = new DancingCharacters; RageColor c = GetBrightnessColor(0); m_quadBorderLeft.StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) ); m_quadBorderLeft.SetDiffuse( c ); m_quadBorderTop.StretchTo( RectF(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) ); m_quadBorderTop.SetDiffuse( c ); m_quadBorderRight.StretchTo( RectF(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); m_quadBorderRight.SetDiffuse( c ); m_quadBorderBottom.StretchTo( RectF(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) ); m_quadBorderBottom.SetDiffuse( c ); this->AddChild( &m_quadBorderLeft ); this->AddChild( &m_quadBorderTop ); this->AddChild( &m_quadBorderRight ); this->AddChild( &m_quadBorderBottom ); this->AddChild( &m_Brightness ); }