Search in sources :

Example 1 with FormatEntity

use of org.n52.series.db.beans.FormatEntity in project SOS by 52North.

the class FormatDAO method getOrInsertFormatEntity.

/**
 * Insert and get procedure description format
 *
 * @param format
 *            Procedure description format
 * @param session
 *            Hibernate session
 * @return Procedure description format object
 */
public FormatEntity getOrInsertFormatEntity(String format, Session session) {
    FormatEntity hFormatEntity = getFormatEntityObject(format, session);
    if (hFormatEntity == null) {
        hFormatEntity = new FormatEntity();
        hFormatEntity.setFormat(format);
        session.save(hFormatEntity);
        session.flush();
    }
    return hFormatEntity;
}
Also used : FormatEntity(org.n52.series.db.beans.FormatEntity)

Example 2 with FormatEntity

use of org.n52.series.db.beans.FormatEntity in project SOS by 52North.

the class FormatDAO method getFormatEntityObjects.

/**
 * Get observation type objects for observation types
 *
 * @param observationTypes
 *            Observation types
 * @param session
 *            Hibernate session
 * @return Observation type objects
 */
@SuppressWarnings("unchecked")
public List<FormatEntity> getFormatEntityObjects(List<String> observationTypes, Session session) {
    Criteria criteria = session.createCriteria(FormatEntity.class).add(Restrictions.in(FormatEntity.FORMAT, observationTypes));
    LOGGER.trace("QUERY getFormatEntityObjects(observationTypes): {}", HibernateHelper.getSqlString(criteria));
    return criteria.list();
}
Also used : FormatEntity(org.n52.series.db.beans.FormatEntity) Criteria(org.hibernate.Criteria)

Example 3 with FormatEntity

use of org.n52.series.db.beans.FormatEntity in project SOS by 52North.

the class FeatureOfInterestDAO method getOrInsert.

/**
 * Insert and/or get featureOfInterest object for identifier
 *
 * @param identifier
 *            FeatureOfInterest identifier
 * @param url
 *            FeatureOfInterest URL, if defined as link
 * @param session
 *            Hibernate session
 * @return FeatureOfInterest object
 */
public AbstractFeatureEntity getOrInsert(String identifier, String url, Session session) {
    AbstractFeatureEntity feature = get(identifier, session);
    if (feature == null) {
        feature = new FeatureEntity();
        feature.setIdentifier(identifier, getDaoFactory().isStaSupportsUrls());
        if (url != null && !url.isEmpty()) {
            feature.setUrl(url);
        }
        FormatEntity type = new FormatDAO().getOrInsertFormatEntity(OGCConstants.UNKNOWN, session);
        feature.setFeatureType(type);
        session.save(feature);
    } else if (feature.getUrl() != null && !feature.getUrl().isEmpty() && url != null && !url.isEmpty()) {
        feature.setUrl(url);
        session.saveOrUpdate(feature);
    }
    // don't flush here because we may be batching
    return feature;
}
Also used : AbstractFeatureEntity(org.n52.series.db.beans.AbstractFeatureEntity) FeatureEntity(org.n52.series.db.beans.FeatureEntity) FormatEntity(org.n52.series.db.beans.FormatEntity) AbstractFeatureEntity(org.n52.series.db.beans.AbstractFeatureEntity)

Example 4 with FormatEntity

use of org.n52.series.db.beans.FormatEntity in project SOS by 52North.

the class HibernateFeatureQueryHandlerTest method create.

public FeatureEntity create(long id, String identifier, Geometry geom, String name, String url, FormatEntity type) throws CodedException {
    FeatureEntity featureOfInterest = new FeatureEntity();
    featureOfInterest.setIdentifier(identifier);
    featureOfInterest.setId(id);
    // featureOfInterest.setNames(name);
    featureOfInterest.setGeometry(geom);
    featureOfInterest.setUrl(url);
    featureOfInterest.setFeatureType(type);
    return featureOfInterest;
}
Also used : FeatureEntity(org.n52.series.db.beans.FeatureEntity)

Example 5 with FormatEntity

use of org.n52.series.db.beans.FormatEntity in project SOS by 52North.

the class HibernateObservationUtilitiesTest method createSubObservationOfSweArrayObservationViaGetObservationById.

@Test
public // present
void createSubObservationOfSweArrayObservationViaGetObservationById() throws OwsExceptionReport, ConnectionProviderException, ConverterException {
    // PREPARE
    Session session = getSession();
    try {
        Transaction transaction = session.beginTransaction();
        GetObservationByIdRequest request = new GetObservationByIdRequest();
        request.setVersion(Sos2Constants.SERVICEVERSION);
        FormatEntity hProcedureDescriptionFormat = new FormatEntity();
        FormatEntity hFeatureOfInterestType = new FormatEntity();
        FeatureEntity hFeatureOfInterest = new FeatureEntity();
        PhenomenonEntity hObservableProperty = new PhenomenonEntity();
        CategoryEntity hCategory = new CategoryEntity();
        PlatformEntity hPlatform = new PlatformEntity();
        FormatEntity hObservationType = new FormatEntity();
        OfferingEntity hOffering = new OfferingEntity();
        DatasetEntity hObservationConstellation = new DatasetEntity();
        CodespaceEntity hCodespace = new CodespaceEntity();
        ProcedureEntity hProcedure = new ProcedureEntity();
        QuantityDataEntity hObservation = new QuantityDataEntity();
        ResultTemplateEntity hResultTemplateEntity = new ResultTemplateEntity();
        hProcedureDescriptionFormat.setFormat(PROCEDURE_DESCRIPTION_FORMAT);
        hCodespace.setName(CODESPACE);
        hProcedure.setIdentifier(PROCEDURE);
        hProcedure.setFormat(hProcedureDescriptionFormat);
        hFeatureOfInterestType.setFormat(FEATURE_OF_INTEREST_TYPE);
        hFeatureOfInterest.setIdentifier(FEATURE);
        hFeatureOfInterest.setFeatureType(hFeatureOfInterestType);
        hFeatureOfInterest.setIdentifierCodespace(hCodespace);
        hPlatform.setIdentifier(FEATURE);
        hObservableProperty.setIdentifier(OBSERVABLE_PROPERTY);
        hCategory.setIdentifier(OBSERVABLE_PROPERTY);
        hObservationType.setFormat(OmConstants.OBS_TYPE_SWE_ARRAY_OBSERVATION);
        hOffering.setIdentifier(OFFERING);
        hObservationConstellation.setProcedure(hProcedure);
        hObservationConstellation.setOffering(hOffering);
        hObservationConstellation.setObservableProperty(hObservableProperty);
        hObservationConstellation.setOmObservationType(hObservationType);
        hObservationConstellation.setFeature(hFeatureOfInterest);
        hObservationConstellation.setDeleted(false);
        hObservationConstellation.setHidden(false);
        hObservationConstellation.setCategory(hCategory);
        hObservationConstellation.setPlatform(hPlatform);
        hResultTemplateEntity.setFeature(hFeatureOfInterest);
        hResultTemplateEntity.setOffering(hOffering);
        hResultTemplateEntity.setPhenomenon(hObservableProperty);
        hResultTemplateEntity.setProcedure(hProcedure);
        hResultTemplateEntity.setIdentifier("test-rt-1");
        hResultTemplateEntity.setEncoding("<swe:TextEncoding xmlns:swe=\"http://www.opengis.net/swe/2.0\" " + "xmlns:sams=\"http://www.opengis.net/samplingSpatial/2.0\" " + "xmlns:sml=\"http://www.opengis.net/sensorML/1.0.1\" " + "xmlns:sf=\"http://www.opengis.net/sampling/2.0\" " + "xmlns:swes=\"http://www.opengis.net/swes/2.0\" " + "xmlns:sos=\"http://www.opengis.net/sos/2.0\" " + "xmlns:gml=\"http://www.opengis.net/gml/3.2\" " + "xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" " + "xmlns:om=\"http://www.opengis.net/om/2.0\" " + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xmlns:xlink=\"http://www.w3.org/1999/xlink\" " + "tokenSeparator=\"#\" blockSeparator=\"@\"/>");
        hResultTemplateEntity.setStructure("\"<swe:DataRecord xmlns:swe=\"http://www.opengis.net/swe/2.0\" " + "xmlns:sams=\"http://www.opengis.net/samplingSpatial/2.0\" " + "xmlns:sml=\"http://www.opengis.net/sensorML/1.0.1\" " + "xmlns:sf=\"http://www.opengis.net/sampling/2.0\" " + "xmlns:swes=\"http://www.opengis.net/swes/2.0\" " + "xmlns:sos=\"http://www.opengis.net/sos/2.0\" " + "xmlns:gml=\"http://www.opengis.net/gml/3.2\" " + "xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" " + "xmlns:om=\"http://www.opengis.net/om/2.0\" " + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n" + "  <swe:field name=\"phenomenonTime\">\r\n" + "    <swe:Time definition=\"http://www.opengis.net/def/property/OGC/0/PhenomenonTime\">\r\n" + "      <swe:uom xlink:href=\"http://www.opengis.net/def/uom/ISO-8601/0/Gregorian\"/>\r\n" + "    </swe:Time>\r\n" + "  </swe:field>\r\n" + "  <swe:field name=\"Discharge\">\r\n" + "    <swe:Quantity definition=\"http://sweet.jpl.nasa.gov/2.0/hydroSurface.owl#Discharge\">\r\n" + "      <swe:uom code=\"m3\"/>\r\n" + "    </swe:Quantity>\r\n" + "  </swe:field>\r\n" + "</swe:DataRecord>\"");
        session.save(hProcedureDescriptionFormat);
        session.save(hProcedure);
        session.save(hCodespace);
        session.save(hOffering);
        session.save(hFeatureOfInterestType);
        session.save(hFeatureOfInterest);
        session.save(hPlatform);
        session.save(hObservableProperty);
        session.save(hCategory);
        session.save(hObservationType);
        session.save(hObservationConstellation);
        session.save(hResultTemplateEntity);
        session.flush();
        hObservation.setValue(BigDecimal.valueOf(1.0));
        hObservation.setSamplingTimeStart(DateTime.now().toDate());
        hObservation.setSamplingTimeEnd(hObservation.getSamplingTimeStart());
        hObservation.setResultTime(hObservation.getSamplingTimeStart());
        hObservation.setDataset(hObservationConstellation);
        hObservation.setStaIdentifier("123");
        hObservation.setDeleted(false);
        session.save(hObservation);
        transaction.commit();
        ArrayList<DataEntity<?>> observationsFromDataBase = new ArrayList<>();
        observationsFromDataBase.add(hObservation);
        SosHelper sosHelper = new SosHelper();
        sosHelper.setServiceURL(URI.create("http://test.org/"));
        DaoFactory daoFactory = new DaoFactory();
        daoFactory.setSosHelper(sosHelper);
        // CALL
        OmObservationCreatorContext ctx = new OmObservationCreatorContext(null, null, daoFactory, new ProfileHanlderMock(), Mockito.mock(AdditionalObservationCreatorRepository.class), null, new FeatureQueryHandlerMock(), null, null, null, null, null, Mockito.mock(BindingRepository.class));
        ObservationStream resultList = HibernateObservationUtilities.createSosObservationsFromObservations(observationsFromDataBase, request, Locale.ENGLISH, null, ctx, session);
        // TEST RESULTS
        assertThat(resultList, is(notNullValue()));
        assertThat(resultList.hasNext(), is(true));
        Object value = resultList.next().getValue().getValue();
        assertThat(resultList.hasNext(), is(false));
        assertThat(value, is(instanceOf(QuantityValue.class)));
        Double val = ((QuantityValue) value).getValue().doubleValue();
        // assertThat(value, is(instanceOf(SweDataArray.class)));
        // Double val = Double.parseDouble(((SweDataArray) value).getValues().get(0).get(1));
        assertThat(val, is(closeTo(1.0, 0.00001)));
    } finally {
        returnSession(session);
    }
}
Also used : CodespaceEntity(org.n52.series.db.beans.CodespaceEntity) ArrayList(java.util.ArrayList) PhenomenonEntity(org.n52.series.db.beans.PhenomenonEntity) DaoFactory(org.n52.sos.ds.hibernate.dao.DaoFactory) AdditionalObservationCreatorRepository(org.n52.sos.ds.hibernate.util.observation.AdditionalObservationCreatorRepository) ProcedureEntity(org.n52.series.db.beans.ProcedureEntity) PlatformEntity(org.n52.series.db.beans.PlatformEntity) QuantityDataEntity(org.n52.series.db.beans.QuantityDataEntity) SosHelper(org.n52.sos.util.SosHelper) GetObservationByIdRequest(org.n52.shetland.ogc.sos.request.GetObservationByIdRequest) CategoryEntity(org.n52.series.db.beans.CategoryEntity) FeatureEntity(org.n52.series.db.beans.FeatureEntity) OmObservationCreatorContext(org.n52.sos.ds.hibernate.util.observation.OmObservationCreatorContext) FormatEntity(org.n52.series.db.beans.FormatEntity) DatasetEntity(org.n52.series.db.beans.DatasetEntity) Transaction(org.hibernate.Transaction) ObservationStream(org.n52.shetland.ogc.om.ObservationStream) BindingRepository(org.n52.iceland.binding.BindingRepository) ResultTemplateEntity(org.n52.series.db.beans.ResultTemplateEntity) DataEntity(org.n52.series.db.beans.DataEntity) QuantityDataEntity(org.n52.series.db.beans.QuantityDataEntity) OfferingEntity(org.n52.series.db.beans.OfferingEntity) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

FormatEntity (org.n52.series.db.beans.FormatEntity)24 Session (org.hibernate.Session)7 OfferingEntity (org.n52.series.db.beans.OfferingEntity)7 ProcedureEntity (org.n52.series.db.beans.ProcedureEntity)7 Transaction (org.hibernate.Transaction)6 Criteria (org.hibernate.Criteria)5 HibernateException (org.hibernate.HibernateException)5 UnitEntity (org.n52.series.db.beans.UnitEntity)5 DatasetEntity (org.n52.series.db.beans.DatasetEntity)4 NoApplicableCodeException (org.n52.shetland.ogc.ows.exception.NoApplicableCodeException)4 DateTime (org.joda.time.DateTime)3 ParseException (org.locationtech.jts.io.ParseException)3 GeoJsonReader (org.locationtech.jts.io.geojson.GeoJsonReader)3 AbstractFeatureEntity (org.n52.series.db.beans.AbstractFeatureEntity)3 CategoryEntity (org.n52.series.db.beans.CategoryEntity)3 FeatureEntity (org.n52.series.db.beans.FeatureEntity)3 PhenomenonEntity (org.n52.series.db.beans.PhenomenonEntity)3 AbstractFeature (org.n52.shetland.ogc.gml.AbstractFeature)3 TimeInstant (org.n52.shetland.ogc.gml.time.TimeInstant)3 HashSet (java.util.HashSet)2