2           !" # $ % &' () &* (+, - ./01  23 4 5 67 89 :; :<= :> :? &@ iA &B :C D EF /-G 1 8H :I 1JKL 7M 1B 6N OP 8QR =- SNT 6U 6V WX 8YZ[ G \ G]^ _ G`a bc Ode G-f ig hi bj bk Sc 6c lm nopqrst .uvw bxyz{ SU|}~ ic i  i G i   @- COLUMN_NAMEI ConstantValue COLUMN_SIZE DATA_TYPEORDINAL_POSITIONNULLABLE  ALTER_TABLELjava/lang/String;CHANGEADD DROP_COLUMN SEMICOLONSPACE()VCodeLineNumberTableLocalVariableTablethisLfr/c3t/sql/schema/SchemaUtil;getTableB(Ljava/sql/Connection;Ljava/lang/String;)Lfr/c3t/sql/schema/Table; connectionLjava/sql/Connection; tableNamefieldsLjava/util/List;indexes primaryKeyLfr/c3t/sql/schema/PrimaryKey;LocalVariableTypeTable+Ljava/util/List;+Ljava/util/List; StackMapTable Exceptions getTables'(Ljava/sql/Connection;)Ljava/util/List;tableLfr/c3t/sql/schema/Table;i$Ljava/util/Iterator;tables+Ljava/util/List; SignatureB(Ljava/sql/Connection;)Ljava/util/List; getFields9(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/List;T(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/List;getColumnNamesM(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/List; getFieldMap8(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/Map;namefieldLfr/c3t/sql/schema/Field;Ljava/util/Map;databaseMetaDataLjava/sql/DatabaseMetaData;position resultSetLjava/sql/ResultSet;;"yye(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/Map; columnExists<(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;)Z columnName getIndexesindexLfr/c3t/sql/schema/Index; notUniqueZkeyNameindexMapLjava/util/HashMap;@Ljava/util/HashMap;GK"T(Ljava/sql/Connection;Ljava/lang/String;)Ljava/util/List; getPrimaryKeyG(Ljava/sql/Connection;Ljava/lang/String;)Lfr/c3t/sql/schema/PrimaryKey;eLjava/sql/SQLException;TgetIndexColumnscolumnsresult$Ljava/util/List; getTableNamestypes[Ljava/lang/String;;(Ljava/sql/Connection;)Ljava/util/List; tableExists*(Ljava/sql/Connection;Ljava/lang/String;)ZgetTableStructure;(Ljava/sql/Connection;Ljava/lang/String;)Ljava/lang/String; tablenameLjava/lang/StringBuilder;buildDropTable-(Lfr/c3t/sql/schema/Table;)Ljava/lang/String;buildAlterTableAddB(Ljava/sql/Connection;Lfr/c3t/sql/schema/Field;)Ljava/lang/String;databaseSpecific&Lfr/c3t/sql/specific/DatabaseSpecific;querybuildCreateIndexQueriesrequest[buildCreateIndexQueryF(Lfr/c3t/sql/schema/Table;Lfr/c3t/sql/schema/Index;)Ljava/lang/String;buildCreateTableQueryB(Ljava/sql/Connection;Lfr/c3t/sql/schema/Table;)Ljava/lang/String;firstbuildFieldDeclaration[(Lfr/c3t/sql/schema/Field;Lfr/c3t/sql/specific/DatabaseSpecific;Ljava/lang/StringBuilder;)VbuildAlterTableDrop-(Lfr/c3t/sql/schema/Field;)Ljava/lang/String;buildAlterTableModifybuildAlterTableChangeT(Ljava/sql/Connection;Ljava/lang/String;Lfr/c3t/sql/schema/Field;)Ljava/lang/String; oldFieldName databaseName SourceFileSchemaUtil.java fr/c3t/sql/schema/DefaultTable java/util/LinkedList    java/lang/String    java/util/ArrayList "java/lang/IllegalArgumentExceptionconnection cannot be null  "tableName cannot be null nor emptyjava/util/LinkedHashMap    %   fr/c3t/sql/schema/DefaultField       java/lang/NullPointerExceptionjava/util/HashMap   fr/c3t/sql/schema/Indexfr/c3t/sql/schema/DefaultIndex    #fr/c3t/sql/schema/DefaultPrimaryKeyjava/sql/SQLException   TABLE java/lang/StringBuilder     DROP TABLE    ALTER TABLE    ;   ; CREATE UNIQUE INDEX  ON  (, ) CREATE TABLE fr/c3t/sql/schema/Field, , CONSTRAINT PK_ PRIMARY KEY ( );  (    NOT NULL DROP COLUMN  mysql8alter table change is only supported for mysql database.fr/c3t/sql/schema/SchemaUtiljava/lang/Objectjava/util/Listjava/util/Iteratorjava/sql/Connection java/util/Mapjava/sql/DatabaseMetaDatajava/sql/ResultSetjava/lang/Throwablefr/c3t/sql/schema/PrimaryKeyfr/c3t/sql/schema/Tablejava/lang/Exception$fr/c3t/sql/specific/DatabaseSpecificS(Ljava/lang/String;Ljava/util/List;Lfr/c3t/sql/schema/PrimaryKey;Ljava/util/List;)Viterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;add(Ljava/lang/Object;)Zvalues()Ljava/util/Collection;(Ljava/util/Collection;)VkeySet()Ljava/util/Set;(Ljava/lang/String;)Vfr/c3t/util/StringsisEmpty(Ljava/lang/String;)Z getMetaData()Ljava/sql/DatabaseMetaData;indexOf(I)I substring(II)Ljava/lang/String;(I)Ljava/lang/String; getColumns^(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet; getStringgetShort(I)SgetInt(Ljava/lang/String;III)V setNullable(Z)Vput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;close java/util/SetequalsIgnoreCase getIndexInfoN(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Ljava/sql/ResultSet; getBoolean(I)Zget&(Ljava/lang/Object;)Ljava/lang/Object;((Ljava/lang/String;ZLjava/lang/String;)V addFieldNamefr/c3t/sql/SqlUtil(Ljava/lang/Object;)VgetPrimaryKeysL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet; getFieldNames()Ljava/util/List;isUniquesize()I_(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;getNamegetDatabaseSpecific=(Ljava/sql/Connection;)Lfr/c3t/sql/specific/DatabaseSpecific;()Lfr/c3t/sql/schema/Table; ()Lfr/c3t/sql/schema/PrimaryKey; listToString6(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String; getSqlTypegetType getColumnSize(I)Ljava/lang/StringBuilder; isNullablegetModifyKeywordgetDatabaseName1 Q}UyWS3* <=  **+*+M*+N*+:Y+,-JK NOPR4**  @ ?Y L* M, %, N*-: +W+\]%^,_1`:b=c4,%+?7 7'@ FY*+q@ FY*+u@ u * Y+ YYM*N+.6- + +`!+"#:$Y%:&Y'((): (*,+W,:,,bJ'.6blvRvI$'.6bx ' 'KI @ 4*+-N- - :,.$-24$ "444 @  * /Y0+ YY M1Y2N:*:+3:$s46%: %:H-56:  /7Y8: , W- 9W  :; : ; ,2f'/2:HR\grzf : \cgXrM:'/2'/ (P  G @ * /Y0+ YMN*:+<N-$/-%:-%:, =Y>M,?-;:M-; :-;,#kr@#k}rv}}}^!#+6?HRV`hkortvz}RH R+@t!g#e%) FJ@ _M*+ N- J- 6:A:B)$C,,CCM,!*WZ]>*0!9 P__]*0] I@ ,g* /Y0YDSLY M*N-+E:$,%W,:,,3OYY[Y2 $%'( )'*3,=-O1V2Y1e34gO G'@34  G$I @ 3+-* M, , N+-.78$9,:1>*$  33 @ 2*+M,FGYHN-*,IJKJW-,LJW-MJK L OP$Q-R*22,  CGYHNJ*OJMV  C*PMGYQRSJ+TOJSJUJSJN+,-V-WJW-MZ[1]7^>_*CC>1@ gGYHL*XM*Y N- A- 6:,,Z,Z[.+*\J]JW+Mcde/hOjbm4/0Gg_X3 b+AM,^FGY_R+B`FJaJ+[JbJ*OJcJ,deJfJMyz{~ bb[ ["V ̻GYgR+OJcJM*PN6+h : / i: ,jJW6,kJW-,V+X:Sl^DZ Z +O:,mJJnJldeJfJW,oJW,M> CHORYck\ C-6% ka--!/E&@   W,*pJSJ+*qrJW*q ,sJ*tufJW*v ,wJW,xJW*?HOV WWW?   g=GYQRSJ*TOJSJyJSJ*pJWJM =@  E*PMGYQRSJ+TOJSJ,zJSJN+,-V-WJM5;*EE@5@ r*PNGYQRSJ,TOJSJ:-{:|.}JSJ+JW @Y~SJW,-VWJM& (0:NX`g>rrrm(J0BN @