public static MappingParameter Create(Parameter _p, Component _direct_parent, TypeNode _tn, bool _as_example, bool _match_name, out MappingError err) { if (!(MappingParameter.PerliminaryMapping(_p, _direct_parent, _tn, _as_example, _match_name, out err))) { return(null); } MappingParameter mp = new MappingParameter(_p, _direct_parent, _tn, _as_example); _tn.MostRecentMapping = mp; return(mp); }
public static List <MappingObject> CreateMultipleFrom(Component _comp, TypeNode _tn, bool _as_example, List <KeyValuePair <string, TypeNode> > _correspondencies, out MappingError err) { err = MappingError.NONE; List <MappingObject> created_mappings = new List <MappingObject>(); if (_comp == null || _tn == null || _correspondencies == null || _correspondencies.Count < 2) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } Component current_comp = _comp; MappingError tmp_err = MappingError.NONE; foreach (var entry in _correspondencies) { string[] key_comps = entry.Key.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); if (key_comps == null || key_comps.Length < 2) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } if ((key_comps[0] + "_") == MappingComponent.PREFIX_COMP) { // -------------------------- COMPONENTS --------------------------- // long comp_id = -1; bool success = long.TryParse(key_comps[1], out comp_id); if (!success) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } if (comp_id != current_comp.ID) { // look for the component in the children of current_comp List <Component> all_sub_comps = current_comp.GetFlatSubCompList(); Component next = all_sub_comps.FirstOrDefault(x => x.ID == comp_id); if (next == null) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } else { current_comp = next; } } } else if ((key_comps[0] + "_") == MappingComponent.PREFIX_ID) { // ------------------------ COMPONENT IDS -------------------------- // MappingString ms = MappingString.Create(current_comp, entry.Key, entry.Value, _as_example, out tmp_err); if (tmp_err != MappingError.NONE) { err = tmp_err; return(created_mappings); } else { created_mappings.Add(ms); } } else if ((key_comps[0] + "_") == MappingComponent.PREFIX_PARAM) { // -------------------------- PARAMETERS --------------------------- // long param_id = -1; bool success = long.TryParse(key_comps[1], out param_id); if (!success || !current_comp.ContainedParameters.ContainsKey(param_id)) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } Parameter p = current_comp.ContainedParameters[param_id]; MappingParameter mp = MappingParameter.Create(p, current_comp, entry.Value, _as_example, false, out tmp_err); if (tmp_err != MappingError.NONE) { err = tmp_err; return(created_mappings); } else { created_mappings.Add(mp); } } else if ((key_comps[0] + "_") == MappingComponent.PREFIX_P3DC) { // --------------------------- GEOMETRY ---------------------------- // if (key_comps.Length < 3) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } long id_primary = -1; int id_second = -1; bool success_1 = long.TryParse(key_comps[1], out id_primary); bool success_2 = int.TryParse(key_comps[2], out id_second); if (!success_1 || !success_2) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } GeometricRelationship gr = current_comp.R2GInstances.FirstOrDefault(x => x.ID == id_primary); if (gr == null) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } Point3DContainer p3dc = gr.GeometricContent.FirstOrDefault(x => x.ID_primary == id_primary && x.ID_secondary == id_second) as Point3DContainer; if (p3dc == null) { err = MappingError.MISSING_MAPPING_END; return(created_mappings); } MappingSinglePoint msp = MappingSinglePoint.Create(p3dc, current_comp, entry.Value, _as_example, out tmp_err); if (tmp_err != MappingError.NONE) { err = tmp_err; return(created_mappings); } else { created_mappings.Add(msp); } } } return(created_mappings); }