Exemplo n.º 1
0
bool CreateSimpleFormulas(DesertSystem &ds, UdmDesertMap& des_map, DesertUdmMap &inv_des_map)
{
	set<FormulaSet> f_sets = ds.FormulaSet_kind_children();
	set<FormulaSet>::iterator fts_it;
	if(!f_sets.empty())
	{
		FormulaSet fs;
		for(fts_it=f_sets.begin();fts_it!=f_sets.end();++fts_it)
		{
			fs = *fts_it;
			set<SimpleFormula> sfs = fs.SimpleFormula_kind_children();
			for(set<SimpleFormula>::iterator it=sfs.begin();it!=sfs.end();++it)
			{
				SimpleFormula sf = *it;
				std::map<long, long> srcps, dstps;
				set<VariableProperty>::iterator vp_it;
				set<VariableProperty> out_vps = sf.property_end();
				for(vp_it=out_vps.begin();vp_it!=out_vps.end();++vp_it)
				{
					VariableProperty out_vp = *vp_it;
					long out_vp_id = GetID(out_vp, des_map);
					Udm::Object out_vp_parent = out_vp.parent();
					if(out_vp_parent.type()!=Element::meta) continue;
					Element out_elem = Element::Cast(out_vp_parent);
					long out_elem_id = GetID(out_elem, des_map);
					dstps[out_vp_id] = out_elem_id;
				}
			
				set<VariableProperty> in_vps = sf.srcProperty();
				if(in_vps.empty())
				{
					std::string err = "There is no source VariableProperty for SimpleFormula: "+(std::string)sf.name();
					throw new CDesertException(utf82cstring(err));
				}
				for(vp_it=in_vps.begin();vp_it!=in_vps.end();++vp_it)
				{
					VariableProperty in_vp = *vp_it;
					long in_vp_id = GetID(in_vp, des_map);
					Udm::Object in_vp_parent = in_vp.parent();
					if(in_vp_parent.type()!=Element::meta) continue;
					Element in_elem = Element::Cast(in_vp_parent);
					long in_elem_id = GetID(in_elem, des_map);
					srcps[in_vp_id] = in_elem_id;					
				}
			
				long sf_id = CreateSimpleFormula(utf82cstring((std::string)sf.ComputationType()), srcps, dstps);
				DoMap(sf, des_map, inv_des_map,  sf_id);
			}
		}
	}
	return true;
};
Exemplo n.º 2
0
bool CreateCustomFormulas(DesertSystem &ds, UdmDesertMap &des_map, DesertUdmMap &inv_des_map)
{
	set<FormulaSet> f_sets = ds.FormulaSet_kind_children();
	set<FormulaSet>::iterator fts_it;

	if (!f_sets.empty())
	{
		FormulaSet fs;
		for (fts_it = f_sets.begin(); fts_it != f_sets.end(); fts_it++)
		{
			fs = *(fts_it);
			set<CustomFormula> cf_set = fs.CustomFormula_kind_children();

			if (cf_set.empty()) continue;
			CreateDesertFormulaSet(fs, des_map, inv_des_map);

		}//eo for cts_iterator
	}//eo if (!c_sets.empty())
	return true;
};