/** * Copyright © 2016-2017 The Thingsboard Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.thingsboard.server.dao.event; import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.Dao; import org.thingsboard.server.dao.model.EventEntity; import java.util.List; import java.util.Optional; import java.util.UUID; /** * The Interface DeviceDao. * * @param <T> the generic type */ public interface EventDao extends Dao<EventEntity> { /** * Save or update event object * * @param event the event object * @return saved event object */ EventEntity save(Event event); /** * Save event object if it is not yet saved * * @param event the event object * @return saved event object */ Optional<EventEntity> saveIfNotExists(Event event); /** * Find event by tenantId, entityId and eventUid. * * @param tenantId the tenantId * @param entityId the entityId * @param eventType the eventType * @param eventUid the eventUid * @return the event */ EventEntity findEvent(UUID tenantId, EntityId entityId, String eventType, String eventUid); /** * Find events by tenantId, entityId and pageLink. * * @param tenantId the tenantId * @param entityId the entityId * @param pageLink the pageLink * @return the event list */ List<EventEntity> findEvents(UUID tenantId, EntityId entityId, TimePageLink pageLink); /** * Find events by tenantId, entityId, eventType and pageLink. * * @param tenantId the tenantId * @param entityId the entityId * @param eventType the eventType * @param pageLink the pageLink * @return the event list */ List<EventEntity> findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink); }