use of org.hisp.dhis.datavalue.DataExportParams in project dhis2-core by dhis2.
the class DataValueSetController method getDataValueSetXml.
// -------------------------------------------------------------------------
// Get
// -------------------------------------------------------------------------
@RequestMapping(method = RequestMethod.GET, produces = CONTENT_TYPE_XML)
public void getDataValueSetXml(@RequestParam(required = false) Set<String> dataSet, @RequestParam(required = false) Set<String> dataElementGroup, @RequestParam(required = false) Set<String> period, @RequestParam(required = false) Date startDate, @RequestParam(required = false) Date endDate, @RequestParam(required = false) Set<String> orgUnit, @RequestParam(required = false) boolean children, @RequestParam(required = false) Set<String> orgUnitGroup, @RequestParam(required = false) Set<String> attributeOptionCombo, @RequestParam(required = false) boolean includeDeleted, @RequestParam(required = false) Date lastUpdated, @RequestParam(required = false) String lastUpdatedDuration, @RequestParam(required = false) Integer limit, IdSchemes idSchemes, HttpServletResponse response) throws IOException {
response.setContentType(CONTENT_TYPE_XML);
DataExportParams params = dataValueSetService.getFromUrl(dataSet, dataElementGroup, period, startDate, endDate, orgUnit, children, orgUnitGroup, attributeOptionCombo, includeDeleted, lastUpdated, lastUpdatedDuration, limit, idSchemes);
dataValueSetService.writeDataValueSetXml(params, response.getOutputStream());
}
use of org.hisp.dhis.datavalue.DataExportParams in project dhis2-core by dhis2.
the class ExportDataValueAction method execute.
// -------------------------------------------------------------------------
// Action implementation
// -------------------------------------------------------------------------
@Override
public String execute() throws Exception {
//TODO re-implement using Web API
IdSchemes idSchemes = new IdSchemes();
idSchemes.setDataElementIdScheme(StringUtils.trimToNull(dataElementIdScheme));
idSchemes.setOrgUnitIdScheme(StringUtils.trimToNull(orgUnitIdScheme));
idSchemes.setCategoryOptionComboIdScheme(StringUtils.trimToNull(categoryOptionComboIdScheme));
Set<String> orgUnits = new HashSet<>(IdentifiableObjectUtils.getUids(selectionTreeManager.getSelectedOrganisationUnits()));
HttpServletResponse response = ServletActionContext.getResponse();
OutputStream out = response.getOutputStream();
DataExportParams params = dataValueSetService.getFromUrl(selectedDataSets, null, null, getMediumDate(startDate), getMediumDate(endDate), orgUnits, true, null, null, false, null, null, null, idSchemes);
boolean isCompression = compression == null || COMPRESSION_ZIP.equals(compression);
if (FORMAT_CSV.equals(exportFormat)) {
ContextUtils.configureResponse(response, CONTENT_TYPE_CSV, true, getFileName(EXTENSION_CSV_ZIP), true);
dataValueSetService.writeDataValueSetCsv(params, new OutputStreamWriter(getZipOut(out, getFileName(EXTENSION_CSV))));
} else if (FORMAT_JSON.equals(exportFormat)) {
ContextUtils.configureResponse(response, CONTENT_TYPE_JSON, true, getFileName(EXTENSION_JSON_ZIP), isCompression);
dataValueSetService.writeDataValueSetJson(params, isCompression ? getZipOut(out, getFileName(EXTENSION_JSON)) : out);
} else {
ContextUtils.configureResponse(response, CONTENT_TYPE_XML, true, getFileName(EXTENSION_XML_ZIP), isCompression);
dataValueSetService.writeDataValueSetXml(params, isCompression ? getZipOut(out, getFileName(EXTENSION_XML)) : out);
}
return SUCCESS;
}
use of org.hisp.dhis.datavalue.DataExportParams in project dhis2-core by dhis2.
the class DataValueSetController method getDataValueSetXmlAdx.
@RequestMapping(method = RequestMethod.GET, produces = CONTENT_TYPE_XML_ADX)
public void getDataValueSetXmlAdx(@RequestParam Set<String> dataSet, @RequestParam(required = false) Set<String> period, @RequestParam(required = false) Date startDate, @RequestParam(required = false) Date endDate, @RequestParam Set<String> orgUnit, @RequestParam(required = false) boolean children, @RequestParam(required = false) boolean includeDeleted, @RequestParam(required = false) Date lastUpdated, @RequestParam(required = false) Integer limit, IdSchemes idSchemes, HttpServletResponse response) throws IOException, AdxException {
response.setContentType(CONTENT_TYPE_XML_ADX);
DataExportParams params = adxDataService.getFromUrl(dataSet, period, startDate, endDate, orgUnit, children, includeDeleted, lastUpdated, limit, idSchemes);
adxDataService.writeDataValueSet(params, response.getOutputStream());
}
use of org.hisp.dhis.datavalue.DataExportParams in project dhis2-core by dhis2.
the class DefaultAdxDataService method getFromUrl.
// -------------------------------------------------------------------------
// Public methods
// -------------------------------------------------------------------------
@Override
public DataExportParams getFromUrl(Set<String> dataSets, Set<String> periods, Date startDate, Date endDate, Set<String> organisationUnits, boolean includeChildren, boolean includeDeleted, Date lastUpdated, Integer limit, IdSchemes outputIdSchemes) {
DataExportParams params = new DataExportParams();
if (dataSets != null) {
params.getDataSets().addAll(identifiableObjectManager.getByCode(DataSet.class, dataSets));
}
if (periods != null && !periods.isEmpty()) {
params.getPeriods().addAll(periodService.reloadIsoPeriods(new ArrayList<>(periods)));
} else if (startDate != null && endDate != null) {
params.setStartDate(startDate);
params.setEndDate(endDate);
}
if (organisationUnits != null) {
params.getOrganisationUnits().addAll(identifiableObjectManager.getByCode(OrganisationUnit.class, organisationUnits));
}
params.setIncludeChildren(includeChildren);
params.setIncludeDeleted(includeDeleted);
params.setLastUpdated(lastUpdated);
params.setLimit(limit);
params.setOutputIdSchemes(outputIdSchemes);
return params;
}
use of org.hisp.dhis.datavalue.DataExportParams in project dhis2-core by dhis2.
the class HibernateDataValueStore method getDeflatedDataValues.
@Override
public List<DeflatedDataValue> getDeflatedDataValues(DataExportParams params) {
SqlHelper sqlHelper = new SqlHelper(true);
boolean joinOrgUnit = params.isOrderByOrgUnitPath() || params.hasOrgUnitLevel() || params.getOuMode() == DESCENDANTS || params.isIncludeDescendants();
String sql = "select dv.dataelementid, dv.periodid, dv.sourceid" + ", dv.categoryoptioncomboid, dv.attributeoptioncomboid, dv.value" + ", dv.storedby, dv.created, dv.lastupdated, dv.comment, dv.followup, dv.deleted" + (joinOrgUnit ? ", ou.path" : "") + " from datavalue dv";
String where = "";
List<DataElementOperand> queryDeos = getQueryDataElementOperands(params);
if (queryDeos != null) {
List<Long> deIdList = queryDeos.stream().map(de -> de.getDataElement().getId()).collect(Collectors.toList());
List<Long> cocIdList = queryDeos.stream().map(de -> de.getCategoryOptionCombo() == null ? null : de.getCategoryOptionCombo().getId()).collect(Collectors.toList());
sql += " join " + statementBuilder.literalLongLongTable(deIdList, cocIdList, "deo", "deid", "cocid") + " on deo.deid = dv.dataelementid and (deo.cocid is null or deo.cocid::bigint = dv.categoryoptioncomboid)";
} else if (params.hasDataElements()) {
String dataElementIdList = getCommaDelimitedString(getIdentifiers(params.getDataElements()));
where += sqlHelper.whereAnd() + "dv.dataelementid in (" + dataElementIdList + ")";
}
if (params.hasPeriods()) {
String periodIdList = getCommaDelimitedString(getIdentifiers(params.getPeriods()));
where += sqlHelper.whereAnd() + "dv.periodid in (" + periodIdList + ")";
} else if (params.hasPeriodTypes() || params.hasStartEndDate() || params.hasIncludedDate()) {
sql += " join period p on p.periodid = dv.periodid";
if (params.hasPeriodTypes()) {
sql += " join periodtype pt on pt.periodtypeid = p.periodtypeid";
String periodTypeIdList = getCommaDelimitedString(params.getPeriodTypes().stream().map(o -> o.getId()).collect(Collectors.toList()));
where += sqlHelper.whereAnd() + "pt.periodtypeid in (" + periodTypeIdList + ")";
}
if (params.hasStartEndDate()) {
where += sqlHelper.whereAnd() + "p.startdate >= '" + DateUtils.getMediumDateString(params.getStartDate()) + "'" + " and p.enddate <= '" + DateUtils.getMediumDateString(params.getStartDate()) + "'";
} else if (params.hasIncludedDate()) {
where += sqlHelper.whereAnd() + "p.startdate <= '" + DateUtils.getMediumDateString(params.getIncludedDate()) + "'" + " and p.enddate >= '" + DateUtils.getMediumDateString(params.getIncludedDate()) + "'";
}
}
if (joinOrgUnit) {
sql += " join organisationunit ou on ou.organisationunitid = dv.sourceid";
}
if (params.hasOrgUnitLevel()) {
where += sqlHelper.whereAnd() + "ou.hierarchylevel " + (params.isIncludeDescendants() ? ">" : "") + "= " + params.getOrgUnitLevel();
}
if (params.hasOrganisationUnits()) {
if (params.getOuMode() == DESCENDANTS) {
where += sqlHelper.whereAnd() + "(";
for (OrganisationUnit parent : params.getOrganisationUnits()) {
where += sqlHelper.or() + "ou.path like '" + parent.getPath() + "%'";
}
where += " )";
} else {
String orgUnitIdList = getCommaDelimitedString(getIdentifiers(params.getOrganisationUnits()));
where += sqlHelper.whereAnd() + "dv.sourceid in (" + orgUnitIdList + ")";
}
}
if (params.hasAttributeOptionCombos()) {
String aocIdList = getCommaDelimitedString(getIdentifiers(params.getAttributeOptionCombos()));
where += sqlHelper.whereAnd() + "dv.attributeoptioncomboid in (" + aocIdList + ")";
}
if (params.hasCogDimensionConstraints() || params.hasCoDimensionConstraints()) {
sql += " join categoryoptioncombos_categoryoptions cc on dv.attributeoptioncomboid = cc.categoryoptioncomboid";
if (params.hasCoDimensionConstraints()) {
String coDimConstraintsList = getCommaDelimitedString(getIdentifiers(params.getCoDimensionConstraints()));
where += sqlHelper.whereAnd() + "cc.categoryoptionid in (" + coDimConstraintsList + ") ";
}
if (params.hasCogDimensionConstraints()) {
String cogDimConstraintsList = getCommaDelimitedString(getIdentifiers(params.getCogDimensionConstraints()));
sql += " join categoryoptiongroupmembers cogm on cc.categoryoptionid = cogm.categoryoptionid";
where += sqlHelper.whereAnd() + "cogm.categoryoptiongroupid in (" + cogDimConstraintsList + ")";
}
}
if (params.hasLastUpdated()) {
where += sqlHelper.whereAnd() + "dv.lastupdated >= " + DateUtils.getMediumDateString(params.getLastUpdated());
}
if (!params.isIncludeDeleted()) {
where += sqlHelper.whereAnd() + "dv.deleted is false";
}
sql += where;
if (params.isOrderByOrgUnitPath()) {
sql += " order by ou.path";
}
SqlRowSet rowSet = jdbcTemplate.queryForRowSet(sql);
List<DeflatedDataValue> result = new ArrayList<>();
while (rowSet.next()) {
Integer dataElementId = rowSet.getInt(1);
Integer periodId = rowSet.getInt(2);
Integer organisationUnitId = rowSet.getInt(3);
Integer categoryOptionComboId = rowSet.getInt(4);
Integer attributeOptionComboId = rowSet.getInt(5);
String value = rowSet.getString(6);
String storedBy = rowSet.getString(7);
Date created = rowSet.getDate(8);
Date lastUpdated = rowSet.getDate(9);
String comment = rowSet.getString(10);
boolean followup = rowSet.getBoolean(11);
boolean deleted = rowSet.getBoolean(12);
String sourcePath = joinOrgUnit ? rowSet.getString(13) : null;
DeflatedDataValue ddv = new DeflatedDataValue(dataElementId, periodId, organisationUnitId, categoryOptionComboId, attributeOptionComboId, value, storedBy, created, lastUpdated, comment, followup, deleted);
ddv.setSourcePath(sourcePath);
if (params.hasBlockingQueue()) {
if (!addToBlockingQueue(params.getBlockingQueue(), ddv)) {
// Abort
return result;
}
} else {
result.add(ddv);
}
}
if (params.hasBlockingQueue()) {
addToBlockingQueue(params.getBlockingQueue(), END_OF_DDV_DATA);
}
log.debug(result.size() + " DeflatedDataValues returned from: " + sql);
return result;
}
Aggregations