001// ______________________________________________________ 002// Generated by sql2java - https://github.com/10km/sql2java-2-6-7 (custom branch) 003// modified by guyadong from 004// sql2java original version https://sourceforge.net/projects/sql2java/ 005// JDBC driver used at code generation time: com.mysql.jdbc.Driver 006// template: bean.java.vm 007// ______________________________________________________ 008package net.gdface.facelog.db; 009import java.io.Serializable; 010import java.util.List; 011import java.util.Objects; 012 013import com.facebook.swift.codec.ThriftStruct; 014import com.facebook.swift.codec.ThriftField; 015import com.facebook.swift.codec.ThriftField.Requiredness; 016import io.swagger.annotations.ApiModel; 017import io.swagger.annotations.ApiModelProperty; 018/** 019 * FaceBean is a mapping of fl_face Table. 020 * <br>Meta Data Information (in progress): 021 * <ul> 022 * <li>comments: 人脸检测信息数据表,用于保存检测到的人脸的所有信息(特征数据除外) </li> 023 * </ul> 024 * @author guyadong 025*/ 026@ThriftStruct 027@ApiModel(description="人脸检测信息数据表,用于保存检测到的人脸的所有信息(特征数据除外)") 028public final class FaceBean 029 implements Serializable,BaseBean<FaceBean>,Comparable<FaceBean>,Constant,Cloneable 030{ 031 private static final long serialVersionUID = -1428389659131258505L; 032 /** NULL {@link FaceBean} bean , IMMUTABLE instance */ 033 public static final FaceBean NULL = new FaceBean().asNULL().asImmutable(); 034 /** comments:主键 */ 035 @ApiModelProperty(value = "主键" ,required=true ,dataType="Integer") 036 private Integer id; 037 038 /** comments:外键,所属图像id */ 039 @ApiModelProperty(value = "外键,所属图像id" ,required=true ,dataType="String") 040 private String imageMd5; 041 042 /** comments:人脸位置矩形:x */ 043 @ApiModelProperty(value = "人脸位置矩形:x" ,required=true ,dataType="Integer") 044 private Integer faceLeft; 045 046 /** comments:人脸位置矩形:y */ 047 @ApiModelProperty(value = "人脸位置矩形:y" ,required=true ,dataType="Integer") 048 private Integer faceTop; 049 050 /** comments:人脸位置矩形:width */ 051 @ApiModelProperty(value = "人脸位置矩形:width" ,required=true ,dataType="Integer") 052 private Integer faceWidth; 053 054 /** comments:人脸位置矩形:height */ 055 @ApiModelProperty(value = "人脸位置矩形:height" ,required=true ,dataType="Integer") 056 private Integer faceHeight; 057 058 /** comments:左眼位置:x */ 059 @ApiModelProperty(value = "左眼位置:x" ,dataType="Integer") 060 private Integer eyeLeftx; 061 062 /** comments:左眼位置:y */ 063 @ApiModelProperty(value = "左眼位置:y" ,dataType="Integer") 064 private Integer eyeLefty; 065 066 /** comments:右眼位置:x */ 067 @ApiModelProperty(value = "右眼位置:x" ,dataType="Integer") 068 private Integer eyeRightx; 069 070 /** comments:右眼位置:y */ 071 @ApiModelProperty(value = "右眼位置:y" ,dataType="Integer") 072 private Integer eyeRighty; 073 074 /** comments:嘴巴位置:x */ 075 @ApiModelProperty(value = "嘴巴位置:x" ,dataType="Integer") 076 private Integer mouthX; 077 078 /** comments:嘴巴位置:y */ 079 @ApiModelProperty(value = "嘴巴位置:y" ,dataType="Integer") 080 private Integer mouthY; 081 082 /** comments:鼻子位置:x */ 083 @ApiModelProperty(value = "鼻子位置:x" ,dataType="Integer") 084 private Integer noseX; 085 086 /** comments:鼻子位置:y */ 087 @ApiModelProperty(value = "鼻子位置:y" ,dataType="Integer") 088 private Integer noseY; 089 090 /** comments:人脸姿态:偏航角 */ 091 @ApiModelProperty(value = "人脸姿态:偏航角" ,dataType="Integer") 092 private Integer angleYaw; 093 094 /** comments:人脸姿态:俯仰角 */ 095 @ApiModelProperty(value = "人脸姿态:俯仰角" ,dataType="Integer") 096 private Integer anglePitch; 097 098 /** comments:人脸姿态:滚转角 */ 099 @ApiModelProperty(value = "人脸姿态:滚转角" ,dataType="Integer") 100 private Integer angleRoll; 101 102 /** comments:扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析 */ 103 @ApiModelProperty(value = "扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析" ,dataType="ByteBuffer") 104 private java.nio.ByteBuffer extInfo; 105 106 /** comments:外键,人脸特征数据MD5 id */ 107 @ApiModelProperty(value = "外键,人脸特征数据MD5 id" ,dataType="String") 108 private String featureMd5; 109 110 /** flag whether {@code this} can be modified */ 111 private Boolean immutable; 112 /** columns modified flag */ 113 @ApiModelProperty(value="columns modified flag",dataType="int",required=true) 114 private int modified; 115 /** columns initialized flag */ 116 @ApiModelProperty(value="columns initialized flag",dataType="int",required=true) 117 private int initialized; 118 /** new record flag */ 119 @ApiModelProperty(value="new record flag",dataType="boolean",required=true) 120 private boolean isNew; 121 /** 122 * set immutable status 123 * @return {@code this} 124 */ 125 private FaceBean immutable(Boolean immutable) { 126 this.immutable = immutable; 127 return this; 128 } 129 /** 130 * set {@code this} as immutable object 131 * @return {@code this} 132 */ 133 public FaceBean asImmutable() { 134 return immutable(Boolean.TRUE); 135 } 136 /** 137 * @return {@code true} if {@code this} is a mutable object 138 */ 139 public boolean mutable(){ 140 return !Boolean.TRUE.equals(this.immutable); 141 } 142 /** 143 * @return {@code this} 144 * @throws IllegalStateException if {@code this} is a immutable object 145 */ 146 private FaceBean checkMutable(){ 147 if(!mutable()){ 148 throw new IllegalStateException("this is a immutable object"); 149 } 150 return this; 151 } 152 /** 153 * @return return a new mutable copy of this object. 154 */ 155 public FaceBean cloneMutable(){ 156 return clone().immutable(null); 157 } 158 @ThriftField(value=1,name="_new",requiredness=Requiredness.REQUIRED) 159 @Override 160 public boolean isNew() 161 { 162 return this.isNew; 163 } 164 165 166 @Override 167 public void isNew(boolean isNew) 168 { 169 this.isNew = isNew; 170 } 171 /** 172 * Specifies to the object if it has been set as new. 173 * 174 * @param isNew the boolean value to be assigned to the isNew field 175 */ 176 @ThriftField() 177 public void setNew(boolean isNew) 178 { 179 this.isNew = isNew; 180 } 181 /** 182 * @return the modified status of columns 183 */ 184 @ThriftField(value=2,requiredness=Requiredness.REQUIRED) 185 public int getModified(){ 186 return modified; 187 } 188 189 /** 190 * @param modified the modified status bit to be assigned to {@link #modified} 191 */ 192 @ThriftField() 193 public void setModified(int modified){ 194 this.modified = modified; 195 } 196 /** 197 * @return the initialized status of columns 198 */ 199 @ThriftField(value=3,requiredness=Requiredness.REQUIRED) 200 public int getInitialized(){ 201 return initialized; 202 } 203 204 /** 205 * @param initialized the initialized status bit to be assigned to {@link #initialized} 206 */ 207 @ThriftField() 208 public void setInitialized(int initialized){ 209 this.initialized = initialized; 210 } 211 protected static final <T extends Comparable<T>>boolean equals(T a, T b) { 212 return a == b || (a != null && 0==a.compareTo(b)); 213 } 214 public FaceBean(){ 215 super(); 216 reset(); 217 } 218 /** 219 * construct a new instance filled with primary keys 220 * @param id PK# 1 221 */ 222 public FaceBean(Integer id){ 223 this(); 224 setId(id); 225 } 226 /** 227 * Getter method for {@link #id}.<br> 228 * PRIMARY KEY.<br> 229 * Meta Data Information (in progress): 230 * <ul> 231 * <li>full name: fl_face.id</li> 232 * <li> imported key: fl_log.compare_face</li> 233 * <li>comments: 主键</li> 234 * <li>AUTO_INCREMENT</li> 235 * <li>NOT NULL</li> 236 * <li>column size: 10</li> 237 * <li>JDBC type returned by the driver: Types.INTEGER</li> 238 * </ul> 239 * 240 * @return the value of id 241 */ 242 @ThriftField(value=4) 243 public Integer getId(){ 244 return id; 245 } 246 /** 247 * Setter method for {@link #id}.<br> 248 * The new value is set only if equals() says it is different, 249 * or if one of either the new value or the current value is null. 250 * In case the new value is different, it is set and the field is marked as 'modified'. 251 * 252 * @param newVal the new value to be assigned to id 253 */ 254 public void setId(Integer newVal) 255 { 256 checkMutable(); 257 258 modified |= FL_FACE_ID_ID_MASK; 259 initialized |= FL_FACE_ID_ID_MASK; 260 261 if (Objects.equals(newVal, id)) { 262 return; 263 } 264 id = newVal; 265 } 266 /** 267 * setter for thrift:swift support<br> 268 * without modification for {@link #modified} and {@link #initialized}<br> 269 * <b>NOTE:</b>DO NOT use the method in your code 270 */ 271 @ThriftField(name = "id") 272 public void writeId(Integer newVal){ 273 checkMutable(); 274 id = newVal; 275 } 276 /** 277 * Setter method for {@link #id}.<br> 278 * Convenient for those who do not want to deal with Objects for primary types. 279 * 280 * @param newVal the new value to be assigned to id 281 */ 282 public void setId(int newVal) 283 { 284 setId(new Integer(newVal)); 285 } 286 /** 287 * Determines if the id has been modified. 288 * 289 * @return true if the field has been modified, false if the field has not been modified 290 */ 291 public boolean checkIdModified() 292 { 293 return 0L != (modified & FL_FACE_ID_ID_MASK); 294 } 295 296 /** 297 * Determines if the id has been initialized.<br> 298 * 299 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 300 * 301 * @return true if the field has been initialized, false otherwise 302 */ 303 public boolean checkIdInitialized() 304 { 305 return 0L != (initialized & FL_FACE_ID_ID_MASK); 306 } 307 /** 308 * Getter method for {@link #imageMd5}.<br> 309 * Meta Data Information (in progress): 310 * <ul> 311 * <li>full name: fl_face.image_md5</li> 312 * <li> foreign key: fl_image.md5</li> 313 * <li>comments: 外键,所属图像id</li> 314 * <li>NOT NULL</li> 315 * <li>column size: 32</li> 316 * <li>JDBC type returned by the driver: Types.CHAR</li> 317 * </ul> 318 * 319 * @return the value of imageMd5 320 */ 321 @ThriftField(value=5) 322 public String getImageMd5(){ 323 return imageMd5; 324 } 325 /** 326 * Setter method for {@link #imageMd5}.<br> 327 * The new value is set only if equals() says it is different, 328 * or if one of either the new value or the current value is null. 329 * In case the new value is different, it is set and the field is marked as 'modified'. 330 * 331 * @param newVal the new value( NOT NULL) to be assigned to imageMd5 332 */ 333 public void setImageMd5(String newVal) 334 { 335 checkMutable(); 336 337 modified |= FL_FACE_ID_IMAGE_MD5_MASK; 338 initialized |= FL_FACE_ID_IMAGE_MD5_MASK; 339 340 if (Objects.equals(newVal, imageMd5)) { 341 return; 342 } 343 imageMd5 = newVal; 344 } 345 /** 346 * setter for thrift:swift support<br> 347 * without modification for {@link #modified} and {@link #initialized}<br> 348 * <b>NOTE:</b>DO NOT use the method in your code 349 */ 350 @ThriftField(name = "imageMd5") 351 public void writeImageMd5(String newVal){ 352 checkMutable(); 353 imageMd5 = newVal; 354 } 355 /** 356 * Determines if the imageMd5 has been modified. 357 * 358 * @return true if the field has been modified, false if the field has not been modified 359 */ 360 public boolean checkImageMd5Modified() 361 { 362 return 0L != (modified & FL_FACE_ID_IMAGE_MD5_MASK); 363 } 364 365 /** 366 * Determines if the imageMd5 has been initialized.<br> 367 * 368 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 369 * 370 * @return true if the field has been initialized, false otherwise 371 */ 372 public boolean checkImageMd5Initialized() 373 { 374 return 0L != (initialized & FL_FACE_ID_IMAGE_MD5_MASK); 375 } 376 /** 377 * Getter method for {@link #faceLeft}.<br> 378 * Meta Data Information (in progress): 379 * <ul> 380 * <li>full name: fl_face.face_left</li> 381 * <li>comments: 人脸位置矩形:x</li> 382 * <li>NOT NULL</li> 383 * <li>column size: 10</li> 384 * <li>JDBC type returned by the driver: Types.INTEGER</li> 385 * </ul> 386 * 387 * @return the value of faceLeft 388 */ 389 @ThriftField(value=6) 390 public Integer getFaceLeft(){ 391 return faceLeft; 392 } 393 /** 394 * Setter method for {@link #faceLeft}.<br> 395 * The new value is set only if equals() says it is different, 396 * or if one of either the new value or the current value is null. 397 * In case the new value is different, it is set and the field is marked as 'modified'. 398 * 399 * @param newVal the new value( NOT NULL) to be assigned to faceLeft 400 */ 401 public void setFaceLeft(Integer newVal) 402 { 403 checkMutable(); 404 405 modified |= FL_FACE_ID_FACE_LEFT_MASK; 406 initialized |= FL_FACE_ID_FACE_LEFT_MASK; 407 408 if (Objects.equals(newVal, faceLeft)) { 409 return; 410 } 411 faceLeft = newVal; 412 } 413 /** 414 * setter for thrift:swift support<br> 415 * without modification for {@link #modified} and {@link #initialized}<br> 416 * <b>NOTE:</b>DO NOT use the method in your code 417 */ 418 @ThriftField(name = "faceLeft") 419 public void writeFaceLeft(Integer newVal){ 420 checkMutable(); 421 faceLeft = newVal; 422 } 423 /** 424 * Setter method for {@link #faceLeft}.<br> 425 * Convenient for those who do not want to deal with Objects for primary types. 426 * 427 * @param newVal the new value to be assigned to faceLeft 428 */ 429 public void setFaceLeft(int newVal) 430 { 431 setFaceLeft(new Integer(newVal)); 432 } 433 /** 434 * Determines if the faceLeft has been modified. 435 * 436 * @return true if the field has been modified, false if the field has not been modified 437 */ 438 public boolean checkFaceLeftModified() 439 { 440 return 0L != (modified & FL_FACE_ID_FACE_LEFT_MASK); 441 } 442 443 /** 444 * Determines if the faceLeft has been initialized.<br> 445 * 446 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 447 * 448 * @return true if the field has been initialized, false otherwise 449 */ 450 public boolean checkFaceLeftInitialized() 451 { 452 return 0L != (initialized & FL_FACE_ID_FACE_LEFT_MASK); 453 } 454 /** 455 * Getter method for {@link #faceTop}.<br> 456 * Meta Data Information (in progress): 457 * <ul> 458 * <li>full name: fl_face.face_top</li> 459 * <li>comments: 人脸位置矩形:y</li> 460 * <li>NOT NULL</li> 461 * <li>column size: 10</li> 462 * <li>JDBC type returned by the driver: Types.INTEGER</li> 463 * </ul> 464 * 465 * @return the value of faceTop 466 */ 467 @ThriftField(value=7) 468 public Integer getFaceTop(){ 469 return faceTop; 470 } 471 /** 472 * Setter method for {@link #faceTop}.<br> 473 * The new value is set only if equals() says it is different, 474 * or if one of either the new value or the current value is null. 475 * In case the new value is different, it is set and the field is marked as 'modified'. 476 * 477 * @param newVal the new value( NOT NULL) to be assigned to faceTop 478 */ 479 public void setFaceTop(Integer newVal) 480 { 481 checkMutable(); 482 483 modified |= FL_FACE_ID_FACE_TOP_MASK; 484 initialized |= FL_FACE_ID_FACE_TOP_MASK; 485 486 if (Objects.equals(newVal, faceTop)) { 487 return; 488 } 489 faceTop = newVal; 490 } 491 /** 492 * setter for thrift:swift support<br> 493 * without modification for {@link #modified} and {@link #initialized}<br> 494 * <b>NOTE:</b>DO NOT use the method in your code 495 */ 496 @ThriftField(name = "faceTop") 497 public void writeFaceTop(Integer newVal){ 498 checkMutable(); 499 faceTop = newVal; 500 } 501 /** 502 * Setter method for {@link #faceTop}.<br> 503 * Convenient for those who do not want to deal with Objects for primary types. 504 * 505 * @param newVal the new value to be assigned to faceTop 506 */ 507 public void setFaceTop(int newVal) 508 { 509 setFaceTop(new Integer(newVal)); 510 } 511 /** 512 * Determines if the faceTop has been modified. 513 * 514 * @return true if the field has been modified, false if the field has not been modified 515 */ 516 public boolean checkFaceTopModified() 517 { 518 return 0L != (modified & FL_FACE_ID_FACE_TOP_MASK); 519 } 520 521 /** 522 * Determines if the faceTop has been initialized.<br> 523 * 524 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 525 * 526 * @return true if the field has been initialized, false otherwise 527 */ 528 public boolean checkFaceTopInitialized() 529 { 530 return 0L != (initialized & FL_FACE_ID_FACE_TOP_MASK); 531 } 532 /** 533 * Getter method for {@link #faceWidth}.<br> 534 * Meta Data Information (in progress): 535 * <ul> 536 * <li>full name: fl_face.face_width</li> 537 * <li>comments: 人脸位置矩形:width</li> 538 * <li>NOT NULL</li> 539 * <li>column size: 10</li> 540 * <li>JDBC type returned by the driver: Types.INTEGER</li> 541 * </ul> 542 * 543 * @return the value of faceWidth 544 */ 545 @ThriftField(value=8) 546 public Integer getFaceWidth(){ 547 return faceWidth; 548 } 549 /** 550 * Setter method for {@link #faceWidth}.<br> 551 * The new value is set only if equals() says it is different, 552 * or if one of either the new value or the current value is null. 553 * In case the new value is different, it is set and the field is marked as 'modified'. 554 * 555 * @param newVal the new value( NOT NULL) to be assigned to faceWidth 556 */ 557 public void setFaceWidth(Integer newVal) 558 { 559 checkMutable(); 560 561 modified |= FL_FACE_ID_FACE_WIDTH_MASK; 562 initialized |= FL_FACE_ID_FACE_WIDTH_MASK; 563 564 if (Objects.equals(newVal, faceWidth)) { 565 return; 566 } 567 faceWidth = newVal; 568 } 569 /** 570 * setter for thrift:swift support<br> 571 * without modification for {@link #modified} and {@link #initialized}<br> 572 * <b>NOTE:</b>DO NOT use the method in your code 573 */ 574 @ThriftField(name = "faceWidth") 575 public void writeFaceWidth(Integer newVal){ 576 checkMutable(); 577 faceWidth = newVal; 578 } 579 /** 580 * Setter method for {@link #faceWidth}.<br> 581 * Convenient for those who do not want to deal with Objects for primary types. 582 * 583 * @param newVal the new value to be assigned to faceWidth 584 */ 585 public void setFaceWidth(int newVal) 586 { 587 setFaceWidth(new Integer(newVal)); 588 } 589 /** 590 * Determines if the faceWidth has been modified. 591 * 592 * @return true if the field has been modified, false if the field has not been modified 593 */ 594 public boolean checkFaceWidthModified() 595 { 596 return 0L != (modified & FL_FACE_ID_FACE_WIDTH_MASK); 597 } 598 599 /** 600 * Determines if the faceWidth has been initialized.<br> 601 * 602 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 603 * 604 * @return true if the field has been initialized, false otherwise 605 */ 606 public boolean checkFaceWidthInitialized() 607 { 608 return 0L != (initialized & FL_FACE_ID_FACE_WIDTH_MASK); 609 } 610 /** 611 * Getter method for {@link #faceHeight}.<br> 612 * Meta Data Information (in progress): 613 * <ul> 614 * <li>full name: fl_face.face_height</li> 615 * <li>comments: 人脸位置矩形:height</li> 616 * <li>NOT NULL</li> 617 * <li>column size: 10</li> 618 * <li>JDBC type returned by the driver: Types.INTEGER</li> 619 * </ul> 620 * 621 * @return the value of faceHeight 622 */ 623 @ThriftField(value=9) 624 public Integer getFaceHeight(){ 625 return faceHeight; 626 } 627 /** 628 * Setter method for {@link #faceHeight}.<br> 629 * The new value is set only if equals() says it is different, 630 * or if one of either the new value or the current value is null. 631 * In case the new value is different, it is set and the field is marked as 'modified'. 632 * 633 * @param newVal the new value( NOT NULL) to be assigned to faceHeight 634 */ 635 public void setFaceHeight(Integer newVal) 636 { 637 checkMutable(); 638 639 modified |= FL_FACE_ID_FACE_HEIGHT_MASK; 640 initialized |= FL_FACE_ID_FACE_HEIGHT_MASK; 641 642 if (Objects.equals(newVal, faceHeight)) { 643 return; 644 } 645 faceHeight = newVal; 646 } 647 /** 648 * setter for thrift:swift support<br> 649 * without modification for {@link #modified} and {@link #initialized}<br> 650 * <b>NOTE:</b>DO NOT use the method in your code 651 */ 652 @ThriftField(name = "faceHeight") 653 public void writeFaceHeight(Integer newVal){ 654 checkMutable(); 655 faceHeight = newVal; 656 } 657 /** 658 * Setter method for {@link #faceHeight}.<br> 659 * Convenient for those who do not want to deal with Objects for primary types. 660 * 661 * @param newVal the new value to be assigned to faceHeight 662 */ 663 public void setFaceHeight(int newVal) 664 { 665 setFaceHeight(new Integer(newVal)); 666 } 667 /** 668 * Determines if the faceHeight has been modified. 669 * 670 * @return true if the field has been modified, false if the field has not been modified 671 */ 672 public boolean checkFaceHeightModified() 673 { 674 return 0L != (modified & FL_FACE_ID_FACE_HEIGHT_MASK); 675 } 676 677 /** 678 * Determines if the faceHeight has been initialized.<br> 679 * 680 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 681 * 682 * @return true if the field has been initialized, false otherwise 683 */ 684 public boolean checkFaceHeightInitialized() 685 { 686 return 0L != (initialized & FL_FACE_ID_FACE_HEIGHT_MASK); 687 } 688 /** 689 * Getter method for {@link #eyeLeftx}.<br> 690 * Meta Data Information (in progress): 691 * <ul> 692 * <li>full name: fl_face.eye_leftx</li> 693 * <li>comments: 左眼位置:x</li> 694 * <li>column size: 10</li> 695 * <li>JDBC type returned by the driver: Types.INTEGER</li> 696 * </ul> 697 * 698 * @return the value of eyeLeftx 699 */ 700 @ThriftField(value=10) 701 public Integer getEyeLeftx(){ 702 return eyeLeftx; 703 } 704 /** 705 * Setter method for {@link #eyeLeftx}.<br> 706 * The new value is set only if equals() says it is different, 707 * or if one of either the new value or the current value is null. 708 * In case the new value is different, it is set and the field is marked as 'modified'. 709 * 710 * @param newVal the new value to be assigned to eyeLeftx 711 */ 712 public void setEyeLeftx(Integer newVal) 713 { 714 checkMutable(); 715 716 modified |= FL_FACE_ID_EYE_LEFTX_MASK; 717 initialized |= FL_FACE_ID_EYE_LEFTX_MASK; 718 719 if (Objects.equals(newVal, eyeLeftx)) { 720 return; 721 } 722 eyeLeftx = newVal; 723 } 724 /** 725 * setter for thrift:swift support<br> 726 * without modification for {@link #modified} and {@link #initialized}<br> 727 * <b>NOTE:</b>DO NOT use the method in your code 728 */ 729 @ThriftField(name = "eyeLeftx") 730 public void writeEyeLeftx(Integer newVal){ 731 checkMutable(); 732 eyeLeftx = newVal; 733 } 734 /** 735 * Setter method for {@link #eyeLeftx}.<br> 736 * Convenient for those who do not want to deal with Objects for primary types. 737 * 738 * @param newVal the new value to be assigned to eyeLeftx 739 */ 740 public void setEyeLeftx(int newVal) 741 { 742 setEyeLeftx(new Integer(newVal)); 743 } 744 /** 745 * Determines if the eyeLeftx has been modified. 746 * 747 * @return true if the field has been modified, false if the field has not been modified 748 */ 749 public boolean checkEyeLeftxModified() 750 { 751 return 0L != (modified & FL_FACE_ID_EYE_LEFTX_MASK); 752 } 753 754 /** 755 * Determines if the eyeLeftx has been initialized.<br> 756 * 757 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 758 * 759 * @return true if the field has been initialized, false otherwise 760 */ 761 public boolean checkEyeLeftxInitialized() 762 { 763 return 0L != (initialized & FL_FACE_ID_EYE_LEFTX_MASK); 764 } 765 /** 766 * Getter method for {@link #eyeLefty}.<br> 767 * Meta Data Information (in progress): 768 * <ul> 769 * <li>full name: fl_face.eye_lefty</li> 770 * <li>comments: 左眼位置:y</li> 771 * <li>column size: 10</li> 772 * <li>JDBC type returned by the driver: Types.INTEGER</li> 773 * </ul> 774 * 775 * @return the value of eyeLefty 776 */ 777 @ThriftField(value=11) 778 public Integer getEyeLefty(){ 779 return eyeLefty; 780 } 781 /** 782 * Setter method for {@link #eyeLefty}.<br> 783 * The new value is set only if equals() says it is different, 784 * or if one of either the new value or the current value is null. 785 * In case the new value is different, it is set and the field is marked as 'modified'. 786 * 787 * @param newVal the new value to be assigned to eyeLefty 788 */ 789 public void setEyeLefty(Integer newVal) 790 { 791 checkMutable(); 792 793 modified |= FL_FACE_ID_EYE_LEFTY_MASK; 794 initialized |= FL_FACE_ID_EYE_LEFTY_MASK; 795 796 if (Objects.equals(newVal, eyeLefty)) { 797 return; 798 } 799 eyeLefty = newVal; 800 } 801 /** 802 * setter for thrift:swift support<br> 803 * without modification for {@link #modified} and {@link #initialized}<br> 804 * <b>NOTE:</b>DO NOT use the method in your code 805 */ 806 @ThriftField(name = "eyeLefty") 807 public void writeEyeLefty(Integer newVal){ 808 checkMutable(); 809 eyeLefty = newVal; 810 } 811 /** 812 * Setter method for {@link #eyeLefty}.<br> 813 * Convenient for those who do not want to deal with Objects for primary types. 814 * 815 * @param newVal the new value to be assigned to eyeLefty 816 */ 817 public void setEyeLefty(int newVal) 818 { 819 setEyeLefty(new Integer(newVal)); 820 } 821 /** 822 * Determines if the eyeLefty has been modified. 823 * 824 * @return true if the field has been modified, false if the field has not been modified 825 */ 826 public boolean checkEyeLeftyModified() 827 { 828 return 0L != (modified & FL_FACE_ID_EYE_LEFTY_MASK); 829 } 830 831 /** 832 * Determines if the eyeLefty has been initialized.<br> 833 * 834 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 835 * 836 * @return true if the field has been initialized, false otherwise 837 */ 838 public boolean checkEyeLeftyInitialized() 839 { 840 return 0L != (initialized & FL_FACE_ID_EYE_LEFTY_MASK); 841 } 842 /** 843 * Getter method for {@link #eyeRightx}.<br> 844 * Meta Data Information (in progress): 845 * <ul> 846 * <li>full name: fl_face.eye_rightx</li> 847 * <li>comments: 右眼位置:x</li> 848 * <li>column size: 10</li> 849 * <li>JDBC type returned by the driver: Types.INTEGER</li> 850 * </ul> 851 * 852 * @return the value of eyeRightx 853 */ 854 @ThriftField(value=12) 855 public Integer getEyeRightx(){ 856 return eyeRightx; 857 } 858 /** 859 * Setter method for {@link #eyeRightx}.<br> 860 * The new value is set only if equals() says it is different, 861 * or if one of either the new value or the current value is null. 862 * In case the new value is different, it is set and the field is marked as 'modified'. 863 * 864 * @param newVal the new value to be assigned to eyeRightx 865 */ 866 public void setEyeRightx(Integer newVal) 867 { 868 checkMutable(); 869 870 modified |= FL_FACE_ID_EYE_RIGHTX_MASK; 871 initialized |= FL_FACE_ID_EYE_RIGHTX_MASK; 872 873 if (Objects.equals(newVal, eyeRightx)) { 874 return; 875 } 876 eyeRightx = newVal; 877 } 878 /** 879 * setter for thrift:swift support<br> 880 * without modification for {@link #modified} and {@link #initialized}<br> 881 * <b>NOTE:</b>DO NOT use the method in your code 882 */ 883 @ThriftField(name = "eyeRightx") 884 public void writeEyeRightx(Integer newVal){ 885 checkMutable(); 886 eyeRightx = newVal; 887 } 888 /** 889 * Setter method for {@link #eyeRightx}.<br> 890 * Convenient for those who do not want to deal with Objects for primary types. 891 * 892 * @param newVal the new value to be assigned to eyeRightx 893 */ 894 public void setEyeRightx(int newVal) 895 { 896 setEyeRightx(new Integer(newVal)); 897 } 898 /** 899 * Determines if the eyeRightx has been modified. 900 * 901 * @return true if the field has been modified, false if the field has not been modified 902 */ 903 public boolean checkEyeRightxModified() 904 { 905 return 0L != (modified & FL_FACE_ID_EYE_RIGHTX_MASK); 906 } 907 908 /** 909 * Determines if the eyeRightx has been initialized.<br> 910 * 911 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 912 * 913 * @return true if the field has been initialized, false otherwise 914 */ 915 public boolean checkEyeRightxInitialized() 916 { 917 return 0L != (initialized & FL_FACE_ID_EYE_RIGHTX_MASK); 918 } 919 /** 920 * Getter method for {@link #eyeRighty}.<br> 921 * Meta Data Information (in progress): 922 * <ul> 923 * <li>full name: fl_face.eye_righty</li> 924 * <li>comments: 右眼位置:y</li> 925 * <li>column size: 10</li> 926 * <li>JDBC type returned by the driver: Types.INTEGER</li> 927 * </ul> 928 * 929 * @return the value of eyeRighty 930 */ 931 @ThriftField(value=13) 932 public Integer getEyeRighty(){ 933 return eyeRighty; 934 } 935 /** 936 * Setter method for {@link #eyeRighty}.<br> 937 * The new value is set only if equals() says it is different, 938 * or if one of either the new value or the current value is null. 939 * In case the new value is different, it is set and the field is marked as 'modified'. 940 * 941 * @param newVal the new value to be assigned to eyeRighty 942 */ 943 public void setEyeRighty(Integer newVal) 944 { 945 checkMutable(); 946 947 modified |= FL_FACE_ID_EYE_RIGHTY_MASK; 948 initialized |= FL_FACE_ID_EYE_RIGHTY_MASK; 949 950 if (Objects.equals(newVal, eyeRighty)) { 951 return; 952 } 953 eyeRighty = newVal; 954 } 955 /** 956 * setter for thrift:swift support<br> 957 * without modification for {@link #modified} and {@link #initialized}<br> 958 * <b>NOTE:</b>DO NOT use the method in your code 959 */ 960 @ThriftField(name = "eyeRighty") 961 public void writeEyeRighty(Integer newVal){ 962 checkMutable(); 963 eyeRighty = newVal; 964 } 965 /** 966 * Setter method for {@link #eyeRighty}.<br> 967 * Convenient for those who do not want to deal with Objects for primary types. 968 * 969 * @param newVal the new value to be assigned to eyeRighty 970 */ 971 public void setEyeRighty(int newVal) 972 { 973 setEyeRighty(new Integer(newVal)); 974 } 975 /** 976 * Determines if the eyeRighty has been modified. 977 * 978 * @return true if the field has been modified, false if the field has not been modified 979 */ 980 public boolean checkEyeRightyModified() 981 { 982 return 0L != (modified & FL_FACE_ID_EYE_RIGHTY_MASK); 983 } 984 985 /** 986 * Determines if the eyeRighty has been initialized.<br> 987 * 988 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 989 * 990 * @return true if the field has been initialized, false otherwise 991 */ 992 public boolean checkEyeRightyInitialized() 993 { 994 return 0L != (initialized & FL_FACE_ID_EYE_RIGHTY_MASK); 995 } 996 /** 997 * Getter method for {@link #mouthX}.<br> 998 * Meta Data Information (in progress): 999 * <ul> 1000 * <li>full name: fl_face.mouth_x</li> 1001 * <li>comments: 嘴巴位置:x</li> 1002 * <li>column size: 10</li> 1003 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1004 * </ul> 1005 * 1006 * @return the value of mouthX 1007 */ 1008 @ThriftField(value=14) 1009 public Integer getMouthX(){ 1010 return mouthX; 1011 } 1012 /** 1013 * Setter method for {@link #mouthX}.<br> 1014 * The new value is set only if equals() says it is different, 1015 * or if one of either the new value or the current value is null. 1016 * In case the new value is different, it is set and the field is marked as 'modified'. 1017 * 1018 * @param newVal the new value to be assigned to mouthX 1019 */ 1020 public void setMouthX(Integer newVal) 1021 { 1022 checkMutable(); 1023 1024 modified |= FL_FACE_ID_MOUTH_X_MASK; 1025 initialized |= FL_FACE_ID_MOUTH_X_MASK; 1026 1027 if (Objects.equals(newVal, mouthX)) { 1028 return; 1029 } 1030 mouthX = newVal; 1031 } 1032 /** 1033 * setter for thrift:swift support<br> 1034 * without modification for {@link #modified} and {@link #initialized}<br> 1035 * <b>NOTE:</b>DO NOT use the method in your code 1036 */ 1037 @ThriftField(name = "mouthX") 1038 public void writeMouthX(Integer newVal){ 1039 checkMutable(); 1040 mouthX = newVal; 1041 } 1042 /** 1043 * Setter method for {@link #mouthX}.<br> 1044 * Convenient for those who do not want to deal with Objects for primary types. 1045 * 1046 * @param newVal the new value to be assigned to mouthX 1047 */ 1048 public void setMouthX(int newVal) 1049 { 1050 setMouthX(new Integer(newVal)); 1051 } 1052 /** 1053 * Determines if the mouthX has been modified. 1054 * 1055 * @return true if the field has been modified, false if the field has not been modified 1056 */ 1057 public boolean checkMouthXModified() 1058 { 1059 return 0L != (modified & FL_FACE_ID_MOUTH_X_MASK); 1060 } 1061 1062 /** 1063 * Determines if the mouthX has been initialized.<br> 1064 * 1065 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1066 * 1067 * @return true if the field has been initialized, false otherwise 1068 */ 1069 public boolean checkMouthXInitialized() 1070 { 1071 return 0L != (initialized & FL_FACE_ID_MOUTH_X_MASK); 1072 } 1073 /** 1074 * Getter method for {@link #mouthY}.<br> 1075 * Meta Data Information (in progress): 1076 * <ul> 1077 * <li>full name: fl_face.mouth_y</li> 1078 * <li>comments: 嘴巴位置:y</li> 1079 * <li>column size: 10</li> 1080 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1081 * </ul> 1082 * 1083 * @return the value of mouthY 1084 */ 1085 @ThriftField(value=15) 1086 public Integer getMouthY(){ 1087 return mouthY; 1088 } 1089 /** 1090 * Setter method for {@link #mouthY}.<br> 1091 * The new value is set only if equals() says it is different, 1092 * or if one of either the new value or the current value is null. 1093 * In case the new value is different, it is set and the field is marked as 'modified'. 1094 * 1095 * @param newVal the new value to be assigned to mouthY 1096 */ 1097 public void setMouthY(Integer newVal) 1098 { 1099 checkMutable(); 1100 1101 modified |= FL_FACE_ID_MOUTH_Y_MASK; 1102 initialized |= FL_FACE_ID_MOUTH_Y_MASK; 1103 1104 if (Objects.equals(newVal, mouthY)) { 1105 return; 1106 } 1107 mouthY = newVal; 1108 } 1109 /** 1110 * setter for thrift:swift support<br> 1111 * without modification for {@link #modified} and {@link #initialized}<br> 1112 * <b>NOTE:</b>DO NOT use the method in your code 1113 */ 1114 @ThriftField(name = "mouthY") 1115 public void writeMouthY(Integer newVal){ 1116 checkMutable(); 1117 mouthY = newVal; 1118 } 1119 /** 1120 * Setter method for {@link #mouthY}.<br> 1121 * Convenient for those who do not want to deal with Objects for primary types. 1122 * 1123 * @param newVal the new value to be assigned to mouthY 1124 */ 1125 public void setMouthY(int newVal) 1126 { 1127 setMouthY(new Integer(newVal)); 1128 } 1129 /** 1130 * Determines if the mouthY has been modified. 1131 * 1132 * @return true if the field has been modified, false if the field has not been modified 1133 */ 1134 public boolean checkMouthYModified() 1135 { 1136 return 0L != (modified & FL_FACE_ID_MOUTH_Y_MASK); 1137 } 1138 1139 /** 1140 * Determines if the mouthY has been initialized.<br> 1141 * 1142 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1143 * 1144 * @return true if the field has been initialized, false otherwise 1145 */ 1146 public boolean checkMouthYInitialized() 1147 { 1148 return 0L != (initialized & FL_FACE_ID_MOUTH_Y_MASK); 1149 } 1150 /** 1151 * Getter method for {@link #noseX}.<br> 1152 * Meta Data Information (in progress): 1153 * <ul> 1154 * <li>full name: fl_face.nose_x</li> 1155 * <li>comments: 鼻子位置:x</li> 1156 * <li>column size: 10</li> 1157 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1158 * </ul> 1159 * 1160 * @return the value of noseX 1161 */ 1162 @ThriftField(value=16) 1163 public Integer getNoseX(){ 1164 return noseX; 1165 } 1166 /** 1167 * Setter method for {@link #noseX}.<br> 1168 * The new value is set only if equals() says it is different, 1169 * or if one of either the new value or the current value is null. 1170 * In case the new value is different, it is set and the field is marked as 'modified'. 1171 * 1172 * @param newVal the new value to be assigned to noseX 1173 */ 1174 public void setNoseX(Integer newVal) 1175 { 1176 checkMutable(); 1177 1178 modified |= FL_FACE_ID_NOSE_X_MASK; 1179 initialized |= FL_FACE_ID_NOSE_X_MASK; 1180 1181 if (Objects.equals(newVal, noseX)) { 1182 return; 1183 } 1184 noseX = newVal; 1185 } 1186 /** 1187 * setter for thrift:swift support<br> 1188 * without modification for {@link #modified} and {@link #initialized}<br> 1189 * <b>NOTE:</b>DO NOT use the method in your code 1190 */ 1191 @ThriftField(name = "noseX") 1192 public void writeNoseX(Integer newVal){ 1193 checkMutable(); 1194 noseX = newVal; 1195 } 1196 /** 1197 * Setter method for {@link #noseX}.<br> 1198 * Convenient for those who do not want to deal with Objects for primary types. 1199 * 1200 * @param newVal the new value to be assigned to noseX 1201 */ 1202 public void setNoseX(int newVal) 1203 { 1204 setNoseX(new Integer(newVal)); 1205 } 1206 /** 1207 * Determines if the noseX has been modified. 1208 * 1209 * @return true if the field has been modified, false if the field has not been modified 1210 */ 1211 public boolean checkNoseXModified() 1212 { 1213 return 0L != (modified & FL_FACE_ID_NOSE_X_MASK); 1214 } 1215 1216 /** 1217 * Determines if the noseX has been initialized.<br> 1218 * 1219 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1220 * 1221 * @return true if the field has been initialized, false otherwise 1222 */ 1223 public boolean checkNoseXInitialized() 1224 { 1225 return 0L != (initialized & FL_FACE_ID_NOSE_X_MASK); 1226 } 1227 /** 1228 * Getter method for {@link #noseY}.<br> 1229 * Meta Data Information (in progress): 1230 * <ul> 1231 * <li>full name: fl_face.nose_y</li> 1232 * <li>comments: 鼻子位置:y</li> 1233 * <li>column size: 10</li> 1234 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1235 * </ul> 1236 * 1237 * @return the value of noseY 1238 */ 1239 @ThriftField(value=17) 1240 public Integer getNoseY(){ 1241 return noseY; 1242 } 1243 /** 1244 * Setter method for {@link #noseY}.<br> 1245 * The new value is set only if equals() says it is different, 1246 * or if one of either the new value or the current value is null. 1247 * In case the new value is different, it is set and the field is marked as 'modified'. 1248 * 1249 * @param newVal the new value to be assigned to noseY 1250 */ 1251 public void setNoseY(Integer newVal) 1252 { 1253 checkMutable(); 1254 1255 modified |= FL_FACE_ID_NOSE_Y_MASK; 1256 initialized |= FL_FACE_ID_NOSE_Y_MASK; 1257 1258 if (Objects.equals(newVal, noseY)) { 1259 return; 1260 } 1261 noseY = newVal; 1262 } 1263 /** 1264 * setter for thrift:swift support<br> 1265 * without modification for {@link #modified} and {@link #initialized}<br> 1266 * <b>NOTE:</b>DO NOT use the method in your code 1267 */ 1268 @ThriftField(name = "noseY") 1269 public void writeNoseY(Integer newVal){ 1270 checkMutable(); 1271 noseY = newVal; 1272 } 1273 /** 1274 * Setter method for {@link #noseY}.<br> 1275 * Convenient for those who do not want to deal with Objects for primary types. 1276 * 1277 * @param newVal the new value to be assigned to noseY 1278 */ 1279 public void setNoseY(int newVal) 1280 { 1281 setNoseY(new Integer(newVal)); 1282 } 1283 /** 1284 * Determines if the noseY has been modified. 1285 * 1286 * @return true if the field has been modified, false if the field has not been modified 1287 */ 1288 public boolean checkNoseYModified() 1289 { 1290 return 0L != (modified & FL_FACE_ID_NOSE_Y_MASK); 1291 } 1292 1293 /** 1294 * Determines if the noseY has been initialized.<br> 1295 * 1296 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1297 * 1298 * @return true if the field has been initialized, false otherwise 1299 */ 1300 public boolean checkNoseYInitialized() 1301 { 1302 return 0L != (initialized & FL_FACE_ID_NOSE_Y_MASK); 1303 } 1304 /** 1305 * Getter method for {@link #angleYaw}.<br> 1306 * Meta Data Information (in progress): 1307 * <ul> 1308 * <li>full name: fl_face.angle_yaw</li> 1309 * <li>comments: 人脸姿态:偏航角</li> 1310 * <li>column size: 10</li> 1311 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1312 * </ul> 1313 * 1314 * @return the value of angleYaw 1315 */ 1316 @ThriftField(value=18) 1317 public Integer getAngleYaw(){ 1318 return angleYaw; 1319 } 1320 /** 1321 * Setter method for {@link #angleYaw}.<br> 1322 * The new value is set only if equals() says it is different, 1323 * or if one of either the new value or the current value is null. 1324 * In case the new value is different, it is set and the field is marked as 'modified'. 1325 * 1326 * @param newVal the new value to be assigned to angleYaw 1327 */ 1328 public void setAngleYaw(Integer newVal) 1329 { 1330 checkMutable(); 1331 1332 modified |= FL_FACE_ID_ANGLE_YAW_MASK; 1333 initialized |= FL_FACE_ID_ANGLE_YAW_MASK; 1334 1335 if (Objects.equals(newVal, angleYaw)) { 1336 return; 1337 } 1338 angleYaw = newVal; 1339 } 1340 /** 1341 * setter for thrift:swift support<br> 1342 * without modification for {@link #modified} and {@link #initialized}<br> 1343 * <b>NOTE:</b>DO NOT use the method in your code 1344 */ 1345 @ThriftField(name = "angleYaw") 1346 public void writeAngleYaw(Integer newVal){ 1347 checkMutable(); 1348 angleYaw = newVal; 1349 } 1350 /** 1351 * Setter method for {@link #angleYaw}.<br> 1352 * Convenient for those who do not want to deal with Objects for primary types. 1353 * 1354 * @param newVal the new value to be assigned to angleYaw 1355 */ 1356 public void setAngleYaw(int newVal) 1357 { 1358 setAngleYaw(new Integer(newVal)); 1359 } 1360 /** 1361 * Determines if the angleYaw has been modified. 1362 * 1363 * @return true if the field has been modified, false if the field has not been modified 1364 */ 1365 public boolean checkAngleYawModified() 1366 { 1367 return 0L != (modified & FL_FACE_ID_ANGLE_YAW_MASK); 1368 } 1369 1370 /** 1371 * Determines if the angleYaw has been initialized.<br> 1372 * 1373 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1374 * 1375 * @return true if the field has been initialized, false otherwise 1376 */ 1377 public boolean checkAngleYawInitialized() 1378 { 1379 return 0L != (initialized & FL_FACE_ID_ANGLE_YAW_MASK); 1380 } 1381 /** 1382 * Getter method for {@link #anglePitch}.<br> 1383 * Meta Data Information (in progress): 1384 * <ul> 1385 * <li>full name: fl_face.angle_pitch</li> 1386 * <li>comments: 人脸姿态:俯仰角</li> 1387 * <li>column size: 10</li> 1388 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1389 * </ul> 1390 * 1391 * @return the value of anglePitch 1392 */ 1393 @ThriftField(value=19) 1394 public Integer getAnglePitch(){ 1395 return anglePitch; 1396 } 1397 /** 1398 * Setter method for {@link #anglePitch}.<br> 1399 * The new value is set only if equals() says it is different, 1400 * or if one of either the new value or the current value is null. 1401 * In case the new value is different, it is set and the field is marked as 'modified'. 1402 * 1403 * @param newVal the new value to be assigned to anglePitch 1404 */ 1405 public void setAnglePitch(Integer newVal) 1406 { 1407 checkMutable(); 1408 1409 modified |= FL_FACE_ID_ANGLE_PITCH_MASK; 1410 initialized |= FL_FACE_ID_ANGLE_PITCH_MASK; 1411 1412 if (Objects.equals(newVal, anglePitch)) { 1413 return; 1414 } 1415 anglePitch = newVal; 1416 } 1417 /** 1418 * setter for thrift:swift support<br> 1419 * without modification for {@link #modified} and {@link #initialized}<br> 1420 * <b>NOTE:</b>DO NOT use the method in your code 1421 */ 1422 @ThriftField(name = "anglePitch") 1423 public void writeAnglePitch(Integer newVal){ 1424 checkMutable(); 1425 anglePitch = newVal; 1426 } 1427 /** 1428 * Setter method for {@link #anglePitch}.<br> 1429 * Convenient for those who do not want to deal with Objects for primary types. 1430 * 1431 * @param newVal the new value to be assigned to anglePitch 1432 */ 1433 public void setAnglePitch(int newVal) 1434 { 1435 setAnglePitch(new Integer(newVal)); 1436 } 1437 /** 1438 * Determines if the anglePitch has been modified. 1439 * 1440 * @return true if the field has been modified, false if the field has not been modified 1441 */ 1442 public boolean checkAnglePitchModified() 1443 { 1444 return 0L != (modified & FL_FACE_ID_ANGLE_PITCH_MASK); 1445 } 1446 1447 /** 1448 * Determines if the anglePitch has been initialized.<br> 1449 * 1450 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1451 * 1452 * @return true if the field has been initialized, false otherwise 1453 */ 1454 public boolean checkAnglePitchInitialized() 1455 { 1456 return 0L != (initialized & FL_FACE_ID_ANGLE_PITCH_MASK); 1457 } 1458 /** 1459 * Getter method for {@link #angleRoll}.<br> 1460 * Meta Data Information (in progress): 1461 * <ul> 1462 * <li>full name: fl_face.angle_roll</li> 1463 * <li>comments: 人脸姿态:滚转角</li> 1464 * <li>column size: 10</li> 1465 * <li>JDBC type returned by the driver: Types.INTEGER</li> 1466 * </ul> 1467 * 1468 * @return the value of angleRoll 1469 */ 1470 @ThriftField(value=20) 1471 public Integer getAngleRoll(){ 1472 return angleRoll; 1473 } 1474 /** 1475 * Setter method for {@link #angleRoll}.<br> 1476 * The new value is set only if equals() says it is different, 1477 * or if one of either the new value or the current value is null. 1478 * In case the new value is different, it is set and the field is marked as 'modified'. 1479 * 1480 * @param newVal the new value to be assigned to angleRoll 1481 */ 1482 public void setAngleRoll(Integer newVal) 1483 { 1484 checkMutable(); 1485 1486 modified |= FL_FACE_ID_ANGLE_ROLL_MASK; 1487 initialized |= FL_FACE_ID_ANGLE_ROLL_MASK; 1488 1489 if (Objects.equals(newVal, angleRoll)) { 1490 return; 1491 } 1492 angleRoll = newVal; 1493 } 1494 /** 1495 * setter for thrift:swift support<br> 1496 * without modification for {@link #modified} and {@link #initialized}<br> 1497 * <b>NOTE:</b>DO NOT use the method in your code 1498 */ 1499 @ThriftField(name = "angleRoll") 1500 public void writeAngleRoll(Integer newVal){ 1501 checkMutable(); 1502 angleRoll = newVal; 1503 } 1504 /** 1505 * Setter method for {@link #angleRoll}.<br> 1506 * Convenient for those who do not want to deal with Objects for primary types. 1507 * 1508 * @param newVal the new value to be assigned to angleRoll 1509 */ 1510 public void setAngleRoll(int newVal) 1511 { 1512 setAngleRoll(new Integer(newVal)); 1513 } 1514 /** 1515 * Determines if the angleRoll has been modified. 1516 * 1517 * @return true if the field has been modified, false if the field has not been modified 1518 */ 1519 public boolean checkAngleRollModified() 1520 { 1521 return 0L != (modified & FL_FACE_ID_ANGLE_ROLL_MASK); 1522 } 1523 1524 /** 1525 * Determines if the angleRoll has been initialized.<br> 1526 * 1527 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1528 * 1529 * @return true if the field has been initialized, false otherwise 1530 */ 1531 public boolean checkAngleRollInitialized() 1532 { 1533 return 0L != (initialized & FL_FACE_ID_ANGLE_ROLL_MASK); 1534 } 1535 /** 1536 * Getter method for {@link #extInfo}.<br> 1537 * Meta Data Information (in progress): 1538 * <ul> 1539 * <li>full name: fl_face.ext_info</li> 1540 * <li>comments: 扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析</li> 1541 * <li>column size: 65535</li> 1542 * <li>JDBC type returned by the driver: Types.LONGVARBINARY</li> 1543 * </ul> 1544 * 1545 * @return the value of extInfo 1546 */ 1547 @ThriftField(value=21) 1548 public java.nio.ByteBuffer getExtInfo(){ 1549 return extInfo; 1550 } 1551 /** 1552 * Setter method for {@link #extInfo}.<br> 1553 * The new value is set only if equals() says it is different, 1554 * or if one of either the new value or the current value is null. 1555 * In case the new value is different, it is set and the field is marked as 'modified'. 1556 * 1557 * @param newVal the new value to be assigned to extInfo 1558 */ 1559 public void setExtInfo(java.nio.ByteBuffer newVal) 1560 { 1561 checkMutable(); 1562 1563 modified |= FL_FACE_ID_EXT_INFO_MASK; 1564 initialized |= FL_FACE_ID_EXT_INFO_MASK; 1565 1566 if (Objects.equals(newVal, extInfo)) { 1567 return; 1568 } 1569 extInfo = newVal; 1570 } 1571 /** 1572 * setter for thrift:swift support<br> 1573 * without modification for {@link #modified} and {@link #initialized}<br> 1574 * <b>NOTE:</b>DO NOT use the method in your code 1575 */ 1576 @ThriftField(name = "extInfo") 1577 public void writeExtInfo(java.nio.ByteBuffer newVal){ 1578 checkMutable(); 1579 extInfo = newVal; 1580 } 1581 /** 1582 * Determines if the extInfo has been modified. 1583 * 1584 * @return true if the field has been modified, false if the field has not been modified 1585 */ 1586 public boolean checkExtInfoModified() 1587 { 1588 return 0L != (modified & FL_FACE_ID_EXT_INFO_MASK); 1589 } 1590 1591 /** 1592 * Determines if the extInfo has been initialized.<br> 1593 * 1594 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1595 * 1596 * @return true if the field has been initialized, false otherwise 1597 */ 1598 public boolean checkExtInfoInitialized() 1599 { 1600 return 0L != (initialized & FL_FACE_ID_EXT_INFO_MASK); 1601 } 1602 /** 1603 * Getter method for {@link #featureMd5}.<br> 1604 * Meta Data Information (in progress): 1605 * <ul> 1606 * <li>full name: fl_face.feature_md5</li> 1607 * <li> foreign key: fl_feature.md5</li> 1608 * <li>comments: 外键,人脸特征数据MD5 id</li> 1609 * <li>column size: 32</li> 1610 * <li>JDBC type returned by the driver: Types.CHAR</li> 1611 * </ul> 1612 * 1613 * @return the value of featureMd5 1614 */ 1615 @ThriftField(value=22) 1616 public String getFeatureMd5(){ 1617 return featureMd5; 1618 } 1619 /** 1620 * Setter method for {@link #featureMd5}.<br> 1621 * The new value is set only if equals() says it is different, 1622 * or if one of either the new value or the current value is null. 1623 * In case the new value is different, it is set and the field is marked as 'modified'. 1624 * 1625 * @param newVal the new value to be assigned to featureMd5 1626 */ 1627 public void setFeatureMd5(String newVal) 1628 { 1629 checkMutable(); 1630 1631 modified |= FL_FACE_ID_FEATURE_MD5_MASK; 1632 initialized |= FL_FACE_ID_FEATURE_MD5_MASK; 1633 1634 if (Objects.equals(newVal, featureMd5)) { 1635 return; 1636 } 1637 featureMd5 = newVal; 1638 } 1639 /** 1640 * setter for thrift:swift support<br> 1641 * without modification for {@link #modified} and {@link #initialized}<br> 1642 * <b>NOTE:</b>DO NOT use the method in your code 1643 */ 1644 @ThriftField(name = "featureMd5") 1645 public void writeFeatureMd5(String newVal){ 1646 checkMutable(); 1647 featureMd5 = newVal; 1648 } 1649 /** 1650 * Determines if the featureMd5 has been modified. 1651 * 1652 * @return true if the field has been modified, false if the field has not been modified 1653 */ 1654 public boolean checkFeatureMd5Modified() 1655 { 1656 return 0L != (modified & FL_FACE_ID_FEATURE_MD5_MASK); 1657 } 1658 1659 /** 1660 * Determines if the featureMd5 has been initialized.<br> 1661 * 1662 * It is useful to determine if a field is null on purpose or just because it has not been initialized. 1663 * 1664 * @return true if the field has been initialized, false otherwise 1665 */ 1666 public boolean checkFeatureMd5Initialized() 1667 { 1668 return 0L != (initialized & FL_FACE_ID_FEATURE_MD5_MASK); 1669 } 1670 ////////////////////////////////////// 1671 // referenced bean for FOREIGN KEYS 1672 ////////////////////////////////////// 1673 /** 1674 * The referenced {@link FeatureBean} by {@link #featureMd5} . <br> 1675 * FOREIGN KEY (feature_md5) REFERENCES fl_feature(md5) 1676 */ 1677 @ApiModelProperty(hidden = true) 1678 private FeatureBean referencedByFeatureMd5; 1679 /** 1680 * Getter method for {@link #referencedByFeatureMd5}. 1681 * @return FeatureBean 1682 */ 1683 public FeatureBean getReferencedByFeatureMd5() { 1684 return this.referencedByFeatureMd5; 1685 } 1686 /** 1687 * Setter method for {@link #referencedByFeatureMd5}. 1688 * @param reference FeatureBean 1689 */ 1690 public void setReferencedByFeatureMd5(FeatureBean reference) { 1691 this.referencedByFeatureMd5 = reference; 1692 } 1693 /** 1694 * The referenced {@link ImageBean} by {@link #imageMd5} . <br> 1695 * FOREIGN KEY (image_md5) REFERENCES fl_image(md5) 1696 */ 1697 @ApiModelProperty(hidden = true) 1698 private ImageBean referencedByImageMd5; 1699 /** 1700 * Getter method for {@link #referencedByImageMd5}. 1701 * @return ImageBean 1702 */ 1703 public ImageBean getReferencedByImageMd5() { 1704 return this.referencedByImageMd5; 1705 } 1706 /** 1707 * Setter method for {@link #referencedByImageMd5}. 1708 * @param reference ImageBean 1709 */ 1710 public void setReferencedByImageMd5(ImageBean reference) { 1711 this.referencedByImageMd5 = reference; 1712 } 1713 1714 @Override 1715 public boolean isModified() 1716 { 1717 return 0 != modified; 1718 } 1719 1720 @Override 1721 public boolean isModified(int columnID){ 1722 switch ( columnID ){ 1723 case FL_FACE_ID_ID: 1724 return checkIdModified(); 1725 case FL_FACE_ID_IMAGE_MD5: 1726 return checkImageMd5Modified(); 1727 case FL_FACE_ID_FACE_LEFT: 1728 return checkFaceLeftModified(); 1729 case FL_FACE_ID_FACE_TOP: 1730 return checkFaceTopModified(); 1731 case FL_FACE_ID_FACE_WIDTH: 1732 return checkFaceWidthModified(); 1733 case FL_FACE_ID_FACE_HEIGHT: 1734 return checkFaceHeightModified(); 1735 case FL_FACE_ID_EYE_LEFTX: 1736 return checkEyeLeftxModified(); 1737 case FL_FACE_ID_EYE_LEFTY: 1738 return checkEyeLeftyModified(); 1739 case FL_FACE_ID_EYE_RIGHTX: 1740 return checkEyeRightxModified(); 1741 case FL_FACE_ID_EYE_RIGHTY: 1742 return checkEyeRightyModified(); 1743 case FL_FACE_ID_MOUTH_X: 1744 return checkMouthXModified(); 1745 case FL_FACE_ID_MOUTH_Y: 1746 return checkMouthYModified(); 1747 case FL_FACE_ID_NOSE_X: 1748 return checkNoseXModified(); 1749 case FL_FACE_ID_NOSE_Y: 1750 return checkNoseYModified(); 1751 case FL_FACE_ID_ANGLE_YAW: 1752 return checkAngleYawModified(); 1753 case FL_FACE_ID_ANGLE_PITCH: 1754 return checkAnglePitchModified(); 1755 case FL_FACE_ID_ANGLE_ROLL: 1756 return checkAngleRollModified(); 1757 case FL_FACE_ID_EXT_INFO: 1758 return checkExtInfoModified(); 1759 case FL_FACE_ID_FEATURE_MD5: 1760 return checkFeatureMd5Modified(); 1761 default: 1762 return false; 1763 } 1764 } 1765 1766 @Override 1767 public boolean isInitialized(int columnID){ 1768 switch(columnID) { 1769 case FL_FACE_ID_ID: 1770 return checkIdInitialized(); 1771 case FL_FACE_ID_IMAGE_MD5: 1772 return checkImageMd5Initialized(); 1773 case FL_FACE_ID_FACE_LEFT: 1774 return checkFaceLeftInitialized(); 1775 case FL_FACE_ID_FACE_TOP: 1776 return checkFaceTopInitialized(); 1777 case FL_FACE_ID_FACE_WIDTH: 1778 return checkFaceWidthInitialized(); 1779 case FL_FACE_ID_FACE_HEIGHT: 1780 return checkFaceHeightInitialized(); 1781 case FL_FACE_ID_EYE_LEFTX: 1782 return checkEyeLeftxInitialized(); 1783 case FL_FACE_ID_EYE_LEFTY: 1784 return checkEyeLeftyInitialized(); 1785 case FL_FACE_ID_EYE_RIGHTX: 1786 return checkEyeRightxInitialized(); 1787 case FL_FACE_ID_EYE_RIGHTY: 1788 return checkEyeRightyInitialized(); 1789 case FL_FACE_ID_MOUTH_X: 1790 return checkMouthXInitialized(); 1791 case FL_FACE_ID_MOUTH_Y: 1792 return checkMouthYInitialized(); 1793 case FL_FACE_ID_NOSE_X: 1794 return checkNoseXInitialized(); 1795 case FL_FACE_ID_NOSE_Y: 1796 return checkNoseYInitialized(); 1797 case FL_FACE_ID_ANGLE_YAW: 1798 return checkAngleYawInitialized(); 1799 case FL_FACE_ID_ANGLE_PITCH: 1800 return checkAnglePitchInitialized(); 1801 case FL_FACE_ID_ANGLE_ROLL: 1802 return checkAngleRollInitialized(); 1803 case FL_FACE_ID_EXT_INFO: 1804 return checkExtInfoInitialized(); 1805 case FL_FACE_ID_FEATURE_MD5: 1806 return checkFeatureMd5Initialized(); 1807 default: 1808 return false; 1809 } 1810 } 1811 1812 @Override 1813 public boolean isModified(String column){ 1814 return isModified(columnIDOf(column)); 1815 } 1816 1817 @Override 1818 public boolean isInitialized(String column){ 1819 return isInitialized(columnIDOf(column)); 1820 } 1821 1822 @Override 1823 public void resetIsModified() 1824 { 1825 checkMutable(); 1826 modified = 0; 1827 } 1828 1829 @Override 1830 public void resetPrimaryKeysModified() 1831 { 1832 modified &= (~(FL_FACE_ID_ID_MASK)); 1833 } 1834 /** 1835 * Resets columns modification status except primary keys to 'not modified'. 1836 */ 1837 public void resetModifiedExceptPrimaryKeys() 1838 { 1839 modified &= (~(FL_FACE_ID_IMAGE_MD5_MASK | 1840 FL_FACE_ID_FACE_LEFT_MASK | 1841 FL_FACE_ID_FACE_TOP_MASK | 1842 FL_FACE_ID_FACE_WIDTH_MASK | 1843 FL_FACE_ID_FACE_HEIGHT_MASK | 1844 FL_FACE_ID_EYE_LEFTX_MASK | 1845 FL_FACE_ID_EYE_LEFTY_MASK | 1846 FL_FACE_ID_EYE_RIGHTX_MASK | 1847 FL_FACE_ID_EYE_RIGHTY_MASK | 1848 FL_FACE_ID_MOUTH_X_MASK | 1849 FL_FACE_ID_MOUTH_Y_MASK | 1850 FL_FACE_ID_NOSE_X_MASK | 1851 FL_FACE_ID_NOSE_Y_MASK | 1852 FL_FACE_ID_ANGLE_YAW_MASK | 1853 FL_FACE_ID_ANGLE_PITCH_MASK | 1854 FL_FACE_ID_ANGLE_ROLL_MASK | 1855 FL_FACE_ID_EXT_INFO_MASK | 1856 FL_FACE_ID_FEATURE_MD5_MASK)); 1857 } 1858 /** 1859 * Resets the object initialization status to 'not initialized'. 1860 */ 1861 private void resetInitialized() 1862 { 1863 initialized = 0; 1864 } 1865 /** reset all fields to initial value, equal to a new bean */ 1866 public void reset(){ 1867 checkMutable(); 1868 this.id = null; 1869 this.imageMd5 = null; 1870 this.faceLeft = null; 1871 this.faceTop = null; 1872 this.faceWidth = null; 1873 this.faceHeight = null; 1874 this.eyeLeftx = null; 1875 this.eyeLefty = null; 1876 this.eyeRightx = null; 1877 this.eyeRighty = null; 1878 this.mouthX = null; 1879 this.mouthY = null; 1880 this.noseX = null; 1881 this.noseY = null; 1882 this.angleYaw = null; 1883 this.anglePitch = null; 1884 this.angleRoll = null; 1885 this.extInfo = null; 1886 this.featureMd5 = null; 1887 this.isNew = true; 1888 this.modified = 0; 1889 this.initialized = 0; 1890 } 1891 @Override 1892 public boolean equals(Object object) 1893 { 1894 if (!(object instanceof FaceBean)) { 1895 return false; 1896 } 1897 1898 FaceBean obj = (FaceBean) object; 1899 return new EqualsBuilder() 1900 .append(getId(), obj.getId()) 1901 .append(getImageMd5(), obj.getImageMd5()) 1902 .append(getFaceLeft(), obj.getFaceLeft()) 1903 .append(getFaceTop(), obj.getFaceTop()) 1904 .append(getFaceWidth(), obj.getFaceWidth()) 1905 .append(getFaceHeight(), obj.getFaceHeight()) 1906 .append(getEyeLeftx(), obj.getEyeLeftx()) 1907 .append(getEyeLefty(), obj.getEyeLefty()) 1908 .append(getEyeRightx(), obj.getEyeRightx()) 1909 .append(getEyeRighty(), obj.getEyeRighty()) 1910 .append(getMouthX(), obj.getMouthX()) 1911 .append(getMouthY(), obj.getMouthY()) 1912 .append(getNoseX(), obj.getNoseX()) 1913 .append(getNoseY(), obj.getNoseY()) 1914 .append(getAngleYaw(), obj.getAngleYaw()) 1915 .append(getAnglePitch(), obj.getAnglePitch()) 1916 .append(getAngleRoll(), obj.getAngleRoll()) 1917 .append(getExtInfo(), obj.getExtInfo()) 1918 .append(getFeatureMd5(), obj.getFeatureMd5()) 1919 .isEquals(); 1920 } 1921 1922 @Override 1923 public int hashCode() 1924 { 1925 return new HashCodeBuilder(-82280557, -700257973) 1926 .append(getId()) 1927 .toHashCode(); 1928 } 1929 1930 @Override 1931 public String toString() { 1932 return toString(true,false); 1933 } 1934 /** 1935 * cast byte array to HEX string 1936 * 1937 * @param input 1938 * @return {@code null} if {@code input} is null 1939 */ 1940 private static final String toHex(byte[] input) { 1941 if (null == input){ 1942 return null; 1943 } 1944 StringBuffer sb = new StringBuffer(input.length * 2); 1945 for (int i = 0; i < input.length; i++) { 1946 sb.append(Character.forDigit((input[i] & 240) >> 4, 16)); 1947 sb.append(Character.forDigit(input[i] & 15, 16)); 1948 } 1949 return sb.toString(); 1950 } 1951 protected static final StringBuilder append(StringBuilder buffer,boolean full,byte[] value){ 1952 if(full || null == value){ 1953 buffer.append(toHex(value)); 1954 }else{ 1955 buffer.append(value.length).append(" bytes"); 1956 } 1957 return buffer; 1958 } 1959 private static int stringLimit = 64; 1960 private static final int MINIMUM_LIMIT = 16; 1961 protected static final StringBuilder append(StringBuilder buffer,boolean full,String value){ 1962 if(full || null == value || value.length() <= stringLimit){ 1963 buffer.append(value); 1964 }else{ 1965 buffer.append(value.substring(0,stringLimit - 8)).append(" ...").append(value.substring(stringLimit-4,stringLimit)); 1966 } 1967 return buffer; 1968 } 1969 protected static final <T>StringBuilder append(StringBuilder buffer,boolean full,T value){ 1970 return buffer.append(value); 1971 } 1972 public static final void setStringLimit(int limit){ 1973 if(limit < MINIMUM_LIMIT){ 1974 throw new IllegalArgumentException(String.format("INVALID limit %d,minimum value %d",limit,MINIMUM_LIMIT)); 1975 } 1976 stringLimit = limit; 1977 } 1978 @Override 1979 public String toString(boolean notNull, boolean fullIfStringOrBytes) { 1980 // only output initialized field 1981 StringBuilder builder = new StringBuilder(this.getClass().getName()).append("@").append(Integer.toHexString(this.hashCode())).append("["); 1982 int count = 0; 1983 if(checkIdInitialized()){ 1984 if(!notNull || null != getId()){ 1985 if(count++ >0){ 1986 builder.append(","); 1987 } 1988 builder.append("id="); 1989 append(builder,fullIfStringOrBytes,getId()); 1990 } 1991 } 1992 if(checkImageMd5Initialized()){ 1993 if(!notNull || null != getImageMd5()){ 1994 if(count++ >0){ 1995 builder.append(","); 1996 } 1997 builder.append("image_md5="); 1998 append(builder,fullIfStringOrBytes,getImageMd5()); 1999 } 2000 } 2001 if(checkFaceLeftInitialized()){ 2002 if(!notNull || null != getFaceLeft()){ 2003 if(count++ >0){ 2004 builder.append(","); 2005 } 2006 builder.append("face_left="); 2007 append(builder,fullIfStringOrBytes,getFaceLeft()); 2008 } 2009 } 2010 if(checkFaceTopInitialized()){ 2011 if(!notNull || null != getFaceTop()){ 2012 if(count++ >0){ 2013 builder.append(","); 2014 } 2015 builder.append("face_top="); 2016 append(builder,fullIfStringOrBytes,getFaceTop()); 2017 } 2018 } 2019 if(checkFaceWidthInitialized()){ 2020 if(!notNull || null != getFaceWidth()){ 2021 if(count++ >0){ 2022 builder.append(","); 2023 } 2024 builder.append("face_width="); 2025 append(builder,fullIfStringOrBytes,getFaceWidth()); 2026 } 2027 } 2028 if(checkFaceHeightInitialized()){ 2029 if(!notNull || null != getFaceHeight()){ 2030 if(count++ >0){ 2031 builder.append(","); 2032 } 2033 builder.append("face_height="); 2034 append(builder,fullIfStringOrBytes,getFaceHeight()); 2035 } 2036 } 2037 if(checkEyeLeftxInitialized()){ 2038 if(!notNull || null != getEyeLeftx()){ 2039 if(count++ >0){ 2040 builder.append(","); 2041 } 2042 builder.append("eye_leftx="); 2043 append(builder,fullIfStringOrBytes,getEyeLeftx()); 2044 } 2045 } 2046 if(checkEyeLeftyInitialized()){ 2047 if(!notNull || null != getEyeLefty()){ 2048 if(count++ >0){ 2049 builder.append(","); 2050 } 2051 builder.append("eye_lefty="); 2052 append(builder,fullIfStringOrBytes,getEyeLefty()); 2053 } 2054 } 2055 if(checkEyeRightxInitialized()){ 2056 if(!notNull || null != getEyeRightx()){ 2057 if(count++ >0){ 2058 builder.append(","); 2059 } 2060 builder.append("eye_rightx="); 2061 append(builder,fullIfStringOrBytes,getEyeRightx()); 2062 } 2063 } 2064 if(checkEyeRightyInitialized()){ 2065 if(!notNull || null != getEyeRighty()){ 2066 if(count++ >0){ 2067 builder.append(","); 2068 } 2069 builder.append("eye_righty="); 2070 append(builder,fullIfStringOrBytes,getEyeRighty()); 2071 } 2072 } 2073 if(checkMouthXInitialized()){ 2074 if(!notNull || null != getMouthX()){ 2075 if(count++ >0){ 2076 builder.append(","); 2077 } 2078 builder.append("mouth_x="); 2079 append(builder,fullIfStringOrBytes,getMouthX()); 2080 } 2081 } 2082 if(checkMouthYInitialized()){ 2083 if(!notNull || null != getMouthY()){ 2084 if(count++ >0){ 2085 builder.append(","); 2086 } 2087 builder.append("mouth_y="); 2088 append(builder,fullIfStringOrBytes,getMouthY()); 2089 } 2090 } 2091 if(checkNoseXInitialized()){ 2092 if(!notNull || null != getNoseX()){ 2093 if(count++ >0){ 2094 builder.append(","); 2095 } 2096 builder.append("nose_x="); 2097 append(builder,fullIfStringOrBytes,getNoseX()); 2098 } 2099 } 2100 if(checkNoseYInitialized()){ 2101 if(!notNull || null != getNoseY()){ 2102 if(count++ >0){ 2103 builder.append(","); 2104 } 2105 builder.append("nose_y="); 2106 append(builder,fullIfStringOrBytes,getNoseY()); 2107 } 2108 } 2109 if(checkAngleYawInitialized()){ 2110 if(!notNull || null != getAngleYaw()){ 2111 if(count++ >0){ 2112 builder.append(","); 2113 } 2114 builder.append("angle_yaw="); 2115 append(builder,fullIfStringOrBytes,getAngleYaw()); 2116 } 2117 } 2118 if(checkAnglePitchInitialized()){ 2119 if(!notNull || null != getAnglePitch()){ 2120 if(count++ >0){ 2121 builder.append(","); 2122 } 2123 builder.append("angle_pitch="); 2124 append(builder,fullIfStringOrBytes,getAnglePitch()); 2125 } 2126 } 2127 if(checkAngleRollInitialized()){ 2128 if(!notNull || null != getAngleRoll()){ 2129 if(count++ >0){ 2130 builder.append(","); 2131 } 2132 builder.append("angle_roll="); 2133 append(builder,fullIfStringOrBytes,getAngleRoll()); 2134 } 2135 } 2136 if(checkExtInfoInitialized()){ 2137 if(!notNull || null != getExtInfo()){ 2138 if(count++ >0){ 2139 builder.append(","); 2140 } 2141 builder.append("ext_info="); 2142 append(builder,fullIfStringOrBytes,getExtInfo()); 2143 } 2144 } 2145 if(checkFeatureMd5Initialized()){ 2146 if(!notNull || null != getFeatureMd5()){ 2147 if(count++ >0){ 2148 builder.append(","); 2149 } 2150 builder.append("feature_md5="); 2151 append(builder,fullIfStringOrBytes,getFeatureMd5()); 2152 } 2153 } 2154 builder.append("]"); 2155 return builder.toString(); 2156 } 2157 @Override 2158 public int compareTo(FaceBean object){ 2159 return new CompareToBuilder() 2160 .append(getId(), object.getId()) 2161 .append(getImageMd5(), object.getImageMd5()) 2162 .append(getFaceLeft(), object.getFaceLeft()) 2163 .append(getFaceTop(), object.getFaceTop()) 2164 .append(getFaceWidth(), object.getFaceWidth()) 2165 .append(getFaceHeight(), object.getFaceHeight()) 2166 .append(getEyeLeftx(), object.getEyeLeftx()) 2167 .append(getEyeLefty(), object.getEyeLefty()) 2168 .append(getEyeRightx(), object.getEyeRightx()) 2169 .append(getEyeRighty(), object.getEyeRighty()) 2170 .append(getMouthX(), object.getMouthX()) 2171 .append(getMouthY(), object.getMouthY()) 2172 .append(getNoseX(), object.getNoseX()) 2173 .append(getNoseY(), object.getNoseY()) 2174 .append(getAngleYaw(), object.getAngleYaw()) 2175 .append(getAnglePitch(), object.getAnglePitch()) 2176 .append(getAngleRoll(), object.getAngleRoll()) 2177 .append(getExtInfo(), object.getExtInfo()) 2178 .append(getFeatureMd5(), object.getFeatureMd5()) 2179 .toComparison(); 2180 } 2181 @Override 2182 public FaceBean clone(){ 2183 try { 2184 return (FaceBean) super.clone(); 2185 } catch (CloneNotSupportedException e) { 2186 throw new RuntimeException(e); 2187 } 2188 } 2189 /** 2190 * Make {@code this} to a NULL bean<br> 2191 * set all fields to null, {@link #modified} and {@link #initialized} be set to 0 2192 * @return {@code this} bean 2193 * @author guyadong 2194 */ 2195 public FaceBean asNULL() 2196 { 2197 checkMutable(); 2198 2199 setId((Integer)null); 2200 setImageMd5((String)null); 2201 setFaceLeft((Integer)null); 2202 setFaceTop((Integer)null); 2203 setFaceWidth((Integer)null); 2204 setFaceHeight((Integer)null); 2205 setEyeLeftx((Integer)null); 2206 setEyeLefty((Integer)null); 2207 setEyeRightx((Integer)null); 2208 setEyeRighty((Integer)null); 2209 setMouthX((Integer)null); 2210 setMouthY((Integer)null); 2211 setNoseX((Integer)null); 2212 setNoseY((Integer)null); 2213 setAngleYaw((Integer)null); 2214 setAnglePitch((Integer)null); 2215 setAngleRoll((Integer)null); 2216 setExtInfo((java.nio.ByteBuffer)null); 2217 setFeatureMd5((String)null); 2218 isNew(true); 2219 resetInitialized(); 2220 resetIsModified(); 2221 return this; 2222 } 2223 /** 2224 * check whether this bean is a NULL bean 2225 * @return {@code true} if {@link #initialized} be set to zero 2226 * @see #asNULL() 2227 */ 2228 public boolean checkNULL(){ 2229 return 0 == getInitialized(); 2230 } 2231 /** 2232 * @param source source list 2233 * @return {@code source} replace {@code null} element with null instance({@link #NULL}) 2234 */ 2235 public static final List<FaceBean> replaceNull(List<FaceBean> source){ 2236 if(null != source){ 2237 for(int i = 0,endIndex = source.size();i<endIndex;++i){ 2238 if(null == source.get(i)){ 2239 source.set(i, NULL); 2240 } 2241 } 2242 } 2243 return source; 2244 } 2245 /** 2246 * @param source input list 2247 * @return replace null instance element with {@code null} 2248 * @see #checkNULL() 2249 */ 2250 public static final List<FaceBean> replaceNullInstance(List<FaceBean> source){ 2251 if(null != source){ 2252 for(int i = 0,endIndex = source.size();i<endIndex;++i){ 2253 if(source.get(i).checkNULL()){ 2254 source.set(i, null); 2255 } 2256 } 2257 } 2258 return source; 2259 } 2260 @Override 2261 public FaceBean copy(FaceBean bean) 2262 { 2263 return copy(bean,new int[]{}); 2264 } 2265 @Override 2266 public FaceBean copy(FaceBean bean, int... fieldList) 2267 { 2268 if (null == fieldList || 0 == fieldList.length){ 2269 fieldList = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18}; 2270 } 2271 for (int i = 0; i < fieldList.length; ++i) { 2272 if( bean.isInitialized(fieldList[i]) && !Objects.deepEquals(bean.getValue(fieldList[i]), getValue(fieldList[i]))){ 2273 setValue(fieldList[i], bean.getValue(fieldList[i])); 2274 } 2275 } 2276 return this; 2277 } 2278 2279 @Override 2280 public FaceBean copy(FaceBean bean, String... fieldList) 2281 { 2282 if (null == fieldList || 0 == fieldList.length){ 2283 copy(bean,(int[])null); 2284 }else{ 2285 int field; 2286 for (int i = 0; i < fieldList.length; i++) { 2287 field = columnIDOf(fieldList[i].trim()); 2288 if(bean.isInitialized(field) && !Objects.deepEquals(bean.getValue(field), getValue(field))){ 2289 setValue(field, bean.getValue(field)); 2290 } 2291 } 2292 } 2293 return this; 2294 } 2295 2296 @SuppressWarnings("unchecked") 2297 @Override 2298 public <T>T getValue(int columnID) 2299 { 2300 switch( columnID ){ 2301 case FL_FACE_ID_ID: 2302 return (T)getId(); 2303 case FL_FACE_ID_IMAGE_MD5: 2304 return (T)getImageMd5(); 2305 case FL_FACE_ID_FACE_LEFT: 2306 return (T)getFaceLeft(); 2307 case FL_FACE_ID_FACE_TOP: 2308 return (T)getFaceTop(); 2309 case FL_FACE_ID_FACE_WIDTH: 2310 return (T)getFaceWidth(); 2311 case FL_FACE_ID_FACE_HEIGHT: 2312 return (T)getFaceHeight(); 2313 case FL_FACE_ID_EYE_LEFTX: 2314 return (T)getEyeLeftx(); 2315 case FL_FACE_ID_EYE_LEFTY: 2316 return (T)getEyeLefty(); 2317 case FL_FACE_ID_EYE_RIGHTX: 2318 return (T)getEyeRightx(); 2319 case FL_FACE_ID_EYE_RIGHTY: 2320 return (T)getEyeRighty(); 2321 case FL_FACE_ID_MOUTH_X: 2322 return (T)getMouthX(); 2323 case FL_FACE_ID_MOUTH_Y: 2324 return (T)getMouthY(); 2325 case FL_FACE_ID_NOSE_X: 2326 return (T)getNoseX(); 2327 case FL_FACE_ID_NOSE_Y: 2328 return (T)getNoseY(); 2329 case FL_FACE_ID_ANGLE_YAW: 2330 return (T)getAngleYaw(); 2331 case FL_FACE_ID_ANGLE_PITCH: 2332 return (T)getAnglePitch(); 2333 case FL_FACE_ID_ANGLE_ROLL: 2334 return (T)getAngleRoll(); 2335 case FL_FACE_ID_EXT_INFO: 2336 return (T)getExtInfo(); 2337 case FL_FACE_ID_FEATURE_MD5: 2338 return (T)getFeatureMd5(); 2339 default: 2340 return null; 2341 } 2342 } 2343 2344 @Override 2345 public <T> void setValue(int columnID,T value) 2346 { 2347 switch( columnID ) { 2348 case FL_FACE_ID_ID: 2349 setId((Integer)value); 2350 break; 2351 case FL_FACE_ID_IMAGE_MD5: 2352 setImageMd5((String)value); 2353 break; 2354 case FL_FACE_ID_FACE_LEFT: 2355 setFaceLeft((Integer)value); 2356 break; 2357 case FL_FACE_ID_FACE_TOP: 2358 setFaceTop((Integer)value); 2359 break; 2360 case FL_FACE_ID_FACE_WIDTH: 2361 setFaceWidth((Integer)value); 2362 break; 2363 case FL_FACE_ID_FACE_HEIGHT: 2364 setFaceHeight((Integer)value); 2365 break; 2366 case FL_FACE_ID_EYE_LEFTX: 2367 setEyeLeftx((Integer)value); 2368 break; 2369 case FL_FACE_ID_EYE_LEFTY: 2370 setEyeLefty((Integer)value); 2371 break; 2372 case FL_FACE_ID_EYE_RIGHTX: 2373 setEyeRightx((Integer)value); 2374 break; 2375 case FL_FACE_ID_EYE_RIGHTY: 2376 setEyeRighty((Integer)value); 2377 break; 2378 case FL_FACE_ID_MOUTH_X: 2379 setMouthX((Integer)value); 2380 break; 2381 case FL_FACE_ID_MOUTH_Y: 2382 setMouthY((Integer)value); 2383 break; 2384 case FL_FACE_ID_NOSE_X: 2385 setNoseX((Integer)value); 2386 break; 2387 case FL_FACE_ID_NOSE_Y: 2388 setNoseY((Integer)value); 2389 break; 2390 case FL_FACE_ID_ANGLE_YAW: 2391 setAngleYaw((Integer)value); 2392 break; 2393 case FL_FACE_ID_ANGLE_PITCH: 2394 setAnglePitch((Integer)value); 2395 break; 2396 case FL_FACE_ID_ANGLE_ROLL: 2397 setAngleRoll((Integer)value); 2398 break; 2399 case FL_FACE_ID_EXT_INFO: 2400 setExtInfo((java.nio.ByteBuffer)value); 2401 break; 2402 case FL_FACE_ID_FEATURE_MD5: 2403 setFeatureMd5((String)value); 2404 break; 2405 default: 2406 break; 2407 } 2408 } 2409 2410 @Override 2411 public <T> T getValue(String column) 2412 { 2413 return getValue(columnIDOf(column)); 2414 } 2415 2416 @Override 2417 public <T> void setValue(String column,T value) 2418 { 2419 setValue(columnIDOf(column),value); 2420 } 2421 2422 /** 2423 * @param column column name 2424 * @return column id for the given field name or negative if {@code column} is invalid name 2425 */ 2426 public static int columnIDOf(String column){ 2427 int index = FL_FACE_FIELDS_LIST.indexOf(column); 2428 return index < 0 2429 ? FL_FACE_JAVA_FIELDS_LIST.indexOf(column) 2430 : index; 2431 } 2432 2433 public static String columnNameOf(int columnId){ 2434 try{ 2435 return FL_FACE_FIELDS_LIST.get(columnId); 2436 } catch(IndexOutOfBoundsException e){ 2437 return null; 2438 } 2439 } 2440 2441 public static Class<?> typeOf(int columnId){ 2442 try{ 2443 return FL_FACE_FIELD_TYPES[columnId]; 2444 } catch(IndexOutOfBoundsException e){ 2445 return null; 2446 } 2447 } 2448 2449 public static final Builder builder(){ 2450 return new Builder().reset(); 2451 } 2452 /** 2453 * a builder for FaceBean,the template instance is thread local variable 2454 * a instance of Builder can be reused. 2455 */ 2456 public static final class Builder{ 2457 /** FaceBean instance used for template to create new FaceBean instance. */ 2458 static final ThreadLocal<FaceBean> TEMPLATE = new ThreadLocal<FaceBean>(){ 2459 @Override 2460 protected FaceBean initialValue() { 2461 return new FaceBean(); 2462 }}; 2463 private Builder() {} 2464 /** 2465 * reset the bean as template 2466 * @see FaceBean#reset() 2467 */ 2468 public Builder reset(){ 2469 TEMPLATE.get().reset(); 2470 return this; 2471 } 2472 /** set a bean as template,must not be {@code null} */ 2473 public Builder template(FaceBean bean){ 2474 if(null == bean){ 2475 throw new NullPointerException(); 2476 } 2477 TEMPLATE.set(bean); 2478 return this; 2479 } 2480 /** return a clone instance of {@link #TEMPLATE}*/ 2481 public FaceBean build(){ 2482 return TEMPLATE.get().clone(); 2483 } 2484 /** 2485 * fill the field : fl_face.id 2486 * @param id 主键 2487 * @see FaceBean#getId() 2488 * @see FaceBean#setId(Integer) 2489 */ 2490 public Builder id(Integer id){ 2491 TEMPLATE.get().setId(id); 2492 return this; 2493 } 2494 /** 2495 * fill the field : fl_face.image_md5 2496 * @param imageMd5 外键,所属图像id 2497 * @see FaceBean#getImageMd5() 2498 * @see FaceBean#setImageMd5(String) 2499 */ 2500 public Builder imageMd5(String imageMd5){ 2501 TEMPLATE.get().setImageMd5(imageMd5); 2502 return this; 2503 } 2504 /** 2505 * fill the field : fl_face.face_left 2506 * @param faceLeft 人脸位置矩形:x 2507 * @see FaceBean#getFaceLeft() 2508 * @see FaceBean#setFaceLeft(Integer) 2509 */ 2510 public Builder faceLeft(Integer faceLeft){ 2511 TEMPLATE.get().setFaceLeft(faceLeft); 2512 return this; 2513 } 2514 /** 2515 * fill the field : fl_face.face_top 2516 * @param faceTop 人脸位置矩形:y 2517 * @see FaceBean#getFaceTop() 2518 * @see FaceBean#setFaceTop(Integer) 2519 */ 2520 public Builder faceTop(Integer faceTop){ 2521 TEMPLATE.get().setFaceTop(faceTop); 2522 return this; 2523 } 2524 /** 2525 * fill the field : fl_face.face_width 2526 * @param faceWidth 人脸位置矩形:width 2527 * @see FaceBean#getFaceWidth() 2528 * @see FaceBean#setFaceWidth(Integer) 2529 */ 2530 public Builder faceWidth(Integer faceWidth){ 2531 TEMPLATE.get().setFaceWidth(faceWidth); 2532 return this; 2533 } 2534 /** 2535 * fill the field : fl_face.face_height 2536 * @param faceHeight 人脸位置矩形:height 2537 * @see FaceBean#getFaceHeight() 2538 * @see FaceBean#setFaceHeight(Integer) 2539 */ 2540 public Builder faceHeight(Integer faceHeight){ 2541 TEMPLATE.get().setFaceHeight(faceHeight); 2542 return this; 2543 } 2544 /** 2545 * fill the field : fl_face.eye_leftx 2546 * @param eyeLeftx 左眼位置:x 2547 * @see FaceBean#getEyeLeftx() 2548 * @see FaceBean#setEyeLeftx(Integer) 2549 */ 2550 public Builder eyeLeftx(Integer eyeLeftx){ 2551 TEMPLATE.get().setEyeLeftx(eyeLeftx); 2552 return this; 2553 } 2554 /** 2555 * fill the field : fl_face.eye_lefty 2556 * @param eyeLefty 左眼位置:y 2557 * @see FaceBean#getEyeLefty() 2558 * @see FaceBean#setEyeLefty(Integer) 2559 */ 2560 public Builder eyeLefty(Integer eyeLefty){ 2561 TEMPLATE.get().setEyeLefty(eyeLefty); 2562 return this; 2563 } 2564 /** 2565 * fill the field : fl_face.eye_rightx 2566 * @param eyeRightx 右眼位置:x 2567 * @see FaceBean#getEyeRightx() 2568 * @see FaceBean#setEyeRightx(Integer) 2569 */ 2570 public Builder eyeRightx(Integer eyeRightx){ 2571 TEMPLATE.get().setEyeRightx(eyeRightx); 2572 return this; 2573 } 2574 /** 2575 * fill the field : fl_face.eye_righty 2576 * @param eyeRighty 右眼位置:y 2577 * @see FaceBean#getEyeRighty() 2578 * @see FaceBean#setEyeRighty(Integer) 2579 */ 2580 public Builder eyeRighty(Integer eyeRighty){ 2581 TEMPLATE.get().setEyeRighty(eyeRighty); 2582 return this; 2583 } 2584 /** 2585 * fill the field : fl_face.mouth_x 2586 * @param mouthX 嘴巴位置:x 2587 * @see FaceBean#getMouthX() 2588 * @see FaceBean#setMouthX(Integer) 2589 */ 2590 public Builder mouthX(Integer mouthX){ 2591 TEMPLATE.get().setMouthX(mouthX); 2592 return this; 2593 } 2594 /** 2595 * fill the field : fl_face.mouth_y 2596 * @param mouthY 嘴巴位置:y 2597 * @see FaceBean#getMouthY() 2598 * @see FaceBean#setMouthY(Integer) 2599 */ 2600 public Builder mouthY(Integer mouthY){ 2601 TEMPLATE.get().setMouthY(mouthY); 2602 return this; 2603 } 2604 /** 2605 * fill the field : fl_face.nose_x 2606 * @param noseX 鼻子位置:x 2607 * @see FaceBean#getNoseX() 2608 * @see FaceBean#setNoseX(Integer) 2609 */ 2610 public Builder noseX(Integer noseX){ 2611 TEMPLATE.get().setNoseX(noseX); 2612 return this; 2613 } 2614 /** 2615 * fill the field : fl_face.nose_y 2616 * @param noseY 鼻子位置:y 2617 * @see FaceBean#getNoseY() 2618 * @see FaceBean#setNoseY(Integer) 2619 */ 2620 public Builder noseY(Integer noseY){ 2621 TEMPLATE.get().setNoseY(noseY); 2622 return this; 2623 } 2624 /** 2625 * fill the field : fl_face.angle_yaw 2626 * @param angleYaw 人脸姿态:偏航角 2627 * @see FaceBean#getAngleYaw() 2628 * @see FaceBean#setAngleYaw(Integer) 2629 */ 2630 public Builder angleYaw(Integer angleYaw){ 2631 TEMPLATE.get().setAngleYaw(angleYaw); 2632 return this; 2633 } 2634 /** 2635 * fill the field : fl_face.angle_pitch 2636 * @param anglePitch 人脸姿态:俯仰角 2637 * @see FaceBean#getAnglePitch() 2638 * @see FaceBean#setAnglePitch(Integer) 2639 */ 2640 public Builder anglePitch(Integer anglePitch){ 2641 TEMPLATE.get().setAnglePitch(anglePitch); 2642 return this; 2643 } 2644 /** 2645 * fill the field : fl_face.angle_roll 2646 * @param angleRoll 人脸姿态:滚转角 2647 * @see FaceBean#getAngleRoll() 2648 * @see FaceBean#setAngleRoll(Integer) 2649 */ 2650 public Builder angleRoll(Integer angleRoll){ 2651 TEMPLATE.get().setAngleRoll(angleRoll); 2652 return this; 2653 } 2654 /** 2655 * fill the field : fl_face.ext_info 2656 * @param extInfo 扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析 2657 * @see FaceBean#getExtInfo() 2658 * @see FaceBean#setExtInfo(java.nio.ByteBuffer) 2659 */ 2660 public Builder extInfo(java.nio.ByteBuffer extInfo){ 2661 TEMPLATE.get().setExtInfo(extInfo); 2662 return this; 2663 } 2664 /** 2665 * fill the field : fl_face.feature_md5 2666 * @param featureMd5 外键,人脸特征数据MD5 id 2667 * @see FaceBean#getFeatureMd5() 2668 * @see FaceBean#setFeatureMd5(String) 2669 */ 2670 public Builder featureMd5(String featureMd5){ 2671 TEMPLATE.get().setFeatureMd5(featureMd5); 2672 return this; 2673 } 2674 } 2675}