/*
 * ********************************************************************************************************************
 *
 *                      :*$@@%$*:                         ;:                ;;    ;;
 *                    :@@%!  :!@@%:                       %!             ;%%@@%$ =@@@@@@@%;     @%@@@%%%%@@@@@
 *                   :@%;       :$=                       %%$$$%$$         ;$$  ;$@=   !@$
 *                   =@!                                  %!              @ $=;%   !@@@%:      !$$$$$$$$$$$$$$=
 *                   =@*                                  %!              @ $= % %@=   =%@!      %=
 *              *$%%! @@=        ;=$%%%$*:                %!              @ $= % =%%%%%%@$      *%:         =%
 *            %@@!:    !@@@%=$@@@@%!  :*@@$:              %!              @ $= % $*     ;@      @*          :%*
 *          ;@@!          ;!!!;:         ;@%:      =======@%========*     @ $$ % $%*****$@     :@$=*********=@$
 *          $@*   ;@@@%=!:                *@*
 *          =@$    ;;;!=%@@@@=!           =@!
 *           %@$:      =@%: :*@@@*       %@=                    Copyright (c) 2016-2019.  北京上格云技术有限公司
 *            ;%@@$=$@@%*       *@@@$=%@@%;
 *               ::;::             ::;::                                              All rights reserved.
 *
 * ********************************************************************************************************************
 */

package cn.sagacloud.server.algorithm.models.entities

import cn.sagacloud.server.algorithm.models.jsonAnalyzer.Location
import cn.sagacloud.server.algorithm.models.jsonAnalyzer.Parameter
import cn.sagacloud.server.algorithm.models.jsonAnalyzer.Point
import com.alibaba.fastjson.annotation.JSONField
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiModelProperty
import javax.persistence.Column
import javax.persistence.Table
/**
 * 空间
 *
 * @author jxing
 */
@ApiModel(description = "空间")
@Table(name = "revit.space")

class BGSpace : BGBaseComponent(){

    /** 名称 */
    @ApiModelProperty(value = "名称")
    @Column(name = "name")
    @JSONField(name = "Name")
    var name: String? = null

    /** 对应Revit模型id */
    @ApiModelProperty(value = "对应Revit模型id")
    @Column(name = "source_id")
    @JSONField(name = "SourceId")
    var sourceId: String? = null

    /** 补充信息 */
    @ApiModelProperty(value = "补充信息")
    @Column(name = "tag")
    @JSONField(name = "Tag")
    var tag: String? = null

    /** 定位点 */
    @ApiModelProperty(value = "定位点")
    @Column(name = "location")
    @JSONField(name = "Location")
    var location: Location? = null

    /** 空间轮廓 */
    @ApiModelProperty(value = "空间轮廓")
    @Column(name = "outline")
    @JSONField(name = "OutLine")
    var outline: ArrayList<ArrayList<Point>>? = null

    /** 轮廓线段 */
    @ApiModelProperty(value = "轮廓线段")
    @Column(name = "boundary_segments")
    @JSONField(name = "BoundarySegments")
    var boundarySegment: ArrayList<ArrayList<String>>? = null

    /** 参数列表 */
    @ApiModelProperty(value = "参数列表")
    @Column(name = "parameters")
    @JSONField(name = "Parameters")
    var parameters: ArrayList<Parameter>? = null

    @ApiModelProperty(value = "revit模型中的id")
    @Column(name = "revit_id")
    @JSONField(name = "Id")
    var revitId : String? = null

    @JSONField(name = "ElementType")
    @ApiModelProperty(value = "类型")
    @Column(name = "type")
    var elementType : String? = null

    /** 万达专用信息点 */
    @ApiModelProperty(value = "万达专用信息点")
    @Column(name = "wd_room_func_id")
    @JSONField(name = "WDRoomFuncID")
    @JsonProperty("WDRoomFuncID")
    var wDRoomFuncID: String? = null


    /** 万达专用信息点 */
    @ApiModelProperty(value = "万达专用信息点")
    @Column(name = "wd_room_func_name")
    @JSONField(name = "WDRoomFuncName")
    @JsonProperty("WDRoomFuncName")
    var wDRoomFuncName : String? = null

    @JSONField(name = "Height")
    @ApiModelProperty(value = "空间高度")
    @Column(name = "height")
    var height : Double? = null


    // 以下是json解析字段
//
//    @JSONField(name = "BoundarySegments")
//    var jsonBoundarySegments : ArrayList<ArrayList<String>>? = null  //
//
//    @JSONField(name = "Location")
//    var jsonLocation : Location? = null  //
//
//    @JSONField(name = "OutLine")
//    var jsonOutline : ArrayList<ArrayList<Point>>? = null  //
//
//    @JSONField(name = "SourceId")
//    var jsonSourceId : String? = null//
//
//    @JSONField(name = "Parameters")
//    var jsonParameters : ArrayList<Map<String, String?>>? = null //
//
//    @JSONField(name = "Id")
//    var jsonId : String? = null  //
//
//    @JSONField(name = "ElementType")
//    var jsonElementType : String? = null  //
//
//    @JSONField(name = "Name")
//    var jsonName: String? = null //
//
//    @JSONField(name = "Tag")
//    var jsonTag: String? = null
}