001// ______________________________________________________
002// Generated by sql2java - https://github.com/10km/sql2java 
003// JDBC driver used at code generation time: com.mysql.jdbc.Driver
004// template: bean.java.vm
005// ______________________________________________________
006package net.gdface.facedb.db;
007import java.io.Serializable;
008import java.util.Objects;
009
010import gu.sql2java.BaseRow;
011
012import com.facebook.swift.codec.ThriftStruct;
013import com.facebook.swift.codec.ThriftField;
014import com.facebook.swift.codec.ThriftField.Requiredness;
015import io.swagger.annotations.ApiModel;
016import io.swagger.annotations.ApiModelProperty;
017import com.fasterxml.jackson.annotation.JsonProperty;
018import com.fasterxml.jackson.annotation.JsonIgnore;
019/**
020 * FaceBean is a mapping of fd_face Table.
021 * <br>Meta Data Information (in progress):
022 * <ul>
023 *    <li>comments: 人脸检测信息数据表,用于保存检测到的人脸的所有信息(特征数据除外) </li>
024 * </ul>
025 * @author guyadong
026*/
027@ThriftStruct
028@ApiModel(description="人脸检测信息数据表,用于保存检测到的人脸的所有信息(特征数据除外)")
029public final class FaceBean extends BaseRow
030    implements Serializable,Constant
031{
032    private static final long serialVersionUID = 5300396122553394837L;
033
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:外键,人脸特征数据MD5 id */
043    @ApiModelProperty(value = "外键,人脸特征数据MD5 id"  ,dataType="String")
044    private String featureMd5;
045
046    @ApiModelProperty(value = "face_left" ,required=true ,dataType="Integer")
047    private Integer faceLeft;
048
049    @ApiModelProperty(value = "face_top" ,required=true ,dataType="Integer")
050    private Integer faceTop;
051
052    @ApiModelProperty(value = "face_width" ,required=true ,dataType="Integer")
053    private Integer faceWidth;
054
055    @ApiModelProperty(value = "face_height" ,required=true ,dataType="Integer")
056    private Integer faceHeight;
057
058    @ApiModelProperty(value = "eye_leftx"  ,dataType="Integer")
059    private Integer eyeLeftx;
060
061    @ApiModelProperty(value = "eye_lefty"  ,dataType="Integer")
062    private Integer eyeLefty;
063
064    @ApiModelProperty(value = "eye_rightx"  ,dataType="Integer")
065    private Integer eyeRightx;
066
067    @ApiModelProperty(value = "eye_righty"  ,dataType="Integer")
068    private Integer eyeRighty;
069
070    @ApiModelProperty(value = "mouth_x"  ,dataType="Integer")
071    private Integer mouthX;
072
073    @ApiModelProperty(value = "mouth_y"  ,dataType="Integer")
074    private Integer mouthY;
075
076    @ApiModelProperty(value = "nose_x"  ,dataType="Integer")
077    private Integer noseX;
078
079    @ApiModelProperty(value = "nose_y"  ,dataType="Integer")
080    private Integer noseY;
081
082    @ApiModelProperty(value = "angle_yaw"  ,dataType="Integer")
083    private Integer angleYaw;
084
085    @ApiModelProperty(value = "angle_pitch"  ,dataType="Integer")
086    private Integer anglePitch;
087
088    @ApiModelProperty(value = "angle_roll"  ,dataType="Integer")
089    private Integer angleRoll;
090
091    @ApiModelProperty(value = "angle_confidence"  ,dataType="Float")
092    private Float angleConfidence;
093
094    /** comments:扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析 */
095    @ApiModelProperty(value = "扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析"  ,dataType="ByteBuffer")
096    private java.nio.ByteBuffer extInfo;
097
098    @ApiModelProperty(value = "create_time"  ,dataType="Date")
099    private java.util.Date createTime;
100
101    /** columns modified flag */
102    @ApiModelProperty(value="columns modified flag",dataType="int",required=true)
103    private int modified;
104    /** columns initialized flag */
105    @ApiModelProperty(value="columns initialized flag",dataType="int",required=true)
106    private int initialized;
107    /** new record flag  */
108    @ApiModelProperty(value="new record flag",dataType="boolean",required=true)
109    private boolean isNew;        
110    @ThriftField(value=1,name="_new",requiredness=Requiredness.REQUIRED)
111    @Override
112    public boolean isNew()
113    {
114        return this.isNew;
115    }
116
117    /**
118     * Specifies to the object if it has been set as new.
119     *
120     * @param isNew the boolean value to be assigned to the isNew field
121     */
122    @ThriftField()
123    @Override
124    public void setNew(boolean isNew)
125    {
126        this.isNew = isNew;
127    }
128    /**
129     * @return the modified status of columns
130     */
131    @ThriftField(value=2,requiredness=Requiredness.REQUIRED)
132    @Override
133    public int getModified(){
134        return modified;
135    }
136
137    /**
138     * @param modified the modified status bit to be assigned to {@link #modified}
139     */
140    @ThriftField()
141    @Override
142    public void setModified(int modified){
143        this.modified = modified;
144    }
145    /**
146     * @return the initialized status of columns
147     */
148    @ThriftField(value=3,requiredness=Requiredness.REQUIRED)
149    @Override
150    public int getInitialized(){
151        return initialized;
152    }
153
154    /**
155     * @param initialized the initialized status bit to be assigned to {@link #initialized}
156     */
157    @ThriftField()
158    @Override
159    public void setInitialized(int initialized){
160        this.initialized = initialized;
161    }
162
163    public FaceBean(){
164        reset();
165    }
166    /**
167     * construct a new instance filled with primary keys
168     * @param id PK# 1 
169     */
170    public FaceBean(Integer id){
171        setId(id);
172    }
173    /**
174     * Getter method for {@link #id}.<br>
175     * PRIMARY KEY.<br>
176     * Meta Data Information (in progress):
177     * <ul>
178     * <li>full name: fd_face.id</li>
179     * <li>comments: 主键</li>
180     * <li>AUTO_INCREMENT</li>
181     * <li>NOT NULL</li>
182     * <li>column size: 10</li>
183     * <li>JDBC type returned by the driver: Types.INTEGER</li>
184     * </ul>
185     *
186     * @return the value of id
187     */
188    @ThriftField(value=4)
189    @JsonProperty("id")
190    public Integer getId(){
191        return id;
192    }
193    /**
194     * Setter method for {@link #id}.<br>
195     * The new value is set only if equals() says it is different,
196     * or if one of either the new value or the current value is null.
197     * In case the new value is different, it is set and the field is marked as 'modified'.
198     *
199     * @param newVal the new value to be assigned to id
200     */
201    @ThriftField(name="id")
202    @JsonProperty("id")
203    public void setId(Integer newVal)
204    {
205        modified |= FD_FACE_ID_ID_MASK;
206        initialized |= FD_FACE_ID_ID_MASK;
207
208        if (Objects.equals(newVal, id)) {
209            return;
210        }
211        id = newVal;
212    }
213    /**
214     * Setter method for {@link #id}.<br>
215     * Convenient for those who do not want to deal with Objects for primary types.
216     *
217     * @param newVal the new value to be assigned to id
218     */
219    @JsonIgnore
220    public void setId(int newVal)
221    {
222        setId(new Integer(newVal));
223    }
224    /**
225     * Determines if the id has been modified.
226     *
227     * @return true if the field has been modified, false if the field has not been modified
228     */
229    public boolean checkIdModified()
230    {
231        return 0 !=  (modified & FD_FACE_ID_ID_MASK);
232    }
233
234    /**
235     * Determines if the id has been initialized.<br>
236     *
237     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
238     *
239     * @return true if the field has been initialized, false otherwise
240     */
241    public boolean checkIdInitialized()
242    {
243        return 0 !=  (initialized & FD_FACE_ID_ID_MASK);
244    }
245    /**
246     * Getter method for {@link #imageMd5}.<br>
247     * Meta Data Information (in progress):
248     * <ul>
249     * <li>full name: fd_face.image_md5</li>
250     * <li> foreign key: fd_image.md5</li>
251     * <li>comments: 外键,所属图像id</li>
252     * <li>NOT NULL</li>
253     * <li>column size: 32</li>
254     * <li>JDBC type returned by the driver: Types.CHAR</li>
255     * </ul>
256     *
257     * @return the value of imageMd5
258     */
259    @ThriftField(value=5)
260    @JsonProperty("imageMd5")
261    public String getImageMd5(){
262        return imageMd5;
263    }
264    /**
265     * Setter method for {@link #imageMd5}.<br>
266     * The new value is set only if equals() says it is different,
267     * or if one of either the new value or the current value is null.
268     * In case the new value is different, it is set and the field is marked as 'modified'.
269     *
270     * @param newVal the new value( NOT NULL) to be assigned to imageMd5
271     */
272    @ThriftField(name="imageMd5")
273    @JsonProperty("imageMd5")
274    public void setImageMd5(String newVal)
275    {
276        modified |= FD_FACE_ID_IMAGE_MD5_MASK;
277        initialized |= FD_FACE_ID_IMAGE_MD5_MASK;
278
279        if (Objects.equals(newVal, imageMd5)) {
280            return;
281        }
282        imageMd5 = newVal;
283    }
284    /**
285     * Determines if the imageMd5 has been modified.
286     *
287     * @return true if the field has been modified, false if the field has not been modified
288     */
289    public boolean checkImageMd5Modified()
290    {
291        return 0 !=  (modified & FD_FACE_ID_IMAGE_MD5_MASK);
292    }
293
294    /**
295     * Determines if the imageMd5 has been initialized.<br>
296     *
297     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
298     *
299     * @return true if the field has been initialized, false otherwise
300     */
301    public boolean checkImageMd5Initialized()
302    {
303        return 0 !=  (initialized & FD_FACE_ID_IMAGE_MD5_MASK);
304    }
305    /**
306     * Getter method for {@link #featureMd5}.<br>
307     * Meta Data Information (in progress):
308     * <ul>
309     * <li>full name: fd_face.feature_md5</li>
310     * <li> foreign key: fd_feature.md5</li>
311     * <li>comments: 外键,人脸特征数据MD5 id</li>
312     * <li>column size: 32</li>
313     * <li>JDBC type returned by the driver: Types.CHAR</li>
314     * </ul>
315     *
316     * @return the value of featureMd5
317     */
318    @ThriftField(value=6)
319    @JsonProperty("featureMd5")
320    public String getFeatureMd5(){
321        return featureMd5;
322    }
323    /**
324     * Setter method for {@link #featureMd5}.<br>
325     * The new value is set only if equals() says it is different,
326     * or if one of either the new value or the current value is null.
327     * In case the new value is different, it is set and the field is marked as 'modified'.
328     *
329     * @param newVal the new value to be assigned to featureMd5
330     */
331    @ThriftField(name="featureMd5")
332    @JsonProperty("featureMd5")
333    public void setFeatureMd5(String newVal)
334    {
335        modified |= FD_FACE_ID_FEATURE_MD5_MASK;
336        initialized |= FD_FACE_ID_FEATURE_MD5_MASK;
337
338        if (Objects.equals(newVal, featureMd5)) {
339            return;
340        }
341        featureMd5 = newVal;
342    }
343    /**
344     * Determines if the featureMd5 has been modified.
345     *
346     * @return true if the field has been modified, false if the field has not been modified
347     */
348    public boolean checkFeatureMd5Modified()
349    {
350        return 0 !=  (modified & FD_FACE_ID_FEATURE_MD5_MASK);
351    }
352
353    /**
354     * Determines if the featureMd5 has been initialized.<br>
355     *
356     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
357     *
358     * @return true if the field has been initialized, false otherwise
359     */
360    public boolean checkFeatureMd5Initialized()
361    {
362        return 0 !=  (initialized & FD_FACE_ID_FEATURE_MD5_MASK);
363    }
364    /**
365     * Getter method for {@link #faceLeft}.<br>
366     * Meta Data Information (in progress):
367     * <ul>
368     * <li>full name: fd_face.face_left</li>
369     * <li>NOT NULL</li>
370     * <li>column size: 10</li>
371     * <li>JDBC type returned by the driver: Types.INTEGER</li>
372     * </ul>
373     *
374     * @return the value of faceLeft
375     */
376    @ThriftField(value=7)
377    @JsonProperty("faceLeft")
378    public Integer getFaceLeft(){
379        return faceLeft;
380    }
381    /**
382     * Setter method for {@link #faceLeft}.<br>
383     * The new value is set only if equals() says it is different,
384     * or if one of either the new value or the current value is null.
385     * In case the new value is different, it is set and the field is marked as 'modified'.
386     *
387     * @param newVal the new value( NOT NULL) to be assigned to faceLeft
388     */
389    @ThriftField(name="faceLeft")
390    @JsonProperty("faceLeft")
391    public void setFaceLeft(Integer newVal)
392    {
393        modified |= FD_FACE_ID_FACE_LEFT_MASK;
394        initialized |= FD_FACE_ID_FACE_LEFT_MASK;
395
396        if (Objects.equals(newVal, faceLeft)) {
397            return;
398        }
399        faceLeft = newVal;
400    }
401    /**
402     * Setter method for {@link #faceLeft}.<br>
403     * Convenient for those who do not want to deal with Objects for primary types.
404     *
405     * @param newVal the new value to be assigned to faceLeft
406     */
407    @JsonIgnore
408    public void setFaceLeft(int newVal)
409    {
410        setFaceLeft(new Integer(newVal));
411    }
412    /**
413     * Determines if the faceLeft has been modified.
414     *
415     * @return true if the field has been modified, false if the field has not been modified
416     */
417    public boolean checkFaceLeftModified()
418    {
419        return 0 !=  (modified & FD_FACE_ID_FACE_LEFT_MASK);
420    }
421
422    /**
423     * Determines if the faceLeft has been initialized.<br>
424     *
425     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
426     *
427     * @return true if the field has been initialized, false otherwise
428     */
429    public boolean checkFaceLeftInitialized()
430    {
431        return 0 !=  (initialized & FD_FACE_ID_FACE_LEFT_MASK);
432    }
433    /**
434     * Getter method for {@link #faceTop}.<br>
435     * Meta Data Information (in progress):
436     * <ul>
437     * <li>full name: fd_face.face_top</li>
438     * <li>NOT NULL</li>
439     * <li>column size: 10</li>
440     * <li>JDBC type returned by the driver: Types.INTEGER</li>
441     * </ul>
442     *
443     * @return the value of faceTop
444     */
445    @ThriftField(value=8)
446    @JsonProperty("faceTop")
447    public Integer getFaceTop(){
448        return faceTop;
449    }
450    /**
451     * Setter method for {@link #faceTop}.<br>
452     * The new value is set only if equals() says it is different,
453     * or if one of either the new value or the current value is null.
454     * In case the new value is different, it is set and the field is marked as 'modified'.
455     *
456     * @param newVal the new value( NOT NULL) to be assigned to faceTop
457     */
458    @ThriftField(name="faceTop")
459    @JsonProperty("faceTop")
460    public void setFaceTop(Integer newVal)
461    {
462        modified |= FD_FACE_ID_FACE_TOP_MASK;
463        initialized |= FD_FACE_ID_FACE_TOP_MASK;
464
465        if (Objects.equals(newVal, faceTop)) {
466            return;
467        }
468        faceTop = newVal;
469    }
470    /**
471     * Setter method for {@link #faceTop}.<br>
472     * Convenient for those who do not want to deal with Objects for primary types.
473     *
474     * @param newVal the new value to be assigned to faceTop
475     */
476    @JsonIgnore
477    public void setFaceTop(int newVal)
478    {
479        setFaceTop(new Integer(newVal));
480    }
481    /**
482     * Determines if the faceTop has been modified.
483     *
484     * @return true if the field has been modified, false if the field has not been modified
485     */
486    public boolean checkFaceTopModified()
487    {
488        return 0 !=  (modified & FD_FACE_ID_FACE_TOP_MASK);
489    }
490
491    /**
492     * Determines if the faceTop has been initialized.<br>
493     *
494     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
495     *
496     * @return true if the field has been initialized, false otherwise
497     */
498    public boolean checkFaceTopInitialized()
499    {
500        return 0 !=  (initialized & FD_FACE_ID_FACE_TOP_MASK);
501    }
502    /**
503     * Getter method for {@link #faceWidth}.<br>
504     * Meta Data Information (in progress):
505     * <ul>
506     * <li>full name: fd_face.face_width</li>
507     * <li>NOT NULL</li>
508     * <li>column size: 10</li>
509     * <li>JDBC type returned by the driver: Types.INTEGER</li>
510     * </ul>
511     *
512     * @return the value of faceWidth
513     */
514    @ThriftField(value=9)
515    @JsonProperty("faceWidth")
516    public Integer getFaceWidth(){
517        return faceWidth;
518    }
519    /**
520     * Setter method for {@link #faceWidth}.<br>
521     * The new value is set only if equals() says it is different,
522     * or if one of either the new value or the current value is null.
523     * In case the new value is different, it is set and the field is marked as 'modified'.
524     *
525     * @param newVal the new value( NOT NULL) to be assigned to faceWidth
526     */
527    @ThriftField(name="faceWidth")
528    @JsonProperty("faceWidth")
529    public void setFaceWidth(Integer newVal)
530    {
531        modified |= FD_FACE_ID_FACE_WIDTH_MASK;
532        initialized |= FD_FACE_ID_FACE_WIDTH_MASK;
533
534        if (Objects.equals(newVal, faceWidth)) {
535            return;
536        }
537        faceWidth = newVal;
538    }
539    /**
540     * Setter method for {@link #faceWidth}.<br>
541     * Convenient for those who do not want to deal with Objects for primary types.
542     *
543     * @param newVal the new value to be assigned to faceWidth
544     */
545    @JsonIgnore
546    public void setFaceWidth(int newVal)
547    {
548        setFaceWidth(new Integer(newVal));
549    }
550    /**
551     * Determines if the faceWidth has been modified.
552     *
553     * @return true if the field has been modified, false if the field has not been modified
554     */
555    public boolean checkFaceWidthModified()
556    {
557        return 0 !=  (modified & FD_FACE_ID_FACE_WIDTH_MASK);
558    }
559
560    /**
561     * Determines if the faceWidth has been initialized.<br>
562     *
563     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
564     *
565     * @return true if the field has been initialized, false otherwise
566     */
567    public boolean checkFaceWidthInitialized()
568    {
569        return 0 !=  (initialized & FD_FACE_ID_FACE_WIDTH_MASK);
570    }
571    /**
572     * Getter method for {@link #faceHeight}.<br>
573     * Meta Data Information (in progress):
574     * <ul>
575     * <li>full name: fd_face.face_height</li>
576     * <li>NOT NULL</li>
577     * <li>column size: 10</li>
578     * <li>JDBC type returned by the driver: Types.INTEGER</li>
579     * </ul>
580     *
581     * @return the value of faceHeight
582     */
583    @ThriftField(value=10)
584    @JsonProperty("faceHeight")
585    public Integer getFaceHeight(){
586        return faceHeight;
587    }
588    /**
589     * Setter method for {@link #faceHeight}.<br>
590     * The new value is set only if equals() says it is different,
591     * or if one of either the new value or the current value is null.
592     * In case the new value is different, it is set and the field is marked as 'modified'.
593     *
594     * @param newVal the new value( NOT NULL) to be assigned to faceHeight
595     */
596    @ThriftField(name="faceHeight")
597    @JsonProperty("faceHeight")
598    public void setFaceHeight(Integer newVal)
599    {
600        modified |= FD_FACE_ID_FACE_HEIGHT_MASK;
601        initialized |= FD_FACE_ID_FACE_HEIGHT_MASK;
602
603        if (Objects.equals(newVal, faceHeight)) {
604            return;
605        }
606        faceHeight = newVal;
607    }
608    /**
609     * Setter method for {@link #faceHeight}.<br>
610     * Convenient for those who do not want to deal with Objects for primary types.
611     *
612     * @param newVal the new value to be assigned to faceHeight
613     */
614    @JsonIgnore
615    public void setFaceHeight(int newVal)
616    {
617        setFaceHeight(new Integer(newVal));
618    }
619    /**
620     * Determines if the faceHeight has been modified.
621     *
622     * @return true if the field has been modified, false if the field has not been modified
623     */
624    public boolean checkFaceHeightModified()
625    {
626        return 0 !=  (modified & FD_FACE_ID_FACE_HEIGHT_MASK);
627    }
628
629    /**
630     * Determines if the faceHeight has been initialized.<br>
631     *
632     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
633     *
634     * @return true if the field has been initialized, false otherwise
635     */
636    public boolean checkFaceHeightInitialized()
637    {
638        return 0 !=  (initialized & FD_FACE_ID_FACE_HEIGHT_MASK);
639    }
640    /**
641     * Getter method for {@link #eyeLeftx}.<br>
642     * Meta Data Information (in progress):
643     * <ul>
644     * <li>full name: fd_face.eye_leftx</li>
645     * <li>column size: 10</li>
646     * <li>JDBC type returned by the driver: Types.INTEGER</li>
647     * </ul>
648     *
649     * @return the value of eyeLeftx
650     */
651    @ThriftField(value=11)
652    @JsonProperty("eyeLeftx")
653    public Integer getEyeLeftx(){
654        return eyeLeftx;
655    }
656    /**
657     * Setter method for {@link #eyeLeftx}.<br>
658     * The new value is set only if equals() says it is different,
659     * or if one of either the new value or the current value is null.
660     * In case the new value is different, it is set and the field is marked as 'modified'.
661     *
662     * @param newVal the new value to be assigned to eyeLeftx
663     */
664    @ThriftField(name="eyeLeftx")
665    @JsonProperty("eyeLeftx")
666    public void setEyeLeftx(Integer newVal)
667    {
668        modified |= FD_FACE_ID_EYE_LEFTX_MASK;
669        initialized |= FD_FACE_ID_EYE_LEFTX_MASK;
670
671        if (Objects.equals(newVal, eyeLeftx)) {
672            return;
673        }
674        eyeLeftx = newVal;
675    }
676    /**
677     * Setter method for {@link #eyeLeftx}.<br>
678     * Convenient for those who do not want to deal with Objects for primary types.
679     *
680     * @param newVal the new value to be assigned to eyeLeftx
681     */
682    @JsonIgnore
683    public void setEyeLeftx(int newVal)
684    {
685        setEyeLeftx(new Integer(newVal));
686    }
687    /**
688     * Determines if the eyeLeftx has been modified.
689     *
690     * @return true if the field has been modified, false if the field has not been modified
691     */
692    public boolean checkEyeLeftxModified()
693    {
694        return 0 !=  (modified & FD_FACE_ID_EYE_LEFTX_MASK);
695    }
696
697    /**
698     * Determines if the eyeLeftx has been initialized.<br>
699     *
700     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
701     *
702     * @return true if the field has been initialized, false otherwise
703     */
704    public boolean checkEyeLeftxInitialized()
705    {
706        return 0 !=  (initialized & FD_FACE_ID_EYE_LEFTX_MASK);
707    }
708    /**
709     * Getter method for {@link #eyeLefty}.<br>
710     * Meta Data Information (in progress):
711     * <ul>
712     * <li>full name: fd_face.eye_lefty</li>
713     * <li>column size: 10</li>
714     * <li>JDBC type returned by the driver: Types.INTEGER</li>
715     * </ul>
716     *
717     * @return the value of eyeLefty
718     */
719    @ThriftField(value=12)
720    @JsonProperty("eyeLefty")
721    public Integer getEyeLefty(){
722        return eyeLefty;
723    }
724    /**
725     * Setter method for {@link #eyeLefty}.<br>
726     * The new value is set only if equals() says it is different,
727     * or if one of either the new value or the current value is null.
728     * In case the new value is different, it is set and the field is marked as 'modified'.
729     *
730     * @param newVal the new value to be assigned to eyeLefty
731     */
732    @ThriftField(name="eyeLefty")
733    @JsonProperty("eyeLefty")
734    public void setEyeLefty(Integer newVal)
735    {
736        modified |= FD_FACE_ID_EYE_LEFTY_MASK;
737        initialized |= FD_FACE_ID_EYE_LEFTY_MASK;
738
739        if (Objects.equals(newVal, eyeLefty)) {
740            return;
741        }
742        eyeLefty = newVal;
743    }
744    /**
745     * Setter method for {@link #eyeLefty}.<br>
746     * Convenient for those who do not want to deal with Objects for primary types.
747     *
748     * @param newVal the new value to be assigned to eyeLefty
749     */
750    @JsonIgnore
751    public void setEyeLefty(int newVal)
752    {
753        setEyeLefty(new Integer(newVal));
754    }
755    /**
756     * Determines if the eyeLefty has been modified.
757     *
758     * @return true if the field has been modified, false if the field has not been modified
759     */
760    public boolean checkEyeLeftyModified()
761    {
762        return 0 !=  (modified & FD_FACE_ID_EYE_LEFTY_MASK);
763    }
764
765    /**
766     * Determines if the eyeLefty has been initialized.<br>
767     *
768     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
769     *
770     * @return true if the field has been initialized, false otherwise
771     */
772    public boolean checkEyeLeftyInitialized()
773    {
774        return 0 !=  (initialized & FD_FACE_ID_EYE_LEFTY_MASK);
775    }
776    /**
777     * Getter method for {@link #eyeRightx}.<br>
778     * Meta Data Information (in progress):
779     * <ul>
780     * <li>full name: fd_face.eye_rightx</li>
781     * <li>column size: 10</li>
782     * <li>JDBC type returned by the driver: Types.INTEGER</li>
783     * </ul>
784     *
785     * @return the value of eyeRightx
786     */
787    @ThriftField(value=13)
788    @JsonProperty("eyeRightx")
789    public Integer getEyeRightx(){
790        return eyeRightx;
791    }
792    /**
793     * Setter method for {@link #eyeRightx}.<br>
794     * The new value is set only if equals() says it is different,
795     * or if one of either the new value or the current value is null.
796     * In case the new value is different, it is set and the field is marked as 'modified'.
797     *
798     * @param newVal the new value to be assigned to eyeRightx
799     */
800    @ThriftField(name="eyeRightx")
801    @JsonProperty("eyeRightx")
802    public void setEyeRightx(Integer newVal)
803    {
804        modified |= FD_FACE_ID_EYE_RIGHTX_MASK;
805        initialized |= FD_FACE_ID_EYE_RIGHTX_MASK;
806
807        if (Objects.equals(newVal, eyeRightx)) {
808            return;
809        }
810        eyeRightx = newVal;
811    }
812    /**
813     * Setter method for {@link #eyeRightx}.<br>
814     * Convenient for those who do not want to deal with Objects for primary types.
815     *
816     * @param newVal the new value to be assigned to eyeRightx
817     */
818    @JsonIgnore
819    public void setEyeRightx(int newVal)
820    {
821        setEyeRightx(new Integer(newVal));
822    }
823    /**
824     * Determines if the eyeRightx has been modified.
825     *
826     * @return true if the field has been modified, false if the field has not been modified
827     */
828    public boolean checkEyeRightxModified()
829    {
830        return 0 !=  (modified & FD_FACE_ID_EYE_RIGHTX_MASK);
831    }
832
833    /**
834     * Determines if the eyeRightx has been initialized.<br>
835     *
836     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
837     *
838     * @return true if the field has been initialized, false otherwise
839     */
840    public boolean checkEyeRightxInitialized()
841    {
842        return 0 !=  (initialized & FD_FACE_ID_EYE_RIGHTX_MASK);
843    }
844    /**
845     * Getter method for {@link #eyeRighty}.<br>
846     * Meta Data Information (in progress):
847     * <ul>
848     * <li>full name: fd_face.eye_righty</li>
849     * <li>column size: 10</li>
850     * <li>JDBC type returned by the driver: Types.INTEGER</li>
851     * </ul>
852     *
853     * @return the value of eyeRighty
854     */
855    @ThriftField(value=14)
856    @JsonProperty("eyeRighty")
857    public Integer getEyeRighty(){
858        return eyeRighty;
859    }
860    /**
861     * Setter method for {@link #eyeRighty}.<br>
862     * The new value is set only if equals() says it is different,
863     * or if one of either the new value or the current value is null.
864     * In case the new value is different, it is set and the field is marked as 'modified'.
865     *
866     * @param newVal the new value to be assigned to eyeRighty
867     */
868    @ThriftField(name="eyeRighty")
869    @JsonProperty("eyeRighty")
870    public void setEyeRighty(Integer newVal)
871    {
872        modified |= FD_FACE_ID_EYE_RIGHTY_MASK;
873        initialized |= FD_FACE_ID_EYE_RIGHTY_MASK;
874
875        if (Objects.equals(newVal, eyeRighty)) {
876            return;
877        }
878        eyeRighty = newVal;
879    }
880    /**
881     * Setter method for {@link #eyeRighty}.<br>
882     * Convenient for those who do not want to deal with Objects for primary types.
883     *
884     * @param newVal the new value to be assigned to eyeRighty
885     */
886    @JsonIgnore
887    public void setEyeRighty(int newVal)
888    {
889        setEyeRighty(new Integer(newVal));
890    }
891    /**
892     * Determines if the eyeRighty has been modified.
893     *
894     * @return true if the field has been modified, false if the field has not been modified
895     */
896    public boolean checkEyeRightyModified()
897    {
898        return 0 !=  (modified & FD_FACE_ID_EYE_RIGHTY_MASK);
899    }
900
901    /**
902     * Determines if the eyeRighty has been initialized.<br>
903     *
904     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
905     *
906     * @return true if the field has been initialized, false otherwise
907     */
908    public boolean checkEyeRightyInitialized()
909    {
910        return 0 !=  (initialized & FD_FACE_ID_EYE_RIGHTY_MASK);
911    }
912    /**
913     * Getter method for {@link #mouthX}.<br>
914     * Meta Data Information (in progress):
915     * <ul>
916     * <li>full name: fd_face.mouth_x</li>
917     * <li>column size: 10</li>
918     * <li>JDBC type returned by the driver: Types.INTEGER</li>
919     * </ul>
920     *
921     * @return the value of mouthX
922     */
923    @ThriftField(value=15)
924    @JsonProperty("mouthX")
925    public Integer getMouthX(){
926        return mouthX;
927    }
928    /**
929     * Setter method for {@link #mouthX}.<br>
930     * The new value is set only if equals() says it is different,
931     * or if one of either the new value or the current value is null.
932     * In case the new value is different, it is set and the field is marked as 'modified'.
933     *
934     * @param newVal the new value to be assigned to mouthX
935     */
936    @ThriftField(name="mouthX")
937    @JsonProperty("mouthX")
938    public void setMouthX(Integer newVal)
939    {
940        modified |= FD_FACE_ID_MOUTH_X_MASK;
941        initialized |= FD_FACE_ID_MOUTH_X_MASK;
942
943        if (Objects.equals(newVal, mouthX)) {
944            return;
945        }
946        mouthX = newVal;
947    }
948    /**
949     * Setter method for {@link #mouthX}.<br>
950     * Convenient for those who do not want to deal with Objects for primary types.
951     *
952     * @param newVal the new value to be assigned to mouthX
953     */
954    @JsonIgnore
955    public void setMouthX(int newVal)
956    {
957        setMouthX(new Integer(newVal));
958    }
959    /**
960     * Determines if the mouthX has been modified.
961     *
962     * @return true if the field has been modified, false if the field has not been modified
963     */
964    public boolean checkMouthXModified()
965    {
966        return 0 !=  (modified & FD_FACE_ID_MOUTH_X_MASK);
967    }
968
969    /**
970     * Determines if the mouthX has been initialized.<br>
971     *
972     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
973     *
974     * @return true if the field has been initialized, false otherwise
975     */
976    public boolean checkMouthXInitialized()
977    {
978        return 0 !=  (initialized & FD_FACE_ID_MOUTH_X_MASK);
979    }
980    /**
981     * Getter method for {@link #mouthY}.<br>
982     * Meta Data Information (in progress):
983     * <ul>
984     * <li>full name: fd_face.mouth_y</li>
985     * <li>column size: 10</li>
986     * <li>JDBC type returned by the driver: Types.INTEGER</li>
987     * </ul>
988     *
989     * @return the value of mouthY
990     */
991    @ThriftField(value=16)
992    @JsonProperty("mouthY")
993    public Integer getMouthY(){
994        return mouthY;
995    }
996    /**
997     * Setter method for {@link #mouthY}.<br>
998     * The new value is set only if equals() says it is different,
999     * or if one of either the new value or the current value is null.
1000     * In case the new value is different, it is set and the field is marked as 'modified'.
1001     *
1002     * @param newVal the new value to be assigned to mouthY
1003     */
1004    @ThriftField(name="mouthY")
1005    @JsonProperty("mouthY")
1006    public void setMouthY(Integer newVal)
1007    {
1008        modified |= FD_FACE_ID_MOUTH_Y_MASK;
1009        initialized |= FD_FACE_ID_MOUTH_Y_MASK;
1010
1011        if (Objects.equals(newVal, mouthY)) {
1012            return;
1013        }
1014        mouthY = newVal;
1015    }
1016    /**
1017     * Setter method for {@link #mouthY}.<br>
1018     * Convenient for those who do not want to deal with Objects for primary types.
1019     *
1020     * @param newVal the new value to be assigned to mouthY
1021     */
1022    @JsonIgnore
1023    public void setMouthY(int newVal)
1024    {
1025        setMouthY(new Integer(newVal));
1026    }
1027    /**
1028     * Determines if the mouthY has been modified.
1029     *
1030     * @return true if the field has been modified, false if the field has not been modified
1031     */
1032    public boolean checkMouthYModified()
1033    {
1034        return 0 !=  (modified & FD_FACE_ID_MOUTH_Y_MASK);
1035    }
1036
1037    /**
1038     * Determines if the mouthY has been initialized.<br>
1039     *
1040     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1041     *
1042     * @return true if the field has been initialized, false otherwise
1043     */
1044    public boolean checkMouthYInitialized()
1045    {
1046        return 0 !=  (initialized & FD_FACE_ID_MOUTH_Y_MASK);
1047    }
1048    /**
1049     * Getter method for {@link #noseX}.<br>
1050     * Meta Data Information (in progress):
1051     * <ul>
1052     * <li>full name: fd_face.nose_x</li>
1053     * <li>column size: 10</li>
1054     * <li>JDBC type returned by the driver: Types.INTEGER</li>
1055     * </ul>
1056     *
1057     * @return the value of noseX
1058     */
1059    @ThriftField(value=17)
1060    @JsonProperty("noseX")
1061    public Integer getNoseX(){
1062        return noseX;
1063    }
1064    /**
1065     * Setter method for {@link #noseX}.<br>
1066     * The new value is set only if equals() says it is different,
1067     * or if one of either the new value or the current value is null.
1068     * In case the new value is different, it is set and the field is marked as 'modified'.
1069     *
1070     * @param newVal the new value to be assigned to noseX
1071     */
1072    @ThriftField(name="noseX")
1073    @JsonProperty("noseX")
1074    public void setNoseX(Integer newVal)
1075    {
1076        modified |= FD_FACE_ID_NOSE_X_MASK;
1077        initialized |= FD_FACE_ID_NOSE_X_MASK;
1078
1079        if (Objects.equals(newVal, noseX)) {
1080            return;
1081        }
1082        noseX = newVal;
1083    }
1084    /**
1085     * Setter method for {@link #noseX}.<br>
1086     * Convenient for those who do not want to deal with Objects for primary types.
1087     *
1088     * @param newVal the new value to be assigned to noseX
1089     */
1090    @JsonIgnore
1091    public void setNoseX(int newVal)
1092    {
1093        setNoseX(new Integer(newVal));
1094    }
1095    /**
1096     * Determines if the noseX has been modified.
1097     *
1098     * @return true if the field has been modified, false if the field has not been modified
1099     */
1100    public boolean checkNoseXModified()
1101    {
1102        return 0 !=  (modified & FD_FACE_ID_NOSE_X_MASK);
1103    }
1104
1105    /**
1106     * Determines if the noseX has been initialized.<br>
1107     *
1108     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1109     *
1110     * @return true if the field has been initialized, false otherwise
1111     */
1112    public boolean checkNoseXInitialized()
1113    {
1114        return 0 !=  (initialized & FD_FACE_ID_NOSE_X_MASK);
1115    }
1116    /**
1117     * Getter method for {@link #noseY}.<br>
1118     * Meta Data Information (in progress):
1119     * <ul>
1120     * <li>full name: fd_face.nose_y</li>
1121     * <li>column size: 10</li>
1122     * <li>JDBC type returned by the driver: Types.INTEGER</li>
1123     * </ul>
1124     *
1125     * @return the value of noseY
1126     */
1127    @ThriftField(value=18)
1128    @JsonProperty("noseY")
1129    public Integer getNoseY(){
1130        return noseY;
1131    }
1132    /**
1133     * Setter method for {@link #noseY}.<br>
1134     * The new value is set only if equals() says it is different,
1135     * or if one of either the new value or the current value is null.
1136     * In case the new value is different, it is set and the field is marked as 'modified'.
1137     *
1138     * @param newVal the new value to be assigned to noseY
1139     */
1140    @ThriftField(name="noseY")
1141    @JsonProperty("noseY")
1142    public void setNoseY(Integer newVal)
1143    {
1144        modified |= FD_FACE_ID_NOSE_Y_MASK;
1145        initialized |= FD_FACE_ID_NOSE_Y_MASK;
1146
1147        if (Objects.equals(newVal, noseY)) {
1148            return;
1149        }
1150        noseY = newVal;
1151    }
1152    /**
1153     * Setter method for {@link #noseY}.<br>
1154     * Convenient for those who do not want to deal with Objects for primary types.
1155     *
1156     * @param newVal the new value to be assigned to noseY
1157     */
1158    @JsonIgnore
1159    public void setNoseY(int newVal)
1160    {
1161        setNoseY(new Integer(newVal));
1162    }
1163    /**
1164     * Determines if the noseY has been modified.
1165     *
1166     * @return true if the field has been modified, false if the field has not been modified
1167     */
1168    public boolean checkNoseYModified()
1169    {
1170        return 0 !=  (modified & FD_FACE_ID_NOSE_Y_MASK);
1171    }
1172
1173    /**
1174     * Determines if the noseY has been initialized.<br>
1175     *
1176     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1177     *
1178     * @return true if the field has been initialized, false otherwise
1179     */
1180    public boolean checkNoseYInitialized()
1181    {
1182        return 0 !=  (initialized & FD_FACE_ID_NOSE_Y_MASK);
1183    }
1184    /**
1185     * Getter method for {@link #angleYaw}.<br>
1186     * Meta Data Information (in progress):
1187     * <ul>
1188     * <li>full name: fd_face.angle_yaw</li>
1189     * <li>column size: 10</li>
1190     * <li>JDBC type returned by the driver: Types.INTEGER</li>
1191     * </ul>
1192     *
1193     * @return the value of angleYaw
1194     */
1195    @ThriftField(value=19)
1196    @JsonProperty("angleYaw")
1197    public Integer getAngleYaw(){
1198        return angleYaw;
1199    }
1200    /**
1201     * Setter method for {@link #angleYaw}.<br>
1202     * The new value is set only if equals() says it is different,
1203     * or if one of either the new value or the current value is null.
1204     * In case the new value is different, it is set and the field is marked as 'modified'.
1205     *
1206     * @param newVal the new value to be assigned to angleYaw
1207     */
1208    @ThriftField(name="angleYaw")
1209    @JsonProperty("angleYaw")
1210    public void setAngleYaw(Integer newVal)
1211    {
1212        modified |= FD_FACE_ID_ANGLE_YAW_MASK;
1213        initialized |= FD_FACE_ID_ANGLE_YAW_MASK;
1214
1215        if (Objects.equals(newVal, angleYaw)) {
1216            return;
1217        }
1218        angleYaw = newVal;
1219    }
1220    /**
1221     * Setter method for {@link #angleYaw}.<br>
1222     * Convenient for those who do not want to deal with Objects for primary types.
1223     *
1224     * @param newVal the new value to be assigned to angleYaw
1225     */
1226    @JsonIgnore
1227    public void setAngleYaw(int newVal)
1228    {
1229        setAngleYaw(new Integer(newVal));
1230    }
1231    /**
1232     * Determines if the angleYaw has been modified.
1233     *
1234     * @return true if the field has been modified, false if the field has not been modified
1235     */
1236    public boolean checkAngleYawModified()
1237    {
1238        return 0 !=  (modified & FD_FACE_ID_ANGLE_YAW_MASK);
1239    }
1240
1241    /**
1242     * Determines if the angleYaw has been initialized.<br>
1243     *
1244     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1245     *
1246     * @return true if the field has been initialized, false otherwise
1247     */
1248    public boolean checkAngleYawInitialized()
1249    {
1250        return 0 !=  (initialized & FD_FACE_ID_ANGLE_YAW_MASK);
1251    }
1252    /**
1253     * Getter method for {@link #anglePitch}.<br>
1254     * Meta Data Information (in progress):
1255     * <ul>
1256     * <li>full name: fd_face.angle_pitch</li>
1257     * <li>column size: 10</li>
1258     * <li>JDBC type returned by the driver: Types.INTEGER</li>
1259     * </ul>
1260     *
1261     * @return the value of anglePitch
1262     */
1263    @ThriftField(value=20)
1264    @JsonProperty("anglePitch")
1265    public Integer getAnglePitch(){
1266        return anglePitch;
1267    }
1268    /**
1269     * Setter method for {@link #anglePitch}.<br>
1270     * The new value is set only if equals() says it is different,
1271     * or if one of either the new value or the current value is null.
1272     * In case the new value is different, it is set and the field is marked as 'modified'.
1273     *
1274     * @param newVal the new value to be assigned to anglePitch
1275     */
1276    @ThriftField(name="anglePitch")
1277    @JsonProperty("anglePitch")
1278    public void setAnglePitch(Integer newVal)
1279    {
1280        modified |= FD_FACE_ID_ANGLE_PITCH_MASK;
1281        initialized |= FD_FACE_ID_ANGLE_PITCH_MASK;
1282
1283        if (Objects.equals(newVal, anglePitch)) {
1284            return;
1285        }
1286        anglePitch = newVal;
1287    }
1288    /**
1289     * Setter method for {@link #anglePitch}.<br>
1290     * Convenient for those who do not want to deal with Objects for primary types.
1291     *
1292     * @param newVal the new value to be assigned to anglePitch
1293     */
1294    @JsonIgnore
1295    public void setAnglePitch(int newVal)
1296    {
1297        setAnglePitch(new Integer(newVal));
1298    }
1299    /**
1300     * Determines if the anglePitch has been modified.
1301     *
1302     * @return true if the field has been modified, false if the field has not been modified
1303     */
1304    public boolean checkAnglePitchModified()
1305    {
1306        return 0 !=  (modified & FD_FACE_ID_ANGLE_PITCH_MASK);
1307    }
1308
1309    /**
1310     * Determines if the anglePitch has been initialized.<br>
1311     *
1312     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1313     *
1314     * @return true if the field has been initialized, false otherwise
1315     */
1316    public boolean checkAnglePitchInitialized()
1317    {
1318        return 0 !=  (initialized & FD_FACE_ID_ANGLE_PITCH_MASK);
1319    }
1320    /**
1321     * Getter method for {@link #angleRoll}.<br>
1322     * Meta Data Information (in progress):
1323     * <ul>
1324     * <li>full name: fd_face.angle_roll</li>
1325     * <li>column size: 10</li>
1326     * <li>JDBC type returned by the driver: Types.INTEGER</li>
1327     * </ul>
1328     *
1329     * @return the value of angleRoll
1330     */
1331    @ThriftField(value=21)
1332    @JsonProperty("angleRoll")
1333    public Integer getAngleRoll(){
1334        return angleRoll;
1335    }
1336    /**
1337     * Setter method for {@link #angleRoll}.<br>
1338     * The new value is set only if equals() says it is different,
1339     * or if one of either the new value or the current value is null.
1340     * In case the new value is different, it is set and the field is marked as 'modified'.
1341     *
1342     * @param newVal the new value to be assigned to angleRoll
1343     */
1344    @ThriftField(name="angleRoll")
1345    @JsonProperty("angleRoll")
1346    public void setAngleRoll(Integer newVal)
1347    {
1348        modified |= FD_FACE_ID_ANGLE_ROLL_MASK;
1349        initialized |= FD_FACE_ID_ANGLE_ROLL_MASK;
1350
1351        if (Objects.equals(newVal, angleRoll)) {
1352            return;
1353        }
1354        angleRoll = newVal;
1355    }
1356    /**
1357     * Setter method for {@link #angleRoll}.<br>
1358     * Convenient for those who do not want to deal with Objects for primary types.
1359     *
1360     * @param newVal the new value to be assigned to angleRoll
1361     */
1362    @JsonIgnore
1363    public void setAngleRoll(int newVal)
1364    {
1365        setAngleRoll(new Integer(newVal));
1366    }
1367    /**
1368     * Determines if the angleRoll has been modified.
1369     *
1370     * @return true if the field has been modified, false if the field has not been modified
1371     */
1372    public boolean checkAngleRollModified()
1373    {
1374        return 0 !=  (modified & FD_FACE_ID_ANGLE_ROLL_MASK);
1375    }
1376
1377    /**
1378     * Determines if the angleRoll has been initialized.<br>
1379     *
1380     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1381     *
1382     * @return true if the field has been initialized, false otherwise
1383     */
1384    public boolean checkAngleRollInitialized()
1385    {
1386        return 0 !=  (initialized & FD_FACE_ID_ANGLE_ROLL_MASK);
1387    }
1388    /**
1389     * Getter method for {@link #angleConfidence}.<br>
1390     * Meta Data Information (in progress):
1391     * <ul>
1392     * <li>full name: fd_face.angle_confidence</li>
1393     * <li>column size: 12</li>
1394     * <li>JDBC type returned by the driver: Types.REAL</li>
1395     * </ul>
1396     *
1397     * @return the value of angleConfidence
1398     */
1399    @JsonIgnore
1400    public Float getAngleConfidence(){
1401        return angleConfidence;
1402    }
1403    /** 
1404     * use Double to represent Float type for thrift:swift support 
1405     * @see #getAngleConfidence()
1406     */
1407    @ThriftField(value=22,name="angleConfidence")
1408    @JsonProperty("angleConfidence")
1409    public Double readAngleConfidence(){
1410        return null == angleConfidence ? null:angleConfidence.doubleValue();
1411    }
1412    /**
1413     * Setter method for {@link #angleConfidence}.<br>
1414     * The new value is set only if equals() says it is different,
1415     * or if one of either the new value or the current value is null.
1416     * In case the new value is different, it is set and the field is marked as 'modified'.
1417     *
1418     * @param newVal the new value to be assigned to angleConfidence
1419     */
1420    @JsonIgnore
1421    public void setAngleConfidence(Float newVal)
1422    {
1423        modified |= FD_FACE_ID_ANGLE_CONFIDENCE_MASK;
1424        initialized |= FD_FACE_ID_ANGLE_CONFIDENCE_MASK;
1425
1426        if (Objects.equals(newVal, angleConfidence)) {
1427            return;
1428        }
1429        angleConfidence = newVal;
1430    }
1431    /** 
1432     * setter for thrift:swift OR jackson support<br>
1433     * without modification for {@link #modified} and {@link #initialized}<br>
1434     * <b>NOTE:</b>DO NOT use the method in your code
1435     */
1436    @ThriftField(name="angleConfidence")
1437    @JsonProperty("angleConfidence")
1438    public void writeAngleConfidence(Double newVal){
1439        angleConfidence = null == newVal?null:newVal.floatValue();
1440    }
1441    /**
1442     * Setter method for {@link #angleConfidence}.<br>
1443     * Convenient for those who do not want to deal with Objects for primary types.
1444     *
1445     * @param newVal the new value to be assigned to angleConfidence
1446     */
1447    @JsonIgnore
1448    public void setAngleConfidence(float newVal)
1449    {
1450        setAngleConfidence(new Float(newVal));
1451    }
1452    /**
1453     * Determines if the angleConfidence has been modified.
1454     *
1455     * @return true if the field has been modified, false if the field has not been modified
1456     */
1457    public boolean checkAngleConfidenceModified()
1458    {
1459        return 0 !=  (modified & FD_FACE_ID_ANGLE_CONFIDENCE_MASK);
1460    }
1461
1462    /**
1463     * Determines if the angleConfidence has been initialized.<br>
1464     *
1465     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1466     *
1467     * @return true if the field has been initialized, false otherwise
1468     */
1469    public boolean checkAngleConfidenceInitialized()
1470    {
1471        return 0 !=  (initialized & FD_FACE_ID_ANGLE_CONFIDENCE_MASK);
1472    }
1473    /**
1474     * Getter method for {@link #extInfo}.<br>
1475     * Meta Data Information (in progress):
1476     * <ul>
1477     * <li>full name: fd_face.ext_info</li>
1478     * <li>comments: 扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析</li>
1479     * <li>column size: 65535</li>
1480     * <li>JDBC type returned by the driver: Types.LONGVARBINARY</li>
1481     * </ul>
1482     *
1483     * @return the value of extInfo
1484     */
1485    @ThriftField(value=23)
1486    @JsonProperty("extInfo")
1487    public java.nio.ByteBuffer getExtInfo(){
1488        return extInfo;
1489    }
1490    /**
1491     * Setter method for {@link #extInfo}.<br>
1492     * The new value is set only if equals() says it is different,
1493     * or if one of either the new value or the current value is null.
1494     * In case the new value is different, it is set and the field is marked as 'modified'.
1495     *
1496     * @param newVal the new value to be assigned to extInfo
1497     */
1498    @ThriftField(name="extInfo")
1499    @JsonProperty("extInfo")
1500    public void setExtInfo(java.nio.ByteBuffer newVal)
1501    {
1502        modified |= FD_FACE_ID_EXT_INFO_MASK;
1503        initialized |= FD_FACE_ID_EXT_INFO_MASK;
1504
1505        if (Objects.equals(newVal, extInfo)) {
1506            return;
1507        }
1508        extInfo = newVal;
1509    }
1510    /**
1511     * Determines if the extInfo has been modified.
1512     *
1513     * @return true if the field has been modified, false if the field has not been modified
1514     */
1515    public boolean checkExtInfoModified()
1516    {
1517        return 0 !=  (modified & FD_FACE_ID_EXT_INFO_MASK);
1518    }
1519
1520    /**
1521     * Determines if the extInfo has been initialized.<br>
1522     *
1523     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1524     *
1525     * @return true if the field has been initialized, false otherwise
1526     */
1527    public boolean checkExtInfoInitialized()
1528    {
1529        return 0 !=  (initialized & FD_FACE_ID_EXT_INFO_MASK);
1530    }
1531    /**
1532     * Getter method for {@link #createTime}.<br>
1533     * Meta Data Information (in progress):
1534     * <ul>
1535     * <li>full name: fd_face.create_time</li>
1536     * <li>default value: 'CURRENT_TIMESTAMP'</li>
1537     * <li>NOT NULL</li>
1538     * <li>column size: 19</li>
1539     * <li>JDBC type returned by the driver: Types.TIMESTAMP</li>
1540     * </ul>
1541     *
1542     * @return the value of createTime
1543     */
1544    @JsonIgnore
1545    public java.util.Date getCreateTime(){
1546        return createTime;
1547    }
1548    /** 
1549     * use Long to represent date type for thrift:swift support 
1550     * @see #getCreateTime()
1551     */
1552    @ThriftField(value=24,name="createTime")
1553    @JsonProperty("createTime")
1554    public Long readCreateTime(){
1555        return null == createTime ? null:createTime.getTime();
1556    }
1557    /**
1558     * Setter method for {@link #createTime}.<br>
1559     * The new value is set only if equals() says it is different,
1560     * or if one of either the new value or the current value is null.
1561     * In case the new value is different, it is set and the field is marked as 'modified'.
1562     *
1563     * @param newVal the new value( NOT NULL) to be assigned to createTime
1564     */
1565    @JsonIgnore
1566    public void setCreateTime(java.util.Date newVal)
1567    {
1568        modified |= FD_FACE_ID_CREATE_TIME_MASK;
1569        initialized |= FD_FACE_ID_CREATE_TIME_MASK;
1570
1571        if (Objects.equals(newVal, createTime)) {
1572            return;
1573        }
1574        createTime = newVal;
1575    }
1576    /** 
1577     * setter for thrift:swift OR jackson support<br>
1578     * without modification for {@link #modified} and {@link #initialized}<br>
1579     * <b>NOTE:</b>DO NOT use the method in your code
1580     */
1581    @ThriftField(name="createTime")
1582    @JsonProperty("createTime")
1583    public void writeCreateTime(Long newVal){
1584        createTime = null == newVal?null:new java.util.Date(newVal);
1585    }
1586    /**
1587     * Setter method for {@link #createTime}.<br>
1588     * Convenient for those who do not want to deal with Objects for primary types.
1589     *
1590     * @param newVal the new value to be assigned to createTime
1591     */
1592    @JsonIgnore
1593    public void setCreateTime(long newVal)
1594    {
1595        setCreateTime(new java.util.Date(newVal));
1596    }
1597    /**
1598     * Setter method for {@link #createTime}.<br>
1599     * @param newVal the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
1600     */
1601    @JsonIgnore
1602    public void setCreateTime(Long newVal)
1603    {
1604        setCreateTime(null == newVal ? null : new java.util.Date(newVal));
1605    }
1606    /**
1607     * Determines if the createTime has been modified.
1608     *
1609     * @return true if the field has been modified, false if the field has not been modified
1610     */
1611    public boolean checkCreateTimeModified()
1612    {
1613        return 0 !=  (modified & FD_FACE_ID_CREATE_TIME_MASK);
1614    }
1615
1616    /**
1617     * Determines if the createTime has been initialized.<br>
1618     *
1619     * It is useful to determine if a field is null on purpose or just because it has not been initialized.
1620     *
1621     * @return true if the field has been initialized, false otherwise
1622     */
1623    public boolean checkCreateTimeInitialized()
1624    {
1625        return 0 !=  (initialized & FD_FACE_ID_CREATE_TIME_MASK);
1626    }
1627
1628    @Override
1629    public boolean beModified()
1630    {
1631        return 0 != modified;
1632    }
1633  
1634    @Override
1635    public boolean isModified(int columnID){
1636        return columnID>=0 && columnID < metaData.columnCount && 0 !=  (modified & (1 << columnID));
1637    }
1638
1639    @Override
1640    public boolean isInitialized(int columnID){
1641        return columnID>=0 && columnID < metaData.columnCount && 0 !=  (initialized & (1 << columnID));
1642    }
1643    
1644    @Override
1645    public void resetIsModified()
1646    {
1647        modified = 0;
1648    }
1649
1650    @Override
1651    public void resetPrimaryKeysModified()
1652    {
1653        modified &= (~(FD_FACE_ID_ID_MASK));
1654    }
1655    /**
1656     * Resets columns modification status except primary keys to 'not modified'.
1657     */
1658    public void resetModifiedExceptPrimaryKeys()
1659    {
1660        modified &= (~(FD_FACE_ID_IMAGE_MD5_MASK |
1661            FD_FACE_ID_FEATURE_MD5_MASK |
1662            FD_FACE_ID_FACE_LEFT_MASK |
1663            FD_FACE_ID_FACE_TOP_MASK |
1664            FD_FACE_ID_FACE_WIDTH_MASK |
1665            FD_FACE_ID_FACE_HEIGHT_MASK |
1666            FD_FACE_ID_EYE_LEFTX_MASK |
1667            FD_FACE_ID_EYE_LEFTY_MASK |
1668            FD_FACE_ID_EYE_RIGHTX_MASK |
1669            FD_FACE_ID_EYE_RIGHTY_MASK |
1670            FD_FACE_ID_MOUTH_X_MASK |
1671            FD_FACE_ID_MOUTH_Y_MASK |
1672            FD_FACE_ID_NOSE_X_MASK |
1673            FD_FACE_ID_NOSE_Y_MASK |
1674            FD_FACE_ID_ANGLE_YAW_MASK |
1675            FD_FACE_ID_ANGLE_PITCH_MASK |
1676            FD_FACE_ID_ANGLE_ROLL_MASK |
1677            FD_FACE_ID_ANGLE_CONFIDENCE_MASK |
1678            FD_FACE_ID_EXT_INFO_MASK |
1679            FD_FACE_ID_CREATE_TIME_MASK));
1680    }
1681
1682    /** reset all fields to initial value, equal to a new bean */
1683    public void reset(){
1684        this.id = null;
1685        this.imageMd5 = null;
1686        this.featureMd5 = null;
1687        this.faceLeft = null;
1688        this.faceTop = null;
1689        this.faceWidth = null;
1690        this.faceHeight = null;
1691        this.eyeLeftx = null;
1692        this.eyeLefty = null;
1693        this.eyeRightx = null;
1694        this.eyeRighty = null;
1695        this.mouthX = null;
1696        this.mouthY = null;
1697        this.noseX = null;
1698        this.noseY = null;
1699        this.angleYaw = null;
1700        this.anglePitch = null;
1701        this.angleRoll = null;
1702        this.angleConfidence = null;
1703        this.extInfo = null;
1704        /* DEFAULT:'CURRENT_TIMESTAMP'*/
1705        this.createTime = null;
1706        this.isNew = true;
1707        this.modified = 0;
1708        this.initialized = 0;
1709    }
1710
1711    @Override
1712    public FaceBean clone(){
1713        return (FaceBean) super.clone();
1714    }
1715
1716
1717    public static final Builder builder(){
1718        return new Builder().reset();
1719    }
1720    /** 
1721     * a builder for FaceBean,the template instance is thread local variable
1722     * a instance of Builder can be reused.
1723     */
1724    public static final class Builder{
1725        /** FaceBean instance used for template to create new FaceBean instance. */
1726        static final ThreadLocal<FaceBean> TEMPLATE = new ThreadLocal<FaceBean>(){
1727            @Override
1728            protected FaceBean initialValue() {
1729                return new FaceBean();
1730            }};
1731        private Builder() {}
1732        /** 
1733         * reset the bean as template 
1734         * @see FaceBean#reset()
1735         */
1736        public Builder reset(){
1737            TEMPLATE.get().reset();
1738            return this;
1739        }
1740        /** set a bean as template,must not be {@code null} */
1741        public Builder template(FaceBean bean){
1742            if(null == bean){
1743                throw new NullPointerException();
1744            }
1745            TEMPLATE.set(bean);
1746            return this;
1747        }
1748        /** return a clone instance of {@link #TEMPLATE}*/
1749        public FaceBean build(){
1750            return TEMPLATE.get().clone();
1751        }
1752        /** 
1753         * fill the field : fd_face.id
1754         * @param id 主键
1755         * @see FaceBean#getId()
1756         * @see FaceBean#setId(Integer)
1757         */
1758        public Builder id(Integer id){
1759            TEMPLATE.get().setId(id);
1760            return this;
1761        }
1762        /** 
1763         * fill the field : fd_face.image_md5
1764         * @param imageMd5 外键,所属图像id
1765         * @see FaceBean#getImageMd5()
1766         * @see FaceBean#setImageMd5(String)
1767         */
1768        public Builder imageMd5(String imageMd5){
1769            TEMPLATE.get().setImageMd5(imageMd5);
1770            return this;
1771        }
1772        /** 
1773         * fill the field : fd_face.feature_md5
1774         * @param featureMd5 外键,人脸特征数据MD5 id
1775         * @see FaceBean#getFeatureMd5()
1776         * @see FaceBean#setFeatureMd5(String)
1777         */
1778        public Builder featureMd5(String featureMd5){
1779            TEMPLATE.get().setFeatureMd5(featureMd5);
1780            return this;
1781        }
1782        /** 
1783         * fill the field : fd_face.face_left
1784         * @param faceLeft 
1785         * @see FaceBean#getFaceLeft()
1786         * @see FaceBean#setFaceLeft(Integer)
1787         */
1788        public Builder faceLeft(Integer faceLeft){
1789            TEMPLATE.get().setFaceLeft(faceLeft);
1790            return this;
1791        }
1792        /** 
1793         * fill the field : fd_face.face_top
1794         * @param faceTop 
1795         * @see FaceBean#getFaceTop()
1796         * @see FaceBean#setFaceTop(Integer)
1797         */
1798        public Builder faceTop(Integer faceTop){
1799            TEMPLATE.get().setFaceTop(faceTop);
1800            return this;
1801        }
1802        /** 
1803         * fill the field : fd_face.face_width
1804         * @param faceWidth 
1805         * @see FaceBean#getFaceWidth()
1806         * @see FaceBean#setFaceWidth(Integer)
1807         */
1808        public Builder faceWidth(Integer faceWidth){
1809            TEMPLATE.get().setFaceWidth(faceWidth);
1810            return this;
1811        }
1812        /** 
1813         * fill the field : fd_face.face_height
1814         * @param faceHeight 
1815         * @see FaceBean#getFaceHeight()
1816         * @see FaceBean#setFaceHeight(Integer)
1817         */
1818        public Builder faceHeight(Integer faceHeight){
1819            TEMPLATE.get().setFaceHeight(faceHeight);
1820            return this;
1821        }
1822        /** 
1823         * fill the field : fd_face.eye_leftx
1824         * @param eyeLeftx 
1825         * @see FaceBean#getEyeLeftx()
1826         * @see FaceBean#setEyeLeftx(Integer)
1827         */
1828        public Builder eyeLeftx(Integer eyeLeftx){
1829            TEMPLATE.get().setEyeLeftx(eyeLeftx);
1830            return this;
1831        }
1832        /** 
1833         * fill the field : fd_face.eye_lefty
1834         * @param eyeLefty 
1835         * @see FaceBean#getEyeLefty()
1836         * @see FaceBean#setEyeLefty(Integer)
1837         */
1838        public Builder eyeLefty(Integer eyeLefty){
1839            TEMPLATE.get().setEyeLefty(eyeLefty);
1840            return this;
1841        }
1842        /** 
1843         * fill the field : fd_face.eye_rightx
1844         * @param eyeRightx 
1845         * @see FaceBean#getEyeRightx()
1846         * @see FaceBean#setEyeRightx(Integer)
1847         */
1848        public Builder eyeRightx(Integer eyeRightx){
1849            TEMPLATE.get().setEyeRightx(eyeRightx);
1850            return this;
1851        }
1852        /** 
1853         * fill the field : fd_face.eye_righty
1854         * @param eyeRighty 
1855         * @see FaceBean#getEyeRighty()
1856         * @see FaceBean#setEyeRighty(Integer)
1857         */
1858        public Builder eyeRighty(Integer eyeRighty){
1859            TEMPLATE.get().setEyeRighty(eyeRighty);
1860            return this;
1861        }
1862        /** 
1863         * fill the field : fd_face.mouth_x
1864         * @param mouthX 
1865         * @see FaceBean#getMouthX()
1866         * @see FaceBean#setMouthX(Integer)
1867         */
1868        public Builder mouthX(Integer mouthX){
1869            TEMPLATE.get().setMouthX(mouthX);
1870            return this;
1871        }
1872        /** 
1873         * fill the field : fd_face.mouth_y
1874         * @param mouthY 
1875         * @see FaceBean#getMouthY()
1876         * @see FaceBean#setMouthY(Integer)
1877         */
1878        public Builder mouthY(Integer mouthY){
1879            TEMPLATE.get().setMouthY(mouthY);
1880            return this;
1881        }
1882        /** 
1883         * fill the field : fd_face.nose_x
1884         * @param noseX 
1885         * @see FaceBean#getNoseX()
1886         * @see FaceBean#setNoseX(Integer)
1887         */
1888        public Builder noseX(Integer noseX){
1889            TEMPLATE.get().setNoseX(noseX);
1890            return this;
1891        }
1892        /** 
1893         * fill the field : fd_face.nose_y
1894         * @param noseY 
1895         * @see FaceBean#getNoseY()
1896         * @see FaceBean#setNoseY(Integer)
1897         */
1898        public Builder noseY(Integer noseY){
1899            TEMPLATE.get().setNoseY(noseY);
1900            return this;
1901        }
1902        /** 
1903         * fill the field : fd_face.angle_yaw
1904         * @param angleYaw 
1905         * @see FaceBean#getAngleYaw()
1906         * @see FaceBean#setAngleYaw(Integer)
1907         */
1908        public Builder angleYaw(Integer angleYaw){
1909            TEMPLATE.get().setAngleYaw(angleYaw);
1910            return this;
1911        }
1912        /** 
1913         * fill the field : fd_face.angle_pitch
1914         * @param anglePitch 
1915         * @see FaceBean#getAnglePitch()
1916         * @see FaceBean#setAnglePitch(Integer)
1917         */
1918        public Builder anglePitch(Integer anglePitch){
1919            TEMPLATE.get().setAnglePitch(anglePitch);
1920            return this;
1921        }
1922        /** 
1923         * fill the field : fd_face.angle_roll
1924         * @param angleRoll 
1925         * @see FaceBean#getAngleRoll()
1926         * @see FaceBean#setAngleRoll(Integer)
1927         */
1928        public Builder angleRoll(Integer angleRoll){
1929            TEMPLATE.get().setAngleRoll(angleRoll);
1930            return this;
1931        }
1932        /** 
1933         * fill the field : fd_face.angle_confidence
1934         * @param angleConfidence 
1935         * @see FaceBean#getAngleConfidence()
1936         * @see FaceBean#setAngleConfidence(Float)
1937         */
1938        public Builder angleConfidence(Float angleConfidence){
1939            TEMPLATE.get().setAngleConfidence(angleConfidence);
1940            return this;
1941        }
1942        /** 
1943         * fill the field : fd_face.ext_info
1944         * @param extInfo 扩展字段,保存人脸检测基本信息之外的其他数据,内容由SDK负责解析
1945         * @see FaceBean#getExtInfo()
1946         * @see FaceBean#setExtInfo(java.nio.ByteBuffer)
1947         */
1948        public Builder extInfo(java.nio.ByteBuffer extInfo){
1949            TEMPLATE.get().setExtInfo(extInfo);
1950            return this;
1951        }
1952        /** 
1953         * fill the field : fd_face.create_time
1954         * @param createTime 
1955         * @see FaceBean#getCreateTime()
1956         * @see FaceBean#setCreateTime(java.util.Date)
1957         */
1958        public Builder createTime(java.util.Date createTime){
1959            TEMPLATE.get().setCreateTime(createTime);
1960            return this;
1961        }
1962    }
1963}