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

package com.persagy.revit.models.entities

import com.alibaba.fastjson.annotation.JSONField
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import com.persagy.server.datacenter.models.entities.graphtype.MLocation
import com.persagy.server.datacenter.models.entities.graphtype.MPoint
import io.swagger.v3.oas.annotations.media.Schema
import javax.persistence.Column
import javax.persistence.Table
/**
 * 门
 *
 * @author jxing
 */
@Schema(description = "门")
@Table(name = "revit.door")
@JsonIgnoreProperties(ignoreUnknown = true)
class Door : WindowDoorBase() {

    /** 名称 */
   @Schema(description = "名称")
    @Column(name = "name")
    @JSONField(name = "Name")
    @JsonProperty("Name")
    var name: String? = null

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

//    /** 宽度 */
//   @Schema(description = "宽度")
//    @Column(name = "width")
//    @JsonProperty("Width")
//    @JSONField(name = "Width")
//    var width: Double? = null

    /** 定位点 */
   @Schema(description = "定位点")
    @Column(name = "location")
    @JSONField(name = "Location")
    @JsonProperty("Location")
    var location: MLocation? = null

    /** 轮廓线 */
   @Schema(description = "轮廓线")
    @Column(name = "outline")
    @JSONField(name = "OutLine")
    @JsonProperty("OutLine")
    var outline: ArrayList<ArrayList<MPoint>>? = null

    /** 面方向 */
   @Schema(description = "面方向")
    @Column(name = "face_direction")
    @JSONField(name = "FaceDirection")
    @JsonProperty("FaceDirection")
    var faceDirection : MPoint? = null

    /** Hand方向 */
   @Schema(description = "Hand方向")
    @Column(name = "hand_direction")
    @JSONField(name = "HandDirection")
    @JsonProperty("HandDirection")
    var handDirection : MPoint? = null

    /** 类型中文名称 */
   @Schema(description = "类型中文名称")
    @Column(name = "family_name")
    @JSONField(name = "FamilyName")
    @JsonProperty("FamilyName")
    var familyName: String? = null

    /** 族符号 */
   @Schema(description = "族符号")
    @Column(name = "family_symbol")
    @JSONField(name = "FamilySymbol")
    @JsonProperty("FamilySymbol")
    var familySymbol: String? = null

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

//    @JSONField(name = "ElementType")
//   @Schema(description = "类型")
//    @Column(name = "type")
//    var elementType : String? = null

    @JSONField(name = "Thick")
   @Schema(description = "厚度")
    @Column(name = "thick")
    @JsonProperty("Thick")
    var thick : Double? = null

    // 以下是json解析字段

//    @JSONField(name = "Owner")
//    var jsonOwner : 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 = "FaceDirection")
//    var jsonFaceDirection : Point? = null //
//
//    @JSONField(name = "HandDirection")
//    var jsonHandDirection : Point? = null //
//
//    @JSONField(name = "Thick")
//    var jsonThick : Double? = null //
//
//    @JSONField(name = "Id")
//    var jsonId : String? = null //
//
//    @JSONField(name = "ElementType")
//    var jsonElementType : String? = null //
//
//    @JSONField(name = "Name")
//    var jsonName: String? = null  //
}