Exemple #1
0
        }                                                      //"user"

        public MappingWaiting(View view, CarpaccioAction carpaccioAction, string call, string objectName)
        {
            View            = view;
            CarpaccioAction = carpaccioAction;
            Call            = call;
            ObjectName      = objectName;
        }
Exemple #2
0
        /**
         * Called when a view loaded and call a mapping function
         *
         * @param view         the calling view
         * @param mappedObject If available, the object to map with the view. Else add the view to mappingWaitings
         */
        public void CallMappingOnView(CarpaccioAction action, View view, Object mappedObject)
        {
            if (action.IsCallMapping)
            {
                CarpaccioLogger.d(TAG, "callMappingOnView mapping=" + mappedObject + " action=" + action.CompleteCall + " view=" + view.GetType().Name);

                string arg = action.Args[0]; //only map the first argument

                string objectName;

                string call;
                if (arg.Contains("."))                                    //"$user.getName()"
                {
                    call       = arg.Substring(1, arg.Length - 1);        // "user.getName()"
                    objectName = call.Substring(0, arg.IndexOf('.') - 1); // "user"
                }
                else
                {
                    objectName = arg.Substring(1, arg.Length - 1); // "user"
                    call       = objectName;                       // "user"
                }

                //if you already have the object
                if (mappedObject != null)
                {
                    string value = Evaluate(mappedObject, call);

                    CarpaccioLogger.d(TAG, "callMappingOnView evaluate(" + call + ")" + " on " + mappedObject.GetType().Name + " returned " + value);

                    action.Values = new[] { value }; //TODO

                    MappingManagerCallback.CallActionOnView(action, view);
                }
                else
                {
                    //add to waiting
                    List <MappingWaiting> waitings = MappingWaitings.GetOrDefault(objectName) ?? new List <MappingWaiting>(); //["user"] = List<MappingWaiting>
                    waitings.Add(new MappingWaiting(view, action, call, objectName));

                    CarpaccioLogger.d(TAG, "added to waiting " + call + " for " + view.GetType().Name);

                    MappingWaitings.AddOrUpdate(objectName, waitings);
                }
            }
        }