code: public TypeSpec.Builder buildDaoFactoryInterfaceInternal(Elements elementUtils, Filer filer, SQLiteDatabaseSchema schema) throws Exception {
  		String schemaName = buildDaoFactoryName(schema);
  
  		classBuilder = TypeSpec.interfaceBuilder(schemaName).addModifiers(Modifier.PUBLIC).addSuperinterface(BindDaoFactory.class);
  
  		classBuilder.addJavadoc("<p>\n");
  		classBuilder.addJavadoc("Represents dao factory interface for $L.\n", schema.getName());
  		classBuilder.addJavadoc("This class expose database interface through Dao attribute.\n", schema.getName());
  		classBuilder.addJavadoc("</p>\n\n");
  
  		JavadocUtility.generateJavadocGeneratedBy(classBuilder);
  		classBuilder.addJavadoc("@see $T\n", TypeUtility.typeName(schema.getElement()));
  
  		for (SQLiteDaoDefinition dao : schema.getCollection()) {
  			TypeName daoName = BindDaoBuilder.daoInterfaceTypeName(dao);
  			TypeName daoImplName = BindDaoBuilder.daoTypeName(dao);
  
  			classBuilder.addJavadoc("@see $T\n", daoName);
  			classBuilder.addJavadoc("@see $T\n", daoImplName);
  
  			String entity = BindDataSourceSubProcessor.generateEntityName(dao, dao.getEntity());
  
  			classBuilder.addJavadoc("@see $T\n", TypeUtility.typeName(entity));
  		}
  
  		for (SQLiteDaoDefinition dao : schema.getCollection()) {
  			TypeName daoImplName = BindDaoBuilder.daoTypeName(dao);
  
  			// dao with external connections
  			{
  				MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder("get" + dao.getName())
  						.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT).addJavadoc("Retrieve dao $L.\n\n@return dao implementation\n", dao.getName())
  						.returns(daoImplName);
  				classBuilder.addMethod(methodBuilder.build());
  			}
  		}
  		
  		SchemaUtility.generateTransaction(classBuilder, schema, true);
  
  		return classBuilder;
  	}
docs: Build dao factory interface.
  
  @param elementUtils the element utils
  @param filer the filer
  @param schema the schema
  @return schema typeName
  @throws Exception the exception