package net.techreadiness.plugin.persistence.report;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import net.techreadiness.persistence.criteriaquery.QueryResult;
import net.techreadiness.persistence.domain.OrgDO;
import net.techreadiness.persistence.domain.ScopeDO;
import net.techreadiness.plugin.service.reports.MinimumRecommendedFlag;
public interface BaseDataRetriever {
String ZERO = "0";
String ZERO_PERCENT = "0%";
String TOTAL_NUMBER_DEVICES = "deviceCount";
String PASSING_DEVICE_COUNT = "devicePassingCount";
String PERCENT_PASSING_DEVICES = "devicePassingPercent";
String PERCENT_TESTABLE_STUDENTS = "testTakerPercentStudentsTestable";
String TIME_REQUIRED_TO_DOWNLAD_TEST = "networkTimeToDownloadTest";
String COMPLETION_STATUS = "completionStatus";
String PERCENT_COMPLETE = "percentComplete";
/**
* Finds number of rows that will be returned for a given report if there were no pagination involved. This is done by
* determining the number of Child Organizations that belong to a parent organization. As all the reports are access thru
* a parent organization, this approach will will.
* @param org Organization to use for the data set.
* @param scope
* the scope
* @return Number of records in the data set.
*/
Integer findTotalCount(OrgDO org, ScopeDO scope);
String formatString(String propertyName, Object value);
Object formatTime(Object value);
/**
* This method will return a Map of snapshot report data for the single org that is passed in. *
*
* <pre>
* <code>
* The returned Map will contain the following key pair values:
*
* orgId - This is the row identifier for the State Level Organization.
* orgName - The name of the State Level Organization.
* orgCode - The code of the State Level Organization
* </code>
* </pre>
* @param snapshotWindowId The snapshot window to retrieve data for.
* @param orgId The organization to retrieve data for.
* @param minimumOrRecommendedFlag Controls the type of data returned for the snapshot.
* @return The Map of data that contains the information about State Device Assessment data.
* @throws SQLException
* the sQL exception
*/
QueryResult<Map<String, String>> getSnapshotReportDataForOrg(Long snapshotWindowId, Long orgId,
MinimumRecommendedFlag minimumOrRecommendedFlag) throws SQLException;
/**
* This method will return a List of Maps of Device Assessment information for the child orgs of the given parent org.
*
* <pre>
* <code>
* The returned Maps will contain the following key pair values:
*
* orgId - This is the row identifier for the State Level Organization.
* orgName - The name of the State Level Organization.
* orgCode - The code of the State Level Organization
* </code>
* </pre>
* @param snapshotWindowId The snapshot window to retrieve data for.
* @param orgId Id of the organization to retrieve data for.
* @param minimumOrRecommendedFlag Determines if Minimum or Recommended snapshot information is returned.
* @param retrieveAll If true paging parameters are ignored.
* @param startingRow Index of the first result to return.
* @param numberOfRows Maximum number of rows to return.
* @return The Map of data that contains the information about Device Assessment data.
* @throws SQLException
* the SQL exception
*/
QueryResult<Map<String, String>> findSnapshotReportDataForChildOrgs(Long snapshotWindowId, Long orgId,
MinimumRecommendedFlag minimumOrRecommendedFlag, boolean retrieveAll, Integer startingRow, Integer numberOfRows)
throws SQLException;
QueryResult<Map<String, String>> findSnapshotReportDataForDescendantOrgs(Long snapshotWindowId, Long orgId,
MinimumRecommendedFlag minimumOrRecommendedFlag, boolean retrieveAll, Integer startingRow, Integer numberOfRows,
Integer orgTreeDistance) throws SQLException;
QueryResult<Map<String, String>> findProgressSnapshotReportDataForChildOrgs(Collection<Long> snapshotWindowIds,
Long orgId, MinimumRecommendedFlag minimumOrRecommendedFlag, boolean retrieveAll, Integer startingRow,
Integer numberOfRows) throws SQLException;
QueryResult<Map<String, String>> findProgressSnapshotReportDataForOrg(Collection<Long> snapshotWindowIds, Long orgId,
MinimumRecommendedFlag minimumOrRecommendedFlag) throws SQLException;
/**
* This method will return a List of Maps that contains the minimum and recommended values for the memory size, monitor
* display size, screen resolution, connection speed, size of test, max time to download a test and if the operating
* system is support.
*
* <pre>
* <code>
* The returned Maps will contain the following key pair values:
*
* operatingSystem - This is the operating system values.
* memoryMinimum - The minimum memory for an operating system, will contain a numeric value or tbd
* recommendedMemory - The recommended memory for an operating system, will contain a numeric value or tbd
* minimumMonitorDisplaySize - Specifies the minimum monitor display size, will contain a numeric value or tbd
* recommendedMonitorDisplaySize - Specifies the recommended monitor display size, will contain a numeric value or tbd
* minimumScreenResolution - Specifies the minimum screen resolution, will contain a numeric value or tbd
* recommendedScreenResolution - Specifies the recommended screen resolution, will contain a numeric value or tbd
* minimumConnectionSpeed - Specifies the minimum connection speed, will contain a numeric value or tbd
* recommendedConnectionSpeed - Specifies the recommended connection speed, will contain a numeric value or tbd
* minimumSizeOfTest - Specifies the minimum size of test, will contain a numeric value or tbd
* recommendedSizeOfTest - Specifies the recommended size of test, will contain a numeric value or tbd
* minimumTimeToDownloadTest - Specifies the minimum time to down load a test, will contain a numeric value or tbd
* recommendedTimeToDownloadTest - Specifies the recommended time to down load a test, will contain a numeric value or tbd
*
* </code>
* </pre>
* @param snapshotWindowId The snapshot window
* @return The Map of data that contains the information about District Level Device Assessment data.
* @throws SQLException
* the sQL exception
*/
List<Map<String, String>> findMinimumRecommendedValues(Long snapshotWindowId) throws SQLException;
/**
* Method to create the snapshot summary rollup information for a particular snapshot window id. This may be either the
* nightly rollup, or an adhoc request (they are treated the same).
*
* @param snapshotWindowId
* The id of the snapshot window to for which to create the rollup data.
* @param fullRefresh If true all data will be re-calculated. If false, only deltas are recalculated.
*/
void createSnapshotRollup(Long snapshotWindowId, boolean fullRefresh);
QueryResult<Map<String, String>> retrieveSchoolExceptions(Long snapshotWindowId, Long orgId, String exceptionTypeCode,
boolean retrieveAllRows, boolean retrieveFullDetails, Integer startingRow, Integer numberOfRows)
throws SQLException;
}