/// <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)); }
/// <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)); }
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); }
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()); }
/// <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)); }
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; } }