Ejemplo n.º 1
0
        /// <summary>
        /// Returns true if the Detail will be shown in the Tree
        /// </summary>
        /// <param name="lDetail"></param>
        /// <returns></returns>
        private bool CalculateShowInTree(IDetailController detail)
        {
            // If it has no role path, won't be shown in the Tree
            ExchangeInfoNavigation lNavInfo = detail.ExchangeInformation as ExchangeInfoNavigation;

            if (lNavInfo != null && lNavInfo.RolePath.Equals(""))
            {
                return(false);
            }

            // If it is a Master Detail and its Master is a Population with Filters, won't be shown in the Tree
            IUMasterDetailController lMasterDetail = detail as IUMasterDetailController;

            if (lMasterDetail != null)
            {
                IUPopulationController lPopulationController = lMasterDetail.Master as IUPopulationController;
                if (lPopulationController != null && lPopulationController.Filters.Count > 0)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            // It is not a Master Detail and its role path is not empty
            return(false);
        }
        /// <summary>
        /// Occurs when the selected instance changes.
        /// </summary>
        /// <param name="sender">Sender object.</param>
        /// <param name="e">SelectedInstanceChangedEventArgs.</param>
        private void HandleMasterSelectedInstanceChanged(object sender, SelectedInstanceChangedEventArgs e)
        {
            // Update context
            UpdateContext();

            // Update details
            ExchangeInfoNavigation lInfoNav;

            foreach (IDetailController lDetail in Details)
            {
                ExchangeInfo lExchgInfo = lDetail.ExchangeInformation;
                lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
                if (lDetail.IsActiveDetail() && e.SelectedInstances != null && e.SelectedInstances.Count == 1)
                {
                    lInfoNav.SelectedOids = e.SelectedInstances;
                }
                else
                {
                    lInfoNav.SelectedOids = null;
                }
                lDetail.ExchangeInformation = lInfoNav;
                ClearLastOids(lDetail as IUQueryController);
                lDetail.UpdateData(true);
            }
        }
        /// <summary>
        /// Process the RefreshDetailRequired event for any detail.
        /// </summary>
        /// <param name="sender"></param>
        protected void ProcessDetailRefreshDetailRequired(object sender)
        {
            IDetailController lDetail = sender as IDetailController;

            if (lDetail == null)
            {
                return;
            }

            // Update the detail.
            ExchangeInfoNavigation lInfoNav;
            ExchangeInfo           lExchgInfo = lDetail.ExchangeInformation;

            lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
            if (Master.InstancesSelected != null && Master.InstancesSelected.Count == 1)
            {
                lInfoNav.SelectedOids = Master.InstancesSelected;
            }
            else
            {
                lInfoNav.SelectedOids = null;
            }
            lDetail.ExchangeInformation = lInfoNav;
            ClearLastOids(lDetail as IUQueryController);
            lDetail.UpdateData(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Launchs a navigation in an scenario.
        /// </summary>
        /// <param name="navigationInfo">Navigation information.</param>
        public static void LaunchNavigationScenario(ExchangeInfoNavigation navigationInfo, INavigationItemSuscriber navigationItem)
        {
            // Instance Scenario, initialize and return the controller instance inside the Scenario.
            Form         lScenario   = CreateScenarioInstance(navigationInfo);
            IUController lController = Initialize(lScenario, navigationInfo);

            if (lController != null)
            {
                if (navigationItem != null)
                {
                    IUMasterDetailController lMasterDetailController = lController as IUMasterDetailController;
                    if (lMasterDetailController != null)
                    {
                        navigationItem.SuscribeNavigationEvents(lMasterDetailController.Master as INavigationItemEvents);
                    }
                    else
                    {
                        navigationItem.SuscribeNavigationEvents(lController as INavigationItemEvents);
                    }
                }
            }

            if (lScenario != null)
            {
                lScenario.MdiParent = MainForm;
                LaunchShowState     = ShowState.Showing;
                lScenario.Show();
                LaunchShowState = ShowState.Showed;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Calculate if the node representing the Master will require Intermedia nodes
        /// </summary>
        /// <param name="masterDetailController"></param>
        /// <returns></returns>
        private bool CalculateDetailsGroupingNode(IUMasterDetailController masterDetailController)
        {
            // If there is just one detail
            if (masterDetailController.Details.Count == 1)
            {
                return(false);
            }

            // If there is more than 2
            if (masterDetailController.Details.Count > 2)
            {
                return(true);
            }

            // There is only 2
            int lNumNoPath   = 0;
            int lNumNoInTree = 0;

            foreach (IDetailController lDetail in masterDetailController.Details)
            {
                ExchangeInfoNavigation lNavInfo = lDetail.ExchangeInformation as ExchangeInfoNavigation;
                if (lNavInfo != null && lNavInfo.RolePath.Equals(""))
                {
                    lNumNoPath++;
                }
                else
                {
                    IUMasterDetailController lMasterDetail = lDetail as IUMasterDetailController;
                    if (lMasterDetail != null)
                    {
                        // This detail won't de represented in the Tree if the Master is a population with filters
                        IUPopulationController lPopController = lMasterDetail.Master as IUPopulationController;
                        if (lPopController != null && lPopController.Filters.Count > 0)
                        {
                            lNumNoInTree++;
                        }
                    }
                    else
                    {
                        lNumNoInTree++;
                    }
                }
            }

            // Just one can be shown when this node is selected or both must appear in the tree
            if (lNumNoPath + lNumNoInTree != 1)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates the specific IUMasterDetailController of the 'MDIU_PasajeroAeronave' IU pattern.
        /// </summary>
        /// <param name="exchangeInfo">Exchange information received.</param>
        /// <returns>Specific IUMasterDetailController of the 'MDIU_PasajeroAeronave' IU pattern.</returns>
        public static IUMasterDetailController MasterDetail_MDIU_PasajeroAeronave(ExchangeInfo exchangeInfo)
        {
            IUMasterDetailContext    lContext    = new IUMasterDetailContext("PasajeroAeronave", "MDIU_PasajeroAeronave");
            IUMasterDetailController lController = new IUMasterDetailController("MDIU_PasajeroAeronave", "PasajeroAeronave", "Clas_1348178542592177UIMaDet_1_Alias", lContext, null);

            // Master interaction unit.
            lController.Master = Instance_IIU_PasajeroAeronave(exchangeInfo);

            // Detail interaction units.
            ExchangeInfoNavigation infoDetail0 = new ExchangeInfoNavigation("Pasajero", "", "PasajeroAeronave", "", null, null, "");

            lController.AddDetail(Pasajero.Population_PIU_Pasajero(infoDetail0), "Pasajero", "Clas_1348178542592177UIMaDet_1Det_2_Alias");

            return(lController);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Copy constructor
        /// </summary>
        /// <param name="nodeToBeCopied"></param>
        /// <param name="newExchangeInfo"></param>
        public TreeNodeController(TreeNodeController nodeToBeCopied, ExchangeInfoNavigation newExchangeInfo)
        {
            mRecursiveNodes   = new List <TreeNodeController>();
            mParentNodeId     = nodeToBeCopied.ParentNodeId;
            mNodeId           = nodeToBeCopied.NodeId;
            mIsMainMaster     = false;
            mShowGroupingNode = nodeToBeCopied.ShowGroupingNode;
            Filters           = new FilterControllerList();
            mQueryContext     = new IUPopulationContext(newExchangeInfo, nodeToBeCopied.QueryContext.ClassName, "");
            mQueryContext.DisplaySetAttributes = nodeToBeCopied.QueryContext.DisplaySetAttributes;
            mOriginalNode = nodeToBeCopied;
            IUPopulationContext lPopContext = nodeToBeCopied.QueryContext as IUPopulationContext;

            if (lPopContext != null)
            {
                ((IUPopulationContext)QueryContext).BlockSize = lPopContext.BlockSize;
            }
            mShowInTree  = nodeToBeCopied.ShowInTree;
            mFinalNodeID = nodeToBeCopied.FinalNodeID;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Updates the final controller data, the related instances with the received Oid
        /// </summary>
        /// <param name="parentOid"></param>
        /// <returns></returns>
        internal bool UpdateFinalControllerData(Oid parentOid)
        {
            if (FinalNodeQueryController == null)
            {
                return(false);
            }

            // Update the exchange information
            List <Oid>             lOids      = new List <Oid>();
            ExchangeInfo           lExchgInfo = null;
            ExchangeInfoNavigation lInfoNav   = null;

            if (parentOid != null)
            {
                lOids.Add(parentOid);
            }
            lExchgInfo            = FinalNodeQueryController.ExchangeInformation;
            lInfoNav              = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
            lInfoNav.SelectedOids = lOids;
            FinalNodeQueryController.ExchangeInformation = lInfoNav;

            // Clear the last Oid in the population controller
            IUPopulationController lPopulationController = FinalNodeQueryController as IUPopulationController;

            if (lPopulationController != null)
            {
                lPopulationController.Context.LastOid = null;
                lPopulationController.Context.LastOids.Clear();
            }

            // Refresh data in the controller
            FinalNodeQueryController.UpdateData(true);

            if (lOids.Count == 0)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Execute a query related with other instance.
        /// </summary>
        /// <param name="context">Current context.</param>
        /// <returns>A DataTable with the instances searched.</returns>
        public static DataTable ExecuteQueryRelated(IUQueryContext context)
        {
            try
            {
                ExchangeInfo lExchangeInfo = context.ExchangeInformation;

                if (lExchangeInfo.ExchangeType != ExchangeType.Navigation || lExchangeInfo.SelectedOids.Count == 0)
                {
                    return(null);
                }

                IUPopulationContext lIUContext = context as IUPopulationContext;
                int blockSize = 1;
                if (lIUContext != null)
                {
                    blockSize = lIUContext.BlockSize;
                }
                ExchangeInfoNavigation lNavInfo = lExchangeInfo as ExchangeInfoNavigation;
                // Specific case. No role name indicates Query by Instance.
                if (lNavInfo.RolePath == "")
                {
                    if (lIUContext != null)
                    {
                        lIUContext.LastBlock = true;
                    }

                    PasajeroOid lOidInstance = new PasajeroOid(lNavInfo.SelectedOids[0]);
                    return(ExecuteQueryInstance(context.Agent, lOidInstance, context.DisplaySetAttributes));
                }

                // Get link items.
                Oid lOid = lNavInfo.SelectedOids[0];
                Dictionary <string, Oid> lLinkItems = new Dictionary <string, Oid>(StringComparer.CurrentCultureIgnoreCase);
                lLinkItems.Add(lNavInfo.RolePath, lOid);

                bool        lLastBlock     = true;
                PasajeroOid lLastOid       = null;
                string      lOrderCriteria = string.Empty;

                // Get population members.
                if (lIUContext != null)
                {
                    if (lIUContext.LastOid != null)
                    {
                        lLastOid = new PasajeroOid(lIUContext.LastOid);
                    }
                    lOrderCriteria = lIUContext.OrderCriteriaNameSelected;
                }
                NavigationalFiltering navigationalFiltering = NavigationalFiltering.GetNavigationalFiltering(context);
                DataTable             lDataTable            = ExecuteQueryRelated(context.Agent, lLinkItems, context.DisplaySetAttributes, lOrderCriteria, navigationalFiltering, lLastOid, blockSize, ref lLastBlock);

                if (lIUContext != null)
                {
                    lIUContext.LastBlock = lLastBlock;
                }

                return(lDataTable);
            }
            catch (Exception e)
            {
                ScenarioManager.LaunchErrorScenario(e);
                return(null);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Launchs a navigation in an scenario.
        /// </summary>
        /// <param name="navigationInfo">Navigation information.</param>
        public static void LaunchNavigationScenario(ExchangeInfoNavigation navigationInfo, INavigationItemSuscriber navigationItem)
        {
            // Instance Scenario, initialize and return the controller instance inside the Scenario.
            Form lScenario = CreateScenarioInstance(navigationInfo);
            IUController lController = Initialize(lScenario, navigationInfo);

            if (lController != null)
            {
                if (navigationItem != null)
                {
                    IUMasterDetailController lMasterDetailController = lController as IUMasterDetailController;
                    if (lMasterDetailController != null)
                    {
                        navigationItem.SuscribeNavigationEvents(lMasterDetailController.Master as INavigationItemEvents);
                    }
                    else
                    {
                        navigationItem.SuscribeNavigationEvents(lController as INavigationItemEvents);
                    }
                }
            }

            if (lScenario != null)
            {
                lScenario.MdiParent = MainForm;
                LaunchShowState = ShowState.Showing;
                lScenario.Show();
                LaunchShowState = ShowState.Showed;
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Updates the final controller data, the related instances with the received Oid
        /// </summary>
        /// <param name="parentOid"></param>
        /// <returns></returns>
        internal bool UpdateFinalControllerData(Oid parentOid)
        {
            if (FinalNodeQueryController == null)
            {
                return false;
            }

            // Update the exchange information
            List<Oid> lOids = new List<Oid>();
            ExchangeInfo lExchgInfo = null;
            ExchangeInfoNavigation lInfoNav = null;
            if (parentOid != null)
            {
                lOids.Add(parentOid);
            }
            lExchgInfo = FinalNodeQueryController.ExchangeInformation;
            lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
            lInfoNav.SelectedOids = lOids;
            FinalNodeQueryController.ExchangeInformation = lInfoNav;

            // Clear the last Oid in the population controller
            IUPopulationController lPopulationController = FinalNodeQueryController as IUPopulationController;
            if (lPopulationController != null)
            {
                lPopulationController.Context.LastOid = null;
                lPopulationController.Context.LastOids.Clear();
            }

            // Refresh data in the controller
            FinalNodeQueryController.UpdateData(true);

            if (lOids.Count == 0)
                return false;

            return true;
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Copy constructor
 /// </summary>
 /// <param name="nodeToBeCopied"></param>
 /// <param name="newExchangeInfo"></param>
 public TreeNodeController(TreeNodeController nodeToBeCopied, ExchangeInfoNavigation newExchangeInfo)
 {
     mRecursiveNodes = new List<TreeNodeController>();
     mParentNodeId = nodeToBeCopied.ParentNodeId;
     mNodeId = nodeToBeCopied.NodeId;
     mIsMainMaster = false;
     mShowGroupingNode = nodeToBeCopied.ShowGroupingNode;
     Filters = new FilterControllerList();
     mQueryContext = new IUPopulationContext(newExchangeInfo, nodeToBeCopied.QueryContext.ClassName, "");
     mQueryContext.DisplaySetAttributes = nodeToBeCopied.QueryContext.DisplaySetAttributes;
     mOriginalNode = nodeToBeCopied;
     IUPopulationContext lPopContext = nodeToBeCopied.QueryContext as IUPopulationContext;
     if (lPopContext != null)
     {
         ((IUPopulationContext)QueryContext).BlockSize = lPopContext.BlockSize;
     }
     mShowInTree = nodeToBeCopied.ShowInTree;
     mFinalNodeID = nodeToBeCopied.FinalNodeID;
 }
        /// <summary>
        /// Occurs when the selected instance changes.
        /// </summary>
        /// <param name="sender">Sender object.</param>
        /// <param name="e">SelectedInstanceChangedEventArgs.</param>
        private void HandleMasterSelectedInstanceChanged(object sender, SelectedInstanceChangedEventArgs e)
        {
            // Update context
            UpdateContext();

            // Update details
            ExchangeInfoNavigation lInfoNav;
            foreach (IDetailController lDetail in Details)
            {
                ExchangeInfo lExchgInfo = lDetail.ExchangeInformation;
                lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
                if (lDetail.IsActiveDetail() && e.SelectedInstances != null && e.SelectedInstances.Count == 1)
                {
                    lInfoNav.SelectedOids = e.SelectedInstances;
                }
                else
                {
                    lInfoNav.SelectedOids = null;
                }
                lDetail.ExchangeInformation = lInfoNav;
                ClearLastOids(lDetail as IUQueryController);
                lDetail.UpdateData(true);
            }
        }
        /// <summary>
        /// Process the RefreshDetailRequired event for any detail.
        /// </summary>
        /// <param name="sender"></param>
        protected void ProcessDetailRefreshDetailRequired(object sender)
        {
            IDetailController lDetail = sender as IDetailController;

            if (lDetail == null)
                return;

            // Update the detail.
            ExchangeInfoNavigation lInfoNav;
            ExchangeInfo lExchgInfo = lDetail.ExchangeInformation;
            lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
            if (Master.InstancesSelected != null && Master.InstancesSelected.Count == 1)
            {
                lInfoNav.SelectedOids = Master.InstancesSelected;
            }
            else
            {
                lInfoNav.SelectedOids = null;
            }
            lDetail.ExchangeInformation = lInfoNav;
            ClearLastOids(lDetail as IUQueryController);
            lDetail.UpdateData(true);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// This method allows the creation of recursive relations in the Tree
        /// Adds a new child node to an existing one that must be one of the parent nodes at any level
        /// The new child node will show related instances using the role path 
        /// </summary>
        /// <param name="parentNode">Parent node</param>
        /// <param name="newChildNode">New child node</param>
        /// <param name="rolePath">Role path</param>
        /// <param name="navigationalFilterId">Navigational filter id</param>
        /// <param name="alias">Alias to be shown in the grouping node</param>
        public void AddRecursiveNode(TreeNodeController parentNode, TreeNodeController newChildNode, string rolePath, string navigationalFilterId, string alias)
        {
            // Check if the new child node contains the parent node or it is the same
            // If not, it is not a recursive node
            bool lFound = parentNode == newChildNode;
            if (!lFound)
            {
                foreach (TreeNodeController lNodeController in newChildNode.SubNodes)
                {
                    lFound = ContainsNodeController(lNodeController, parentNode);
                    if (lFound)
                    {
                        break;
                    }
                }
            }

            if (!lFound)
            {
                return;
            }

            // Parent node has a new subnode. All existing subnodes requires a grouping intermedia node
            foreach (TreeNodeController lSubNode in parentNode.SubNodes)
            {
                lSubNode.ShowGroupingNode = true;
            }

            // Add to the list
            ExchangeInfoNavigation lNavInfo = new ExchangeInfoNavigation(newChildNode.QueryContext.ClassName, "", rolePath, navigationalFilterId, null, null, "");
            TreeNodeController lNewNode = new TreeNodeController(newChildNode, lNavInfo);
            parentNode.RecursiveNodes.Add(lNewNode);

            // Notify to the Tree the new recursive node
            Tree.AddRecursiveNode(parentNode.NodeId, newChildNode.NodeId, alias);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Obtains the NavigationalFiltering contained in a IUContext.
        /// </summary>
        /// <param name="context">Context the NavigationalFiltering is obtained from.</param>
        /// <returns>NavigationalFiltering contained in the context.</returns>
        public static NavigationalFiltering GetNavigationalFiltering(IUContext context)
        {
            NavigationalFiltering lResult = null;

            if (HasNavigationalFiltering(context))
            {
                switch (context.ExchangeInformation.ExchangeType)
                {
                case ExchangeType.Navigation:
                {
                    ExchangeInfoNavigation lExchangeInfo = context.ExchangeInformation as ExchangeInfoNavigation;
                    lResult = new NavigationalFiltering(
                        new SelectedObjectNavigationFiltering(
                            lExchangeInfo.NavigationalFilterIdentity,
                            lExchangeInfo.SelectedOids[0]));
                }
                break;

                case ExchangeType.Action:
                {
                    ExchangeInfoAction lExchangeInfo = context.ExchangeInformation as ExchangeInfoAction;
                    if ((lExchangeInfo.SelectedOids == null) || (lExchangeInfo.SelectedOids.Count == 0) || (lExchangeInfo.SelectedOids[0] == null))
                    {
                        IUServiceContext lServiceContext = context.ExchangeInformation.Previous as IUServiceContext;


                        ArgumentsList lArguments = ArgumentsList.GetArgumentsFromContext(lServiceContext);
                        lResult = new NavigationalFiltering(
                            new ServiceIUNavigationFiltering(
                                lExchangeInfo.NavigationalFilterIdentity,
                                lArguments));
                    }
                    else
                    {
                        lResult = new NavigationalFiltering(
                            new SelectedObjectNavigationFiltering(
                                lExchangeInfo.NavigationalFilterIdentity,
                                lExchangeInfo.SelectedOids[0]));
                    }
                }
                break;

                case ExchangeType.SelectionForward:
                {
                    ExchangeInfoSelectionForward lExchangeInfo = context.ExchangeInformation as ExchangeInfoSelectionForward;
                    ArgumentsList       lArguments             = null;
                    IUServiceContext    lServiceContext        = null;
                    IUPopulationContext lPopulationContext     = null;
                    string lClassName = string.Empty;

                    // context is of IUServiceContext type.
                    if (context.ExchangeInformation.Previous.ContextType == ContextType.Service)
                    {
                        lServiceContext = context.ExchangeInformation.Previous as IUServiceContext;
                        lArguments      = ArgumentsList.GetArgumentsFromContext(lServiceContext);
                        lClassName      = lServiceContext.ClassName;
                        if (string.Compare(lClassName, "Global", true) == 0)
                        {
                            lClassName = string.Empty;
                        }

                        lResult = new NavigationalFiltering(
                            new ArgumentNavigationFiltering(
                                lClassName,
                                lServiceContext.ServiceName,
                                lServiceContext.SelectedInputField,
                                lArguments));
                    }
                    // context is of lPopulationContext type.
                    if (context.ExchangeInformation.Previous.ContextType == ContextType.Population)
                    {
                        lPopulationContext = context.ExchangeInformation.Previous as IUPopulationContext;
                        lClassName         = lPopulationContext.ClassName;
                        string lFilterName         = lExchangeInfo.ServiceName;
                        string lFilterVariableName = lExchangeInfo.ArgumentName;
                        lArguments = ArgumentsList.GetArgumentsFromContext(lPopulationContext.Filters[lFilterName]);

                        lResult = new NavigationalFiltering(
                            new FilterVariableNavigationFiltering(
                                lClassName,
                                lFilterName,
                                lFilterVariableName,
                                lArguments));
                    }
                }
                break;

                case ExchangeType.SelectionBackward:
                    break;

                default:
                    break;
                }
            }
            return(lResult);
        }