private Set<String> getChildOfferings(OfferingEntity offering) { Set<String> childs = Sets.newTreeSet(); if (offering.hasChildren()) { for (OfferingEntity child : offering.getChildren()) { childs.add(child.getIdentifier()); childs.addAll(getChildOfferings(child)); } } return childs; }
public void updateParentOfferings(Set<String> parentOfferings, OfferingEntity hOffering, Session session) { for (String identifier : parentOfferings) { OfferingEntity offering = getOfferingForIdentifier(identifier, session); if (!offering.getChildren().contains(hOffering)) { offering.addChild(hOffering); session.saveOrUpdate(offering); session.flush(); session.refresh(offering); } } }
private void updateSeries(DatasetEntity dataset, String observationType, Session session) { FormatEntity obsType = new FormatDAO().getFormatEntityObject(observationType, session); dataset.setObservationType(obsType); session.saveOrUpdate(dataset); // update hidden child observation constellations // TODO should hidden child observation constellations be restricted to // the parent observation type? Set<String> offerings = dataset.getOffering().getChildren().stream().map(o -> o.getIdentifier()).collect(Collectors.toSet()); if (CollectionHelper.isNotEmpty(offerings)) { Criteria c = session.createCriteria(getSeriesClass()) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .add(Restrictions.eq(DatasetEntity.PROPERTY_PHENOMENON, dataset.getObservableProperty())) .add(Restrictions.eq( DatasetEntity.PROPERTY_PROCEDURE, dataset.getProcedure())) .add(Restrictions.eq(DatasetEntity.HIDDEN_CHILD, true)); c.createCriteria( DatasetEntity.PROPERTY_OFFERING).add(Restrictions.in(OfferingEntity.IDENTIFIER, offerings)); LOGGER.debug("QUERY updateSeries(observationConstellation, observationType): {}", HibernateHelper.getSqlString(c)); List<DatasetEntity> hiddenChildObsConsts = c.list(); for (DatasetEntity hiddenChildObsConst : hiddenChildObsConsts) { hiddenChildObsConst.setObservationType(obsType); session.saveOrUpdate(hiddenChildObsConst); } } }
private void updateSeries(DatasetEntity dataset, String observationType, Session session) { FormatEntity obsType = new FormatDAO().getFormatEntityObject(observationType, session); dataset.setObservationType(obsType); session.saveOrUpdate(dataset); // update hidden child observation constellations // TODO should hidden child observation constellations be restricted to // the parent observation type? Set<String> offerings = dataset.getOffering().getChildren().stream().map(o -> o.getIdentifier()).collect(Collectors.toSet()); if (CollectionHelper.isNotEmpty(offerings)) { Criteria c = session.createCriteria(getSeriesClass()) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .add(Restrictions.eq(DatasetEntity.PROPERTY_PHENOMENON, dataset.getObservableProperty())) .add(Restrictions.eq( DatasetEntity.PROPERTY_PROCEDURE, dataset.getProcedure())) .add(Restrictions.eq(DatasetEntity.HIDDEN_CHILD, true)); c.createCriteria( DatasetEntity.PROPERTY_OFFERING).add(Restrictions.in(OfferingEntity.IDENTIFIER, offerings)); LOGGER.debug("QUERY updateSeries(observationConstellation, observationType): {}", HibernateHelper.getSqlString(c)); List<DatasetEntity> hiddenChildObsConsts = c.list(); for (DatasetEntity hiddenChildObsConst : hiddenChildObsConsts) { hiddenChildObsConst.setObservationType(obsType); session.saveOrUpdate(hiddenChildObsConst); } } }