/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.nifi.web.dao; import org.apache.nifi.connectable.Connection; import org.apache.nifi.controller.queue.DropFlowFileStatus; import org.apache.nifi.controller.queue.ListFlowFileStatus; import org.apache.nifi.controller.repository.FlowFileRecord; import org.apache.nifi.web.DownloadableContent; import org.apache.nifi.web.api.dto.ConnectionDTO; import java.util.Set; public interface ConnectionDAO { /** * Determines if the specified connection exists. * * @param id id * @return true if connection exists */ boolean hasConnection(String id); /** * Gets the specified Connection. * * @param id The connection id * @return The connection */ Connection getConnection(String id); /** * Gets the specified flow file drop request. * * @param id The id of the connection * @param dropRequestId The drop request id * @return The drop request status */ DropFlowFileStatus getFlowFileDropRequest(String id, String dropRequestId); /** * Gets the specified flowfile listing request. * * @param id connection id * @param listingRequestId The listing request id * @return The listing request status */ ListFlowFileStatus getFlowFileListingRequest(String id, String listingRequestId); /** * Gets the specified flowfile in the specified connection. * * @param id connection id * @param flowFileUuid the flowfile uuid * @return The flowfile */ FlowFileRecord getFlowFile(String id, String flowFileUuid); /** * Gets all of the connections. * * @param groupId group identifier * @return The connections */ Set<Connection> getConnections(String groupId); /** * Creates a new Connection. * * @param groupId The group id * @param connectionDTO The connection DTO * @return The connection */ Connection createConnection(String groupId, ConnectionDTO connectionDTO); /** * Creates a new flow file drop request. * * @param id connection id * @param dropRequestId drop request id * @return The drop request status */ DropFlowFileStatus createFlowFileDropRequest(String id, String dropRequestId); /** * Creates a new flow file listing request. * * @param id connection id * @param listingRequestId listing request id * @return The listing request status */ ListFlowFileStatus createFlowFileListingRequest(String id, String listingRequestId); /** * Verifies the listing can be processed. * * @param id connection id */ void verifyList(String id); /** * Verifies the create request can be processed. * * @param groupId The group id * @param connectionDTO connection */ void verifyCreate(String groupId, ConnectionDTO connectionDTO); /** * Verifies the update request can be processed. * * @param connectionDTO connection */ void verifyUpdate(ConnectionDTO connectionDTO); /** * Updates the specified Connection. * * @param connectionDTO The connection DTO * @return The connection */ Connection updateConnection(ConnectionDTO connectionDTO); /** * Verifies the delete request can be processed. * * @param id id */ void verifyDelete(String id); /** * Deletes the specified Connection. * * @param id The id of the connection */ void deleteConnection(String id); /** * Deletes the specified flow file drop request. * * @param id The id of the connection * @param dropRequestId The drop request id * @return The drop request */ DropFlowFileStatus deleteFlowFileDropRequest(String id, String dropRequestId); /** * Deletes the specified flow file listing request. * * @param id connection id * @param listingRequestId The listing request id * @return The listing request status */ ListFlowFileStatus deleteFlowFileListingRequest(String id, String listingRequestId); /** * Gets the content for the specified flowfile in the specified connection. * * @param id connection id * @param flowfileUuid flowfile uuid * @param requestUri request uri * @return The downloadable content */ DownloadableContent getContent(String id, String flowfileUuid, String requestUri); }