// Path: src/main/java/org/rapid7/nexpose/api/APISession.java
// public enum APISupportedVersion
// {
//    V1_0("1.0"), V1_1("1.1"), V1_2("1.2");
//    private String m_version;
// 
//    APISupportedVersion(String value)
//    {
//       m_version = value;
//    }
//    String getVersion()
//    {
//       return m_version;
//    }
// }
// 
// Path: src/main/java/org/rapid7/nexpose/api/generators/IContentGenerator.java
// public interface IContentGenerator
// {
//    /**
//     * Knows how to generate content for a request.
//     * @return the generated content
//     */
//    String toString();
//    /**
//     * Sets the contents of the generator that come as a parameter
//     */
//    void setContents(Element contents);
// }


import org.rapid7.nexpose.api.APISession.APISupportedVersion;
import org.rapid7.nexpose.api.generators.IContentGenerator;
import org.rapid7.nexpose.api.generators.ReportTemplateIDGenerator;
                           String format,
                           String owner,
                           String timezone,
                           String description,
                           IContentGenerator filtersGenerator,
                           IContentGenerator baselineGenerator,
                           IContentGenerator generateGenerator,
                           IContentGenerator deliveryGenerator,
                           IContentGenerator dbExportGenerator)
  {
    super(sessionID, syncID);
    ReportTemplateIDGenerator templateIDGenerator = new ReportTemplateIDGenerator(templateID);
    set("generate-now",generateNow);
    set("id", reportID);
    set("name", name);

    // Special case - must not be empty string, so have to use a generator.
    set("templateIDGenerator", templateIDGenerator);

    set("format", format);
    set("owner", owner);
    set("timezone", timezone);
    set("description", description);

    set("filtersGenerator", filtersGenerator);
    set("baselineGenerator", baselineGenerator); // Not currently implemented
    set("generateGenerator", generateGenerator); // Not currently implemented
    set("deliveryGenerator", deliveryGenerator); // Partial implementation - only supports store on server in DB
    set("dbExportGenerator", dbExportGenerator);

// Path: src/main/java/org/rapid7/nexpose/api/APISession.java
// public enum APISupportedVersion
// {
//    V1_0("1.0"), V1_1("1.1"), V1_2("1.2");
//    private String m_version;
// 
//    APISupportedVersion(String value)
//    {
//       m_version = value;
//    }
//    String getVersion()
//    {
//       return m_version;
//    }
// }
// 
// Path: src/main/java/org/rapid7/nexpose/api/generators/IContentGenerator.java
// public interface IContentGenerator
// {
//    /**
//     * Knows how to generate content for a request.
//     * @return the generated content
//     */
//    String toString();
//    /**
//     * Sets the contents of the generator that come as a parameter
//     */
//    void setContents(Element contents);
// }


// Path: src/main/java/org/rapid7/nexpose/api/ReportSaveRequest.java
import org.rapid7.nexpose.api.APISession.APISupportedVersion;
import org.rapid7.nexpose.api.generators.IContentGenerator;
import org.rapid7.nexpose.api.generators.ReportTemplateIDGenerator;

                           String format,
                           String owner,
                           String timezone,
                           String description,
                           IContentGenerator filtersGenerator,
                           IContentGenerator baselineGenerator,
                           IContentGenerator generateGenerator,
                           IContentGenerator deliveryGenerator,
                           IContentGenerator dbExportGenerator)
  {
    super(sessionID, syncID);
    ReportTemplateIDGenerator templateIDGenerator = new ReportTemplateIDGenerator(templateID);
    set("generate-now",generateNow);
    set("id", reportID);
    set("name", name);

    // Special case - must not be empty string, so have to use a generator.
    set("templateIDGenerator", templateIDGenerator);

    set("format", format);
    set("owner", owner);
    set("timezone", timezone);
    set("description", description);

    set("filtersGenerator", filtersGenerator);
    set("baselineGenerator", baselineGenerator); // Not currently implemented
    set("generateGenerator", generateGenerator); // Not currently implemented
    set("deliveryGenerator", deliveryGenerator); // Partial implementation - only supports store on server in DB
    set("dbExportGenerator", dbExportGenerator);

    m_firstSupportedVersion = APISupportedVersion.V1_0;