static String getTypesSQL(@NonNull Container container) { StringBuilder builder = new StringBuilder(); Field[] fields = container.getFields(); FieldContainer primary = container.getPrimaryField(); if (primary == null) primary = getPrimaryFieldContainer(container); Field primaryField = null; if (primary != null) primaryField = primary.getField(); if (fields != null && fields.length > 0) { boolean isFirst = true; for (Field f : fields) { Ignore ignore = f.getAnnotation(Ignore.class); if (ignore != null) { LogUtil.d( CouSyncDb.TAG, CouSyncDb.LOG_HEADER + "ignore field=" + f.getName() + " when " + container.getModelName() + "create type column sql"); continue; } if (primaryField != null && f.equals(primaryField)) { LogUtil.d( CouSyncDb.TAG, CouSyncDb.LOG_HEADER + "jump primary key field=" + f.getName() + " when " + container.getModelName() + "create type column sql"); continue; } String typeSql = getTypeString(f); if (TextUtils.isEmpty(typeSql)) continue; if (isFirst) { isFirst = false; } else builder.append(Statement.COMMA); builder.append(typeSql); } } else { throw new NoFieldException(container.getModelName() + " have no field"); } return builder.toString(); }
/** get primary key */ public static String getPrimaryKeySQL(@NonNull Container container) { String primary = null; FieldContainer fieldContainer = container.getPrimaryField(); if (fieldContainer == null) { fieldContainer = getPrimaryFieldContainer(container); container.setPrimaryField(fieldContainer); } if (fieldContainer != null) { primary = getPrimaryString(fieldContainer); } else { // 类中找不到与主键同名field boolean checkPrimaryKey = CouSyncDb.Config.isCheckPrimaryKey(); PrimaryKey primaryKey = container.getPrimaryKey(); // 类上注解设置主键 if ((primaryKey == null || TextUtils.isEmpty(primaryKey.keyName())) && checkPrimaryKey) throw new NoPrimaryKeyException( "the class " + container.getModelName() + " do not set primary key"); else if (primaryKey != null && !TextUtils.isEmpty(primaryKey.keyName())) primary = getPrimaryStringFromClass(primaryKey.keyName(), primaryKey.autoIncrement()); } return primary; }