argos/dmp-backend/web/src/main/java/eu/eudat/managers/DatasetProfileManager.java

56 lines
3.2 KiB
Java
Raw Normal View History

2017-12-21 10:26:11 +01:00
package eu.eudat.managers;
2018-02-16 08:45:18 +01:00
import eu.eudat.builders.model.models.DataTableDataBuilder;
2018-03-21 11:57:56 +01:00
import eu.eudat.data.dao.entities.DatasetProfileDao;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.models.entities.xmlmodels.datasetprofiledefinition.Field;
2017-12-21 10:26:11 +01:00
import eu.eudat.models.datasetprofile.DatasetProfileAutocompleteItem;
import eu.eudat.models.datasetprofile.DatasetProfileAutocompleteRequest;
2018-01-03 11:44:54 +01:00
import eu.eudat.models.datasetprofile.DatasetProfileListingModel;
import eu.eudat.models.datasetprofile.DatasetProfileTableRequestItem;
2018-01-25 16:24:21 +01:00
import eu.eudat.models.helpers.common.DataTableData;
2017-12-21 10:26:11 +01:00
import eu.eudat.queryable.QueryableList;
2018-02-16 08:45:18 +01:00
import eu.eudat.services.ApiContext;
2018-03-08 11:54:56 +01:00
import eu.eudat.utilities.builders.XmlBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
2017-12-21 10:26:11 +01:00
2018-03-08 11:54:56 +01:00
import javax.xml.xpath.*;
2017-12-21 10:26:11 +01:00
import java.util.List;
2018-02-01 10:08:06 +01:00
2017-12-21 10:26:11 +01:00
public class DatasetProfileManager {
2018-02-16 08:45:18 +01:00
public static List<DatasetProfileAutocompleteItem> getWithCriteria(DatasetProfileDao datasetProfileRepository, DatasetProfileAutocompleteRequest datasetProfileAutocompleteRequest) throws IllegalAccessException, InstantiationException {
2017-12-21 10:26:11 +01:00
QueryableList<DatasetProfile> items = datasetProfileRepository.getWithCriteria(datasetProfileAutocompleteRequest.getCriteria());
2018-02-21 11:07:31 +01:00
List<DatasetProfileAutocompleteItem> datasetProfiles = items.select(item -> new DatasetProfileAutocompleteItem().fromDataModel(item));
2017-12-21 10:26:11 +01:00
return datasetProfiles;
}
2018-01-03 11:44:54 +01:00
2018-02-16 08:45:18 +01:00
public static DataTableData<DatasetProfileListingModel> getPaged(ApiContext apiContext, DatasetProfileTableRequestItem datasetProfileTableRequestItem) throws Exception {
2018-03-05 17:18:45 +01:00
QueryableList<DatasetProfile> items = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(datasetProfileTableRequestItem.getCriteria());
2018-02-16 08:45:18 +01:00
QueryableList<DatasetProfile> pagedItems = PaginationManager.applyPaging(items, datasetProfileTableRequestItem);
2018-02-21 11:07:31 +01:00
List<DatasetProfileListingModel> datasetProfiles = pagedItems.select(item -> new DatasetProfileListingModel().fromDataModel(item));
2018-03-05 17:18:45 +01:00
return apiContext.getOperationsContext().getBuilderFactory().getBuilder(DataTableDataBuilder.class).data(datasetProfiles).totalCount(items.count()).build();
2018-01-03 11:44:54 +01:00
}
2018-02-16 08:45:18 +01:00
public static List<DatasetProfileListingModel> getAll(DatasetProfileDao datasetProfileRepository) throws IllegalAccessException, InstantiationException {
2018-01-03 11:44:54 +01:00
QueryableList<DatasetProfile> items = datasetProfileRepository.getAll();
2018-02-21 11:07:31 +01:00
List<DatasetProfileListingModel> datasetProfiles = items.select(item -> new DatasetProfileListingModel().fromDataModel(item));
2018-01-03 11:44:54 +01:00
return datasetProfiles;
}
2018-03-08 11:54:56 +01:00
2018-03-21 11:57:56 +01:00
public static eu.eudat.models.entities.xmlmodels.datasetprofiledefinition.Field queryForField(String xml, String fieldId) throws XPathExpressionException {
eu.eudat.models.entities.xmlmodels.datasetprofiledefinition.Field field = new Field();
2018-03-08 11:54:56 +01:00
Document document = XmlBuilder.fromXml(xml);
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
XPathExpression expr =
xpath.compile("//field[@id='" + fieldId + "']");
Element name = (Element) expr.evaluate(document, XPathConstants.NODE);
field.fromXml(name);
return field;
}
2017-12-21 10:26:11 +01:00
}