// Path: src/main/java/com/taobao/rigel/rap/auto/generate/bo/GenerateUtils.java
// public enum GeneratorType {EXPORT_FILE}
// 
// Path: src/main/java/com/taobao/rigel/rap/auto/generate/bo/GenerateUtils.java
// public enum TargetObjectType {PROJECT, MODULE, PAGE, ACTION}
// 
// Path: src/main/java/com/taobao/rigel/rap/project/bo/Project.java
// public enum STAGE_TYPE {DESIGNING, DEVELOPING, DEBUGING}


import com.taobao.rigel.rap.auto.generate.bo.GenerateUtils.GeneratorType;
import com.taobao.rigel.rap.auto.generate.bo.GenerateUtils.TargetObjectType;
import com.taobao.rigel.rap.project.bo.Project.STAGE_TYPE;
package com.taobao.rigel.rap.auto.generate.contract;


/**
 * generator interface, all generator class should
 * implement this interface
 *
 * @author Bosn
 */
public interface Generator {

    /**
     * is available on specific stage
     *
     * @param stage
     * @return
     */
    boolean isAvailable(STAGE_TYPE stage);

    /**
     * get generator type
     *
     * @return
     */
    GeneratorType getGeneratorType();

    /**
     * get author
     *
     * @return author
     */
    String getAuthor();

    /**
     * get introduction of generator
     *
     * @return
     */
    String getIntroduction();

    /**
     * get target object type
     *
     * @return
     */
// Path: src/main/java/com/taobao/rigel/rap/auto/generate/bo/GenerateUtils.java
// public enum GeneratorType {EXPORT_FILE}
// 
// Path: src/main/java/com/taobao/rigel/rap/auto/generate/bo/GenerateUtils.java
// public enum TargetObjectType {PROJECT, MODULE, PAGE, ACTION}
// 
// Path: src/main/java/com/taobao/rigel/rap/project/bo/Project.java
// public enum STAGE_TYPE {DESIGNING, DEVELOPING, DEBUGING}


// Path: src/main/java/com/taobao/rigel/rap/auto/generate/contract/Generator.java
import com.taobao.rigel.rap.auto.generate.bo.GenerateUtils.GeneratorType;
import com.taobao.rigel.rap.auto.generate.bo.GenerateUtils.TargetObjectType;
import com.taobao.rigel.rap.project.bo.Project.STAGE_TYPE;

package com.taobao.rigel.rap.auto.generate.contract;


/**
 * generator interface, all generator class should
 * implement this interface
 *
 * @author Bosn
 */
public interface Generator {

    /**
     * is available on specific stage
     *
     * @param stage
     * @return
     */
    boolean isAvailable(STAGE_TYPE stage);

    /**
     * get generator type
     *
     * @return
     */
    GeneratorType getGeneratorType();

    /**
     * get author
     *
     * @return author
     */
    String getAuthor();

    /**
     * get introduction of generator
     *
     * @return
     */
    String getIntroduction();

    /**
     * get target object type
     *
     * @return
     */
    TargetObjectType getTargetObjectType();