//--------------------------------------------------------------------------------------- private IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, Type typeElement) { IVariableDynamique variableASupprimer = null; foreach (IVariableDynamique variable in filtre.ListeVariables) { if (variable.Nom == c_champElementSource) { if (variable.TypeDonnee.TypeDotNetNatif != typeElement) { variableASupprimer = variable; } else { return(variable); } } } if (variableASupprimer != null) { filtre.RemoveVariable(variableASupprimer); } CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre); newVariable.Nom = c_champElementSource; newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(typeElement, false)); filtre.AddVariablePropreAuFiltre(newVariable); return(newVariable); }
/// ///////////////////////////////////////////////////////////// protected void AssureVariableDossierInFiltre(CFiltreDynamique filtre) { if (filtre == null) { return; } bool bVariableExiste = false; foreach (IVariableDynamique variable in filtre.ListeVariables) { if (variable.Nom == c_nomChampDossier) { bVariableExiste = true; break; } } if (!bVariableExiste) { CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(filtre); variable.Nom = c_nomChampDossier; variable.SetTypeDonnee(new CTypeResultatExpression(typeof(CDossierSuivi), false)); filtre.AddVariable(variable); } filtre.TypeElements = this.TypeSuivi; }
/// //////////////////////////////////////////////////////////////// public static IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, CObjetPourSousProprietes objetPourSousProprietes) { if (objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee == null) { foreach (IVariableDynamique variable in filtre.ListeVariables) { if (variable.Nom == c_champElementSource) { return(variable); } } CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre); newVariable.Nom = c_champElementSource; newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(objetPourSousProprietes.TypeAnalyse, false)); filtre.AddVariable(newVariable); return(newVariable); } else { filtre.ElementAVariablesExterne = null; while (filtre.ListeVariables.Length > 0) { filtre.RemoveVariable(filtre.ListeVariables[0]); } filtre.ElementAVariablesExterne = objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee; return(null); } }
//--------------------------------------------------------------------------- private void AssureVariableSourceGlobale() { CVariableDynamiqueSysteme varSource = null; foreach (IVariableDynamique variable in m_listeVariables) { if (variable.IdVariable == c_strCleVariableSourceGlobale) { varSource = variable as CVariableDynamiqueSysteme; break; } } if (m_typeSourceGlobale == null) { if (varSource != null) { m_listeVariables.Remove(varSource); } } else { if (varSource == null) { varSource = new CVariableDynamiqueSysteme(this); varSource.IdVariable = c_strCleVariableSourceGlobale; varSource.Nom = c_strNomVariableSourceElement; m_listeVariables.Add(varSource); } varSource.SetTypeDonnee(new CTypeResultatExpression(m_typeSourceGlobale, false)); } }
private void CreateVariable(Type typeDonnee) { m_variable = new CVariableDynamiqueSysteme(this); m_variable.IdVariable = "0"; m_variable.Nom = c_nomVariable; m_variable.SetTypeDonnee(new CTypeResultatExpression(typeDonnee, false)); AddVariable(m_variable); }
//------------------------------------------------------- public static CResultAErreurType <CMacro> FromVersion(CVersionDonnees version) { CResultAErreurType <CMacro> result = new CResultAErreurType <CMacro>(); using (CContexteDonnee contexte = new CContexteDonnee(version.ContexteDonnee.IdSession, true, false)) { contexte.SetVersionDeTravail(version.Id, false); CMacro macro = new CMacro(); macro.m_contexteDonnee = version.ContexteDonnee; macro.Libelle = version.Libelle; CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(); variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false)); variable.Nom = "CurrentElement"; variable.IdVariable = m_strIdVariableCurrentElement; macro.AddVariable(variable); Dictionary <int, CMacroObjet> dicMacrosObjets = new Dictionary <int, CMacroObjet>(); Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacros = new Dictionary <CObjetDonneeAIdNumerique, CMacroObjet>(); foreach (CVersionDonneesObjet vo in version.VersionsObjets) { if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0) { CMacroObjet mo = new CMacroObjet(macro); mo.TypeObjet = vo.TypeElement; mo.IdObjet = vo.IdElement; mo.TypeOperation = vo.TypeOperation; macro.AddObjet(mo); dicMacrosObjets[vo.Id] = mo; CObjetDonneeAIdNumerique objet = Activator.CreateInstance(vo.TypeElement, new object[] { contexte }) as CObjetDonneeAIdNumerique; if (objet.ReadIfExists(vo.IdElement)) { dicObjetToMacros[objet] = mo; } mo.CreateVariable(objet); } } foreach (CVersionDonneesObjet vo in version.VersionsObjets) { if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0) { CMacroObjet mo = dicMacrosObjets[vo.Id]; CResultAErreur resMo = CResultAErreur.True; resMo = mo.FillFromVersion(vo, contexte, dicObjetToMacros); if (!resMo) { result.EmpileErreur(resMo.Erreur); } } } result.DataType = macro; return(result); } }
//------------------------------------------------- private void AssureVariablesSysteme() { if (m_typeSource != null) { CVariableDynamiqueSysteme varSource = VariableObjetSource; if (varSource == null) { varSource = new CVariableDynamiqueSysteme(this); varSource.IdVariable = c_strIdVariableObjetSource; varSource.Nom = "Source"; m_listeVariables.Add(varSource); } varSource.SetTypeDonnee(new CTypeResultatExpression(m_typeSource, false)); } }
//------------------------------------------------- /// <summary> /// Crée un élément à variable, contenant une seule variable du type demandé, /// avec le nom demandé. /// </summary> /// <param name="tp"></param> /// <param name="strNomVariable"></param> /// <returns></returns> public static CElementAVariablesDynamiques GetElementAUneVariableType(Type tp, string strNomVariable) { CElementAVariablesDynamiques elt = new CElementAVariablesDynamiques(); CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(elt); newVariable.Nom = strNomVariable; //TESTDBKEYOK (SC) //Id doit être égal à 0 pour compatiblité newVariable.IdVariable = "0"; newVariable.SetTypeDonnee(new CTypeResultatExpression(tp, false)); elt.AddVariable(newVariable); return(elt); }
private IVariableDynamique AssureVariableProcessDansStructure() { if (m_structureExport == null) { return(null); } foreach (IVariableDynamique variable in m_structureExport.ListeVariables) { if (variable.Nom == c_champProcess) { m_structureExport.SetValeurChamp(variable, Process); return(variable); } } CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(m_structureExport); newVariable.Nom = c_champProcess; newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(typeof(CProcess), false)); m_structureExport.AddVariable(newVariable); m_structureExport.SetValeurChamp(newVariable.IdVariable, Process); return(newVariable); }
/// <summary> /// récupère un objet pour formule liée à la cellule /// /// </summary> /// <param name="paramVisu"></param> /// <param name="row">Ligne contenant les données (peut être nul en design)</param> /// <param name="nCol">Numéro de colonne où se trouve la donnée (peut être null en design)</param> /// <returns></returns> public CElementAVariablesDynamiques GetObjetPourFormuleCellule ( CParametreVisuDonneePrecalculee paramVisu, DataRow row, int?nCol) { CElementAVariablesDynamiques eltAVariables = new CElementAVariablesDynamiques(); CTypeDonneeCumulee typeDonnee = paramVisu.GetTypeDonneeCumulee(CContexteDonneeSysteme.GetInstance()); if (typeDonnee == null) { return(null); } CParametreDonneeCumulee parametreDonnee = typeDonnee.Parametre; //Ajoute les clés CChampFinalDeTableauCroise[] champsFinaux = paramVisu.TableauCroise.ChampsFinaux; int nIdVariable = 0; foreach (CChampFinalDeTableauCroise champFinal in champsFinaux) { CChampFinalDeTableauCroiseCle champCle = champFinal as CChampFinalDeTableauCroiseCle; if (champCle != null) { CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champCle.NomChamp); if (cle != null) { CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables); variable.Nom = champCle.NomChamp; variable.IdVariable = nIdVariable.ToString(); nIdVariable++; if (cle.TypeLie != null) { variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false)); } else { variable.SetTypeDonnee(new CTypeResultatExpression(typeof(int), false)); } eltAVariables.AddVariable(variable); if (row != null && row.Table.Columns.Contains(champCle.NomChamp)) { object val = row[champCle.NomChamp];; if (cle.TypeLie != null) { try { if (val != DBNull.Value) { val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse((val.ToString()))); } } catch { } } else if (val != DBNull.Value) { val = val.ToString(); } //TESTDBKEYOK (SC) eltAVariables.SetValeurChamp(variable.IdVariable, val); } } } } //Ajoute la valeur de colonne pivot (s'il y a lieu ) CChampFinalDeTableauCroiseDonnee champAvecPivot = ChampFinal as CChampFinalDeTableauCroiseDonnee; if (champAvecPivot != null && champAvecPivot.Pivot != null) { CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champAvecPivot.Pivot.NomChamp); if (cle != null) { CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables); variable.Nom = champAvecPivot.Pivot.NomChamp; variable.IdVariable = nIdVariable.ToString(); nIdVariable++; if (cle.TypeLie != null) { variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false)); } else { variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false)); } eltAVariables.AddVariable(variable); if (row != null && nCol != null) { DataColumn col = row.Table.Columns[nCol.Value]; CChampFinalDetableauCroiseDonneeAvecValeur cv = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDetableauCroiseDonneeAvecValeur; if (cv != null) { object val = cv.ValeurPivot; if (cle.TypeLie != null) { try { if (val != null) { val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse(val.ToString())); } } catch { } } else if (val != null) { val = val.ToString(); } eltAVariables.SetValeurChamp(variable.IdVariable, val); } } } } //Ajoute la valeur de la colonne CVariableDynamiqueSysteme variableValue = new CVariableDynamiqueSysteme(eltAVariables); variableValue.Nom = c_nomVariableValue; variableValue.IdVariable = nIdVariable.ToString(); nIdVariable++; variableValue.SetTypeDonnee(new CTypeResultatExpression(typeof(double), false)); eltAVariables.AddVariable(variableValue); try { eltAVariables.SetValeurChamp(variableValue.IdVariable, Convert.ToDouble(row[nCol.Value])); } catch { } //Ajoute les variables de filtre foreach (CFiltreDonneePrecalculee filtreDonnee in paramVisu.FiltresUtilisateur) { foreach (IVariableDynamique variable in filtreDonnee.Filtre.ListeVariables) { CVariableDeFiltreDeportee v = new CVariableDeFiltreDeportee(eltAVariables); v.Nom = variable.Nom; v.SetTypeDonnee(variable.TypeDonnee); v.ChampAssocieAuFiltre = filtreDonnee.ChampAssocie; eltAVariables.AddVariable(v); eltAVariables.SetValeurChamp(v.IdVariable, filtreDonnee.Filtre.GetValeurChamp(variable.IdVariable)); } } return(eltAVariables); }