Пример #1
0
        /// <summary>
        /// Returns a list of all attributes of the entity
        /// Usage:
        ///		- Not used (normally retrieved with the entity)
        /// Includes domain object data for:
        ///		- Attribute
        /// Links:
        ///		- www.darwin.com/project/{id}/database/{id}/entity/{id}/attribute/{id} (relation: self)
        ///		- www.darwin.com/project/{id}/database/{id}/datatype/{id} (relation: http://www.darwin.org/rels/datatype)
        /// </summary>
        /// <param name="request">Request.</param>
        /// <param name="projectId">Project id.</param>
        /// <param name="databaseId">Database id.</param>
        /// <param name="entityId">Entity id.</param>
        /// <param name="pageSize">Page size.</param>
        /// <param name="pageNumber">Page number.</param>
        /// <returns>List of all attributes of the entity</returns>
        public HttpResponseMessage Get(HttpRequestMessage request, string projectId, string databaseId, string entityId, int pageSize = 10, int pageNumber = 0)
        {
            // Parse and validate input parameters
            Guid projectIdParsed  = this.ParseAndValidateProjectId(request, projectId);
            Guid databaseIdParsed = this.ParseAndValidateDatabaseId(request, databaseId);
            Guid entityIdParsed   = this.ParseAndValidateEntityId(request, entityId);

            this.ValidatePageSize(request, pageSize);
            this.ValidatePageNumber(request, pageNumber);

            // Retrieve objects
            var project  = this.RetrieveProject(request, projectIdParsed);
            var database = this.RetrieveDatabase(request, databaseIdParsed, project);
            var entity   = this.RetrieveEntity(request, entityIdParsed, database);

            var getObjectList = new GetObjectList <RESTModel.Attribute>();
            var queryResult   = getObjectList.Execute(ObjectListDataSource.EntityAttributes, new EntityAttributesFilter(entity.Id), pageSize, pageNumber);

            // Add links
            var linkBuilder = new LinkBuilder(Url);

            linkBuilder.ProjectId  = project.Id;
            linkBuilder.DatabaseId = database.Id;
            foreach (var attribute in queryResult.ResultSet)
            {
                attribute.AddLinks(linkBuilder);
            }

            // Wrap into the collection
            var collection = this.WrapQueryResultIntoCollection(queryResult);

            // Return the object
            return(request.CreateResponse(HttpStatusCode.OK, collection));
        }
Пример #2
0
        /// <summary>
        /// Returns a list of all databases in the project
        /// Usage:
        ///		- User select a current database in the drop-down - to retrieve the list of available databases
        /// Includes domain object data for:
        ///		- Database
        /// Links:
        ///		- www.darwin.com/project/{id}/database/{id} (relation: self)
        /// </summary>
        /// <param name="request">Request.</param>
        /// <param name="projectId">Project id.</param>
        /// <param name="pageSize">Page size.</param>
        /// <param name="pageNumber">Page number.</param>
        /// <returns>List of all databases in the project.</returns>
        public HttpResponseMessage Get(HttpRequestMessage request, string projectId, int pageSize = 10, int pageNumber = 0)
        {
            // Parse and validate input parameters
            Guid projectIdParsed = this.ParseAndValidateProjectId(request, projectId);

            this.ValidatePageSize(request, pageSize);
            this.ValidatePageNumber(request, pageNumber);

            // Retrieve objects
            var project = this.RetrieveProject(request, projectIdParsed);

            var getObjectList = new GetObjectList <Database>();
            var queryResult   = getObjectList.Execute(ObjectListDataSource.ProjectDatabases, new ProjectDatabasesFilter(project.Id), pageSize, pageNumber);

            // Add links
            var linkBuilder = new LinkBuilder(Url);

            foreach (var database in queryResult.ResultSet)
            {
                database.AddLinks(linkBuilder);
            }

            // Wrap into the collection
            var collection = this.WrapQueryResultIntoCollection(queryResult);

            // Return the object
            return(request.CreateResponse(HttpStatusCode.OK, collection));
        }
Пример #3
0
        public GetObjectListResponse GetObjectList(GetObjectListRequest request)
        {
            var response = new GetObjectList().Execute(request) as GetObjectListResponse;

            if (response == null)
            {
                throw new InvalidOperationException("Response is null or wrong response type. Expected: GetObjectListResponse");
            }
            return(response);
        }
Пример #4
0
        public static List <T> CheckOtherNode <T, U>(List <GameObject> ObjList,
                                                     List <T> checkList,
                                                     String varName,
                                                     GetObjectList <T> getListDelegate)
            where T : UnityEngine.Object
            where U : NodeBase
        {
            foreach (var obj in ObjList)
            {
                var node = obj.GetComponent <U>();
                if (node == null)
                {
                    continue;
                }

                List <T> currentList = getListDelegate(node, varName);

                for (int i = 0; i < checkList.Count; i++)
                {
                    if (checkList[i] == default(T))
                    {
                        continue;
                    }

                    List <T> list = new List <T>(currentList);

                    list = list.Where(x => x == checkList[i]).ToList();
                    if (list.Count != 1)
                    {
                        continue;
                    }

                    Debug.LogWarning("\"" + checkList[i].name +
                                     "\" is already added in \"" +
                                     obj.name + "\"");

                    checkList[i] = default(T);
                }
            }

            return(checkList.Where(x => x != null).ToList());
        }
Пример #5
0
        /// <summary>
        /// Returns a list of all projects.
        /// Usage:
        ///		- User selects a project to open - to return the list of all projects available to user
        ///		- Well-known entry point
        /// Includes domain object data for:
        ///		- Project
        ///	Links:
        ///		- www.darwin.com/project/{id} (relation: self)
        /// </summary>
        /// <param name="request">Request.</param>
        /// <param name="pageSize">Page size.</param>
        /// <param name="pageNumber">Page number.</param>
        /// <returns>List of all projects.</returns>
        public HttpResponseMessage Get(HttpRequestMessage request, int pageSize = 10, int pageNumber = 0)
        {
            // Parse and validate input parameters
            this.ValidatePageSize(request, pageSize);
            this.ValidatePageNumber(request, pageNumber);

            // Retrieve objects
            var getObjectList = new GetObjectList <Project>();
            var queryResult   = getObjectList.Execute(ObjectListDataSource.Projects, ListFilter.Empty, pageSize, pageNumber);

            // Add links
            var linkBuilder = new LinkBuilder(Url);

            foreach (var project in queryResult.ResultSet)
            {
                project.AddLinks(linkBuilder);
            }

            // Wrap into the collection
            var collection = this.WrapQueryResultIntoCollection(queryResult);

            // Return the object
            return(request.CreateResponse(HttpStatusCode.OK, collection));
        }
Пример #6
0
        public static void DragAndDropObject <T, U>(NodeBase parentNode,
                                                    List <GameObject> parentList,
                                                    SerializedProperty propList,
                                                    Rect rect,
                                                    GetObjectList <T> getListDelegate,
                                                    bool checkOtherNode)
            where T : UnityEngine.Object
            where U : NodeBase
        {
            int id  = GUIUtility.GetControlID(FocusType.Passive);
            var evt = Event.current;

            switch (evt.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                if (!rect.Contains(evt.mousePosition))
                {
                    break;
                }

                DragAndDrop.visualMode      = DragAndDropVisualMode.Copy;
                DragAndDrop.activeControlID = id;

                if (evt.type != EventType.DragPerform)
                {
                    break;
                }

                DragAndDrop.AcceptDrag();

                // 追加処理

                // propertyからlistにコピー
                List <T> list = new List <T>();
                for (int i = 0; i < propList.arraySize; i++)
                {
                    SerializedProperty propObj = propList.GetArrayElementAtIndex(i);
                    list.Add(propObj.objectReferenceValue as T);
                }

                // GameObjectかそれ以外で処理を変更する
                var draggedList = typeof(T) == typeof(GameObject) ?
                                  new List <T>() :
                                  DragAndDrop.objectReferences.OfType <T>().ToList();

                List <GameObject> draggedObjList =
                    DragAndDrop.objectReferences.OfType <GameObject>().ToList();

                List <T> draggedAllList = new List <T>();
                foreach (var item in draggedObjList)
                {
                    List <T> objs = new List <T>();

                    if (typeof(T) == typeof(GameObject))
                    {
                        objs = item.GetMeshObjectList() as List <T>;
                    }
                    else if (typeof(T) == typeof(Material))     // FIXME: TがMaterialを継承したクラスでも大丈夫?
                    {
                        objs = item.GetMeshMaterialList() as List <T>;
                    }
                    draggedAllList.AddRange(objs.ToList());
                }

                draggedList.AddRange(draggedAllList.Distinct().ToList());

                // 他ノードとの重複チェック
                if (checkOtherNode)
                {
                    draggedList = CheckOtherNode <T, U>(parentList,
                                                        draggedList.Distinct().ToList(),
                                                        propList.name,
                                                        getListDelegate);
                }

                // 追加
                list.AddRange(draggedList);

                if (!checkOtherNode)
                {
                    // 現在のリスト内で被ったら警告表示
                    List <T> overlappedList = list.CheckOverlapped();
                    foreach (var item in overlappedList)
                    {
                        Debug.LogWarning("\"" + item.name +
                                         "\" is already added in \"" +
                                         parentNode.name + "\"");
                    }
                    list = list.Distinct().ToList();
                }

                // Null除去
                list = list.Where(x => x != null).ToList();

                // propertyで反映
                propList.arraySize = list.Count;
                for (int i = 0; i < list.Count; i++)
                {
                    SerializedProperty propObj = propList.GetArrayElementAtIndex(i);
                    propObj.objectReferenceValue = list[i];
                }

                DragAndDrop.activeControlID = 0;

                Event.current.Use();
                break;
            }
        }