You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2015/01/16 03:29:47 UTC
[30/51] [partial] incubator-nifi git commit: Reworked overall
directory structure to make releasing nifi vs maven plugis easier
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java
deleted file mode 100644
index 4b89655..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java
+++ /dev/null
@@ -1,1056 +0,0 @@
-/*
- * 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.admin.dao.impl;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.nifi.action.Action;
-import org.apache.nifi.action.Component;
-import org.apache.nifi.action.Operation;
-import org.apache.nifi.action.component.details.ComponentDetails;
-import org.apache.nifi.action.component.details.ProcessorDetails;
-import org.apache.nifi.action.component.details.RemoteProcessGroupDetails;
-import org.apache.nifi.action.details.ActionDetails;
-import org.apache.nifi.action.details.ConfigureDetails;
-import org.apache.nifi.action.details.ConnectDetails;
-import org.apache.nifi.action.details.MoveDetails;
-import org.apache.nifi.action.details.PurgeDetails;
-import org.apache.nifi.admin.RepositoryUtils;
-import org.apache.nifi.admin.dao.ActionDAO;
-import org.apache.nifi.admin.dao.DataAccessException;
-import org.apache.nifi.history.History;
-import org.apache.nifi.history.HistoryQuery;
-import org.apache.nifi.history.PreviousValue;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- *
- */
-public class StandardActionDAO implements ActionDAO {
-
- // ------------
- // action table
- // ------------
- private static final String INSERT_ACTION = "INSERT INTO ACTION ("
- + "USER_DN, USER_NAME, SOURCE_ID, SOURCE_NAME, SOURCE_TYPE, OPERATION, ACTION_TIMESTAMP"
- + ") VALUES ("
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + ")";
-
- // -----------------
- // component details
- // -----------------
- private static final String INSERT_PROCESSOR_DETAILS = "INSERT INTO PROCESSOR_DETAILS ("
- + "ACTION_ID, TYPE"
- + ") VALUES ("
- + "?, "
- + "?"
- + ")";
-
- private static final String INSERT_REMOTE_PROCESS_GROUP_DETAILS = "INSERT INTO REMOTE_PROCESS_GROUP_DETAILS ("
- + "ACTION_ID, URI"
- + ") VALUES ("
- + "?, "
- + "?"
- + ")";
-
- // --------------
- // action details
- // --------------
- private static final String INSERT_CONFIGURE_DETAILS = "INSERT INTO CONFIGURE_DETAILS ("
- + "ACTION_ID, NAME, VALUE, PREVIOUS_VALUE"
- + ") VALUES ("
- + "?, "
- + "?, "
- + "?, "
- + "?"
- + ")";
-
- private static final String INSERT_CONNECT_DETAILS = "INSERT INTO CONNECT_DETAILS ("
- + "ACTION_ID, SOURCE_ID, SOURCE_NAME, SOURCE_TYPE, RELATIONSHIP, DESTINATION_ID, DESTINATION_NAME, DESTINATION_TYPE"
- + ") VALUES ("
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?"
- + ")";
-
- private static final String INSERT_MOVE_DETAILS = "INSERT INTO MOVE_DETAILS ("
- + "ACTION_ID, GROUP_ID, GROUP_NAME, PREVIOUS_GROUP_ID, PREVIOUS_GROUP_NAME"
- + ") VALUES ("
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "?"
- + ")";
-
- private static final String INSERT_PURGE_DETAILS = "INSERT INTO PURGE_DETAILS ("
- + "ACTION_ID, END_DATE"
- + ") VALUES ("
- + "?, "
- + "?"
- + ")";
-
- // ------------
- // action table
- // ------------
- private static final String SELECT_ACTIONS = "SELECT * FROM ACTION";
-
- private static final String SELECT_ACTION_COUNT = "SELECT COUNT(*) AS ACTION_COUNT FROM ACTION";
-
- private static final String SELECT_ACTION_BY_ID = "SELECT * "
- + "FROM ACTION "
- + "WHERE "
- + "ID = ?";
-
- private static final String DELETE_ACTIONS = "DELETE FROM ACTION WHERE ACTION_TIMESTAMP < ?";
-
- private static final String DELETE_SPECIFIC_ACTIONS = "DELETE FROM %s WHERE %s IN (SELECT ID FROM ACTION WHERE ACTION_TIMESTAMP < ?)";
-
- // -----------------
- // component details
- // -----------------
- private static final String SELECT_PROCESSOR_DETAILS_FOR_ACTION = "SELECT * FROM PROCESSOR_DETAILS WHERE ACTION_ID = ?";
-
- private static final String SELECT_REMOTE_PROCESS_GROUP_DETAILS_FOR_ACTION = "SELECT * FROM REMOTE_PROCESS_GROUP_DETAILS WHERE ACTION_ID = ?";
-
- // --------------
- // action details
- // --------------
- private static final String SELECT_MOVE_DETAILS_FOR_ACTION = "SELECT * FROM MOVE_DETAILS WHERE ACTION_ID = ?";
-
- private static final String SELECT_CONFIGURE_DETAILS_FOR_ACTION = "SELECT * FROM CONFIGURE_DETAILS WHERE ACTION_ID = ?";
-
- private static final String SELECT_CONNECT_DETAILS_FOR_ACTION = "SELECT * FROM CONNECT_DETAILS WHERE ACTION_ID = ?";
-
- private static final String SELECT_PURGE_DETAILS_FOR_ACTION = "SELECT * FROM PURGE_DETAILS WHERE ACTION_ID = ?";
-
- // ---------------
- // previous values
- // ---------------
- private static final String SELECT_PREVIOUSLY_CONFIGURED_FIELDS = "SELECT DISTINCT CD.NAME "
- + "FROM CONFIGURE_DETAILS CD "
- + "INNER JOIN ACTION A "
- + "ON CD.ACTION_ID = A.ID "
- + "WHERE A.SOURCE_ID = ?";
-
- private static final String SELECT_PREVIOUS_VALUES = "SELECT CD.VALUE, "
- + "A.ACTION_TIMESTAMP, "
- + "A.USER_NAME "
- + "FROM CONFIGURE_DETAILS CD "
- + "INNER JOIN ACTION A "
- + "ON CD.ACTION_ID = A.ID "
- + "WHERE A.SOURCE_ID = ? AND CD.NAME = ? "
- + "ORDER BY A.ACTION_TIMESTAMP DESC "
- + "LIMIT 4";
-
- private Connection connection;
- private Map<String, String> columnMap;
-
- public StandardActionDAO(Connection connection) {
- this.connection = connection;
-
- // initialize the column mappings
- this.columnMap = new HashMap<>();
- this.columnMap.put("timestamp", "ACTION_TIMESTAMP");
- this.columnMap.put("sourceName", "SOURCE_NAME");
- this.columnMap.put("sourceType", "SOURCE_TYPE");
- this.columnMap.put("operation", "OPERATION");
- this.columnMap.put("userName", "USER_NAME");
- }
-
- @Override
- public void createAction(Action action) throws DataAccessException {
- if (action.getUserDn() == null) {
- throw new IllegalArgumentException("User cannot be null.");
- }
-
- if (action.getTimestamp() == null) {
- throw new IllegalArgumentException("Action timestamp cannot be null.");
- }
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // obtain a statement to insert to the action table
- statement = connection.prepareStatement(INSERT_ACTION, Statement.RETURN_GENERATED_KEYS);
- statement.setString(1, StringUtils.left(action.getUserDn(), 255));
- statement.setString(2, StringUtils.left(action.getUserName(), 100));
- statement.setString(3, action.getSourceId());
- statement.setString(4, StringUtils.left(action.getSourceName(), 1000));
- statement.setString(5, action.getSourceType().toString());
- statement.setString(6, action.getOperation().toString());
- statement.setTimestamp(7, new java.sql.Timestamp(action.getTimestamp().getTime()));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // get the action id
- rs = statement.getGeneratedKeys();
- if (updateCount == 1 && rs.next()) {
- action.setId(rs.getInt(1));
- } else {
- throw new DataAccessException("Unable to insert action.");
- }
-
- // close the previous statement
- statement.close();
-
- // determine the type of component
- ComponentDetails componentDetails = action.getComponentDetails();
- if (componentDetails instanceof ProcessorDetails) {
- createProcessorDetails(action.getId(), (ProcessorDetails) componentDetails);
- } else if (componentDetails instanceof RemoteProcessGroupDetails) {
- createRemoteProcessGroupDetails(action.getId(), (RemoteProcessGroupDetails) componentDetails);
- }
-
- // determine the type of action
- ActionDetails details = action.getActionDetails();
- if (details instanceof ConnectDetails) {
- createConnectDetails(action.getId(), (ConnectDetails) details);
- } else if (details instanceof MoveDetails) {
- createMoveDetails(action.getId(), (MoveDetails) details);
- } else if (details instanceof ConfigureDetails) {
- createConfigureDetails(action.getId(), (ConfigureDetails) details);
- } else if (details instanceof PurgeDetails) {
- createPurgeDetails(action.getId(), (PurgeDetails) details);
- }
-
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the processor details.
- *
- * @param actionId
- * @param processorDetails
- * @throws DataAccessException
- */
- private void createProcessorDetails(int actionId, ProcessorDetails processorDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_PROCESSOR_DETAILS);
- statement.setInt(1, actionId);
- statement.setString(2, StringUtils.left(processorDetails.getType(), 1000));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert processor details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the remote process group details.
- *
- * @param actionId
- * @param remoteProcessGroupDetails
- * @throws DataAccessException
- */
- private void createRemoteProcessGroupDetails(int actionId, RemoteProcessGroupDetails remoteProcessGroupDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_REMOTE_PROCESS_GROUP_DETAILS);
- statement.setInt(1, actionId);
- statement.setString(2, StringUtils.left(remoteProcessGroupDetails.getUri(), 2500));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert remote prcoess group details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the connection details.
- *
- * @param actionId
- * @param connectionDetails
- * @throws DataAccessException
- */
- private void createConnectDetails(int actionId, ConnectDetails connectionDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_CONNECT_DETAILS);
- statement.setInt(1, actionId);
- statement.setString(2, connectionDetails.getSourceId());
- statement.setString(3, StringUtils.left(connectionDetails.getSourceName(), 1000));
- statement.setString(4, StringUtils.left(connectionDetails.getSourceType().toString(), 1000));
- statement.setString(5, StringUtils.left(connectionDetails.getRelationship(), 1000));
- statement.setString(6, connectionDetails.getDestinationId());
- statement.setString(7, StringUtils.left(connectionDetails.getDestinationName(), 1000));
- statement.setString(8, StringUtils.left(connectionDetails.getDestinationType().toString(), 1000));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert connection details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the move details.
- *
- * @param actionId
- * @param moveDetails
- * @throws DataAccessException
- */
- private void createMoveDetails(int actionId, MoveDetails moveDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_MOVE_DETAILS);
- statement.setInt(1, actionId);
- statement.setString(2, moveDetails.getGroupId());
- statement.setString(3, StringUtils.left(moveDetails.getGroup(), 1000));
- statement.setString(4, moveDetails.getPreviousGroupId());
- statement.setString(5, StringUtils.left(moveDetails.getPreviousGroup(), 1000));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert move details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the configuration details.
- *
- * @param actionId
- * @param configurationDetails
- * @throws DataAccessException
- */
- private void createConfigureDetails(int actionId, ConfigureDetails configurationDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_CONFIGURE_DETAILS);
- statement.setInt(1, actionId);
- statement.setString(2, StringUtils.left(configurationDetails.getName(), 1000));
- statement.setString(3, StringUtils.left(configurationDetails.getValue(), 5000));
- statement.setString(4, StringUtils.left(configurationDetails.getPreviousValue(), 5000));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert configure details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Persists the purge details.
- *
- * @param actionId
- * @param purgeDetails
- * @throws DataAccessException
- */
- private void createPurgeDetails(int actionId, PurgeDetails purgeDetails) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // obtain a statement to insert to the processor action table
- statement = connection.prepareStatement(INSERT_PURGE_DETAILS);
- statement.setInt(1, actionId);
- statement.setTimestamp(2, new java.sql.Timestamp(purgeDetails.getEndDate().getTime()));
-
- // insert the action
- int updateCount = statement.executeUpdate();
-
- // ensure the operation completed successfully
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert connection details.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- /**
- * Finds actions that meet the criteria in the specified query.
- *
- * @param historyQuery
- * @return
- * @throws DataAccessException
- */
- @Override
- public History findActions(HistoryQuery historyQuery) throws DataAccessException {
-
- // get the sort column
- String sortColumn = "ACTION_TIMESTAMP";
- if (StringUtils.isNotBlank(historyQuery.getSortColumn())) {
- String rawColumnName = historyQuery.getSortColumn();
- if (!columnMap.containsKey(rawColumnName)) {
- throw new IllegalArgumentException(String.format("Unrecognized column name '%s'.", rawColumnName));
- }
- sortColumn = columnMap.get(rawColumnName);
- }
-
- // get the sort order
- String sortOrder = "desc";
- if (StringUtils.isNotBlank(historyQuery.getSortOrder())) {
- sortOrder = historyQuery.getSortOrder();
- }
-
- History actionResult = new History();
- Collection<Action> actions = new ArrayList<>();
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- List<String> where = new ArrayList<>();
-
- // append the start time
- if (historyQuery.getStartDate() != null) {
- where.add("ACTION_TIMESTAMP >= ?");
- }
-
- // append the end time
- if (historyQuery.getEndDate() != null) {
- where.add("ACTION_TIMESTAMP <= ?");
- }
-
- // append the user id as necessary
- if (historyQuery.getUserName() != null) {
- where.add("UPPER(USER_NAME) LIKE ?");
- }
-
- // append the source id as necessary
- if (historyQuery.getSourceId() != null) {
- where.add("SOURCE_ID = ?");
- }
-
- String sql = SELECT_ACTION_COUNT;
- if (!where.isEmpty()) {
- sql += " WHERE " + StringUtils.join(where, " AND ");
- }
-
- // get the total number of actions
- statement = connection.prepareStatement(sql);
- int paramIndex = 1;
-
- // set the start date as necessary
- if (historyQuery.getStartDate() != null) {
- statement.setTimestamp(paramIndex++, new java.sql.Timestamp(historyQuery.getStartDate().getTime()));
- }
-
- // set the end date as necessary
- if (historyQuery.getEndDate() != null) {
- statement.setTimestamp(paramIndex++, new java.sql.Timestamp(historyQuery.getEndDate().getTime()));
- }
-
- // set the user id as necessary
- if (historyQuery.getUserName() != null) {
- statement.setString(paramIndex++, "%" + historyQuery.getUserName().toUpperCase() + "%");
- }
-
- // set the source id as necessary
- if (historyQuery.getSourceId() != null) {
- statement.setString(paramIndex, historyQuery.getSourceId());
- }
-
- // execute the statement
- rs = statement.executeQuery();
-
- // ensure there are results
- if (rs.next()) {
- actionResult.setTotal(rs.getInt("ACTION_COUNT"));
- } else {
- throw new DataAccessException("Unable to determine total action count.");
- }
-
- sql = SELECT_ACTIONS;
- if (!where.isEmpty()) {
- sql += " WHERE " + StringUtils.join(where, " AND ");
- }
-
- // append the sort criteria
- sql += (" ORDER BY " + sortColumn + " " + sortOrder);
-
- // append the offset and limit
- sql += " LIMIT ? OFFSET ?";
-
- // close the previous statement
- statement.close();
-
- // create the statement
- statement = connection.prepareStatement(sql);
- paramIndex = 1;
-
- // set the start date as necessary
- if (historyQuery.getStartDate() != null) {
- statement.setTimestamp(paramIndex++, new java.sql.Timestamp(historyQuery.getStartDate().getTime()));
- }
-
- // set the end date as necessary
- if (historyQuery.getEndDate() != null) {
- statement.setTimestamp(paramIndex++, new java.sql.Timestamp(historyQuery.getEndDate().getTime()));
- }
-
- // set the user id as necessary
- if (historyQuery.getUserName() != null) {
- statement.setString(paramIndex++, "%" + historyQuery.getUserName().toUpperCase() + "%");
- }
-
- // set the source id as necessary
- if (historyQuery.getSourceId() != null) {
- statement.setString(paramIndex++, historyQuery.getSourceId());
- }
-
- // set the limit
- statement.setInt(paramIndex++, historyQuery.getCount());
-
- // set the offset according to the currented page calculated above
- statement.setInt(paramIndex, historyQuery.getOffset());
-
- // execute the query
- rs = statement.executeQuery();
-
- // create each corresponding action
- while (rs.next()) {
- final Integer actionId = rs.getInt("ID");
- final Operation operation = Operation.valueOf(rs.getString("OPERATION"));
- final Component component = Component.valueOf(rs.getString("SOURCE_TYPE"));
-
- Action action = new Action();
- action.setId(actionId);
- action.setUserDn(rs.getString("USER_DN"));
- action.setUserName(rs.getString("USER_NAME"));
- action.setOperation(Operation.valueOf(rs.getString("OPERATION")));
- action.setTimestamp(new Date(rs.getTimestamp("ACTION_TIMESTAMP").getTime()));
- action.setSourceId(rs.getString("SOURCE_ID"));
- action.setSourceName(rs.getString("SOURCE_NAME"));
- action.setSourceType(Component.valueOf(rs.getString("SOURCE_TYPE")));
-
- // get the component details if appropriate
- ComponentDetails componentDetails = null;
- if (Component.Processor.equals(component)) {
- componentDetails = getProcessorDetails(actionId);
- } else if (Component.RemoteProcessGroup.equals(component)) {
- componentDetails = getRemoteProcessGroupDetails(actionId);
- }
-
- if (componentDetails != null) {
- action.setComponentDetails(componentDetails);
- }
-
- // get the action details if appropriate
- ActionDetails actionDetails = null;
- if (Operation.Move.equals(operation)) {
- actionDetails = getMoveDetails(actionId);
- } else if (Operation.Configure.equals(operation)) {
- actionDetails = getConfigureDetails(actionId);
- } else if (Operation.Connect.equals(operation) || Operation.Disconnect.equals(operation)) {
- actionDetails = getConnectDetails(actionId);
- } else if (Operation.Purge.equals(operation)) {
- actionDetails = getPurgeDetails(actionId);
- }
-
- // set the action details
- if (actionDetails != null) {
- action.setActionDetails(actionDetails);
- }
-
- // add the action
- actions.add(action);
- }
-
- // populate the action result
- actionResult.setActions(actions);
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return actionResult;
- }
-
- @Override
- public Action getAction(Integer actionId) throws DataAccessException {
- Action action = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_ACTION_BY_ID);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- Operation operation = Operation.valueOf(rs.getString("OPERATION"));
- Component component = Component.valueOf(rs.getString("SOURCE_TYPE"));
-
- // populate the action
- action = new Action();
- action.setId(rs.getInt("ID"));
- action.setUserDn(rs.getString("USER_DN"));
- action.setUserName(rs.getString("USER_NAME"));
- action.setOperation(operation);
- action.setTimestamp(new Date(rs.getTimestamp("ACTION_TIMESTAMP").getTime()));
- action.setSourceId(rs.getString("SOURCE_ID"));
- action.setSourceName(rs.getString("SOURCE_NAME"));
- action.setSourceType(component);
-
- // get the component details if appropriate
- ComponentDetails componentDetails = null;
- if (Component.Processor.equals(component)) {
- componentDetails = getProcessorDetails(actionId);
- } else if (Component.RemoteProcessGroup.equals(component)) {
- componentDetails = getRemoteProcessGroupDetails(actionId);
- }
-
- if (componentDetails != null) {
- action.setComponentDetails(componentDetails);
- }
-
- // get the action details if appropriate
- ActionDetails actionDetails = null;
- if (Operation.Move.equals(operation)) {
- actionDetails = getMoveDetails(actionId);
- } else if (Operation.Configure.equals(operation)) {
- actionDetails = getConfigureDetails(actionId);
- } else if (Operation.Connect.equals(operation) || Operation.Disconnect.equals(operation)) {
- actionDetails = getConnectDetails(actionId);
- } else if (Operation.Purge.equals(operation)) {
- actionDetails = getPurgeDetails(actionId);
- }
-
- // set the action details
- if (actionDetails != null) {
- action.setActionDetails(actionDetails);
- }
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return action;
- }
-
- /**
- * Loads the specified processor details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private ProcessorDetails getProcessorDetails(Integer actionId) throws DataAccessException {
- ProcessorDetails processorDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_PROCESSOR_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- processorDetails = new ProcessorDetails();
- processorDetails.setType(rs.getString("TYPE"));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return processorDetails;
- }
-
- /**
- * Loads the specified remote process group details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private RemoteProcessGroupDetails getRemoteProcessGroupDetails(Integer actionId) throws DataAccessException {
- RemoteProcessGroupDetails remoteProcessGroupDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_REMOTE_PROCESS_GROUP_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- remoteProcessGroupDetails = new RemoteProcessGroupDetails();
- remoteProcessGroupDetails.setUri(rs.getString("URI"));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return remoteProcessGroupDetails;
- }
-
- /**
- * Loads the specified move details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private MoveDetails getMoveDetails(Integer actionId) throws DataAccessException {
- MoveDetails moveDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_MOVE_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- moveDetails = new MoveDetails();
- moveDetails.setGroupId(rs.getString("GROUP_ID"));
- moveDetails.setGroup(rs.getString("GROUP_NAME"));
- moveDetails.setPreviousGroupId(rs.getString("PREVIOUS_GROUP_ID"));
- moveDetails.setPreviousGroup(rs.getString("PREVIOUS_GROUP_NAME"));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return moveDetails;
- }
-
- /**
- * Loads the specified relationship details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private ConnectDetails getConnectDetails(Integer actionId) throws DataAccessException {
- ConnectDetails connectionDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_CONNECT_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- final Component sourceComponent = Component.valueOf(rs.getString("SOURCE_TYPE"));
- final Component destinationComponent = Component.valueOf(rs.getString("DESTINATION_TYPE"));
-
- connectionDetails = new ConnectDetails();
- connectionDetails.setSourceId(rs.getString("SOURCE_ID"));
- connectionDetails.setSourceName(rs.getString("SOURCE_NAME"));
- connectionDetails.setSourceType(sourceComponent);
- connectionDetails.setRelationship(rs.getString("RELATIONSHIP"));
- connectionDetails.setDestinationId(rs.getString("DESTINATION_ID"));
- connectionDetails.setDestinationName(rs.getString("DESTINATION_NAME"));
- connectionDetails.setDestinationType(destinationComponent);
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return connectionDetails;
- }
-
- /**
- * Loads the specified configuration details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private ConfigureDetails getConfigureDetails(Integer actionId) throws DataAccessException {
- ConfigureDetails configurationDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_CONFIGURE_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- configurationDetails = new ConfigureDetails();
- configurationDetails.setName(rs.getString("NAME"));
- configurationDetails.setValue(rs.getString("VALUE"));
- configurationDetails.setPreviousValue(rs.getString("PREVIOUS_VALUE"));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return configurationDetails;
- }
-
- /**
- * Loads the specified purge details.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- private PurgeDetails getPurgeDetails(Integer actionId) throws DataAccessException {
- PurgeDetails purgeDetails = null;
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_PURGE_DETAILS_FOR_ACTION);
- statement.setInt(1, actionId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- if (rs.next()) {
- purgeDetails = new PurgeDetails();
- purgeDetails.setEndDate(new Date(rs.getTimestamp("END_DATE").getTime()));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return purgeDetails;
- }
-
- @Override
- public Map<String, List<PreviousValue>> getPreviousValues(String processorId) {
- Map<String, List<PreviousValue>> previousValues = new LinkedHashMap<>();
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_PREVIOUSLY_CONFIGURED_FIELDS);
- statement.setString(1, processorId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- while (rs.next()) {
- final String property = rs.getString("NAME");
- previousValues.put(property, getPreviousValuesForProperty(processorId, property));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return previousValues;
- }
-
- private List<PreviousValue> getPreviousValuesForProperty(final String processorId, final String property) {
- List<PreviousValue> previousValues = new ArrayList<>();
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the statement
- statement = connection.prepareStatement(SELECT_PREVIOUS_VALUES);
- statement.setString(1, processorId);
- statement.setString(2, property);
-
- // execute the query
- rs = statement.executeQuery();
-
- // ensure results
- while (rs.next()) {
- // get the previous value
- final PreviousValue previousValue = new PreviousValue();
- previousValue.setPreviousValue(rs.getString("VALUE"));
- previousValue.setTimestamp(new Date(rs.getTimestamp("ACTION_TIMESTAMP").getTime()));
- previousValue.setUserName(rs.getString("USER_NAME"));
- previousValues.add(previousValue);
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return previousValues;
- }
-
- @Override
- public void deleteActions(Date endDate) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // -----------------
- // component details
- // -----------------
-
- // create the move delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "PROCESSOR_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // create the move delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "REMOTE_PROCESS_GROUP_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // --------------
- // action details
- // --------------
- // create the move delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "MOVE_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // create the configure delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "CONFIGURE_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // create the connect delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "CONNECT_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // create the relationship delete statement
- statement = connection.prepareStatement(String.format(DELETE_SPECIFIC_ACTIONS, "PURGE_DETAILS", "ACTION_ID"));
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- statement.close();
-
- // -------
- // actions
- // -------
- // create the action delete statement
- statement = connection.prepareStatement(DELETE_ACTIONS);
- statement.setTimestamp(1, new java.sql.Timestamp(endDate.getTime()));
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java
deleted file mode 100644
index 4e2cc26..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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.admin.dao.impl;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.EnumSet;
-import java.util.Set;
-import org.apache.nifi.admin.RepositoryUtils;
-import org.apache.nifi.admin.dao.AuthorityDAO;
-import org.apache.nifi.admin.dao.DataAccessException;
-import org.apache.nifi.authorization.Authority;
-
-/**
- *
- */
-public class StandardAuthorityDAO implements AuthorityDAO {
-
- private static final String SELECT_AUTHORITIES_FOR_USER = "SELECT ID, ROLE "
- + "FROM AUTHORITY "
- + "WHERE USER_ID = ?";
-
- private static final String INSERT_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "?, ?"
- + ")";
-
- private static final String DELETE_AUTHORITY = "DELETE FROM AUTHORITY "
- + "WHERE USER_ID = ? AND ROLE = ?";
-
- private static final String DELETE_AUTHORITIES_FOR_USER = "DELETE FROM AUTHORITY "
- + "WHERE USER_ID = ?";
-
- private final Connection connection;
-
- public StandardAuthorityDAO(Connection connection) {
- this.connection = connection;
- }
-
- @Override
- public void createAuthorities(Set<Authority> authorities, String userId) throws DataAccessException {
- if (authorities == null) {
- throw new IllegalArgumentException("Specified authorities cannot be null.");
- }
-
- // ensure there are some authorities to create
- if (!authorities.isEmpty()) {
- PreparedStatement statement = null;
- try {
- // add each authority for the specified user
- statement = connection.prepareStatement(INSERT_AUTHORITY);
- statement.setString(1, userId);
- for (Authority authority : authorities) {
- statement.setString(2, authority.toString());
- statement.addBatch();
- }
-
- // insert the authorities
- int[] updateCounts = statement.executeBatch();
- for (int updateCount : updateCounts) {
- if (updateCount != 1) {
- throw new DataAccessException("Unable to insert user authorities.");
- }
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
- }
-
- @Override
- public void deleteAuthorities(String userId) throws DataAccessException {
- // ensure there are some authorities to create
- PreparedStatement statement = null;
- try {
- // add each authority for the specified user
- statement = connection.prepareStatement(DELETE_AUTHORITIES_FOR_USER);
- statement.setString(1, userId);
-
- // insert the authorities
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void deleteAuthorities(Set<Authority> authorities, String userId) throws DataAccessException {
- if (authorities == null) {
- throw new IllegalArgumentException("Specified authorities cannot be null.");
- }
-
- // ensure there are some authorities to create
- if (!authorities.isEmpty()) {
- PreparedStatement statement = null;
- try {
- // add each authority for the specified user
- statement = connection.prepareStatement(DELETE_AUTHORITY);
- statement.setString(1, userId);
- for (Authority authority : authorities) {
- statement.setString(2, authority.toString());
- statement.addBatch();
- }
-
- // insert the authorities
- int[] updateCounts = statement.executeBatch();
- for (int updateCount : updateCounts) {
- if (updateCount != 1) {
- throw new DataAccessException("Unable to remove user authorities.");
- }
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
- }
-
- @Override
- public Set<Authority> findAuthoritiesByUserId(String userId) throws DataAccessException {
- Set<Authority> authorities = EnumSet.noneOf(Authority.class);
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // add each authority for the specified user
- statement = connection.prepareStatement(SELECT_AUTHORITIES_FOR_USER);
- statement.setString(1, userId);
-
- // execute the query
- rs = statement.executeQuery();
-
- // create each corresponding authority
- while (rs.next()) {
- authorities.add(Authority.valueOfAuthority(rs.getString("ROLE")));
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
-
- return authorities;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardUserDAO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardUserDAO.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardUserDAO.java
deleted file mode 100644
index ea7c1a1..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardUserDAO.java
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
- * 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.admin.dao.impl;
-
-import java.nio.charset.StandardCharsets;
-import java.sql.Connection;
-import org.apache.nifi.admin.dao.UserDAO;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
-import org.apache.nifi.admin.RepositoryUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.nifi.admin.dao.DataAccessException;
-import org.apache.nifi.authorization.Authority;
-import org.apache.nifi.user.AccountStatus;
-import org.apache.nifi.user.NiFiUser;
-
-/**
- * Responsible for loading and persisting NiFiUsers.
- */
-public class StandardUserDAO implements UserDAO {
-
- private static final String SELECT_PENDING_ACCOUNTS_COUNT = "SELECT "
- + "COUNT(*) as PENDING_ACCOUNTS "
- + "FROM USER U "
- + "WHERE U.STATUS = 'PENDING'";
-
- private static final String SELECT_USER_BY_DN = "SELECT "
- + "U.ID, "
- + "U.DN, "
- + "U.USER_NAME, "
- + "U.USER_GROUP, "
- + "U.CREATION, "
- + "U.LAST_ACCESSED, "
- + "U.LAST_VERIFIED, "
- + "U.JUSTIFICATION, "
- + "U.STATUS, "
- + "A.ROLE "
- + "FROM USER U "
- + "LEFT JOIN AUTHORITY A " // ensures that users without authorities are still matched
- + "ON U.ID = A.USER_ID "
- + "WHERE U.DN = ?";
-
- private static final String SELECT_USER_BY_ID = "SELECT "
- + "U.ID, "
- + "U.DN, "
- + "U.USER_NAME, "
- + "U.USER_GROUP, "
- + "U.CREATION, "
- + "U.LAST_ACCESSED, "
- + "U.LAST_VERIFIED, "
- + "U.JUSTIFICATION, "
- + "U.STATUS, "
- + "A.ROLE "
- + "FROM USER U "
- + "LEFT JOIN AUTHORITY A " // ensures that users without authorities are still matched
- + "ON U.ID = A.USER_ID "
- + "WHERE U.ID = ?";
-
- private static final String SELECT_USERS = "SELECT "
- + "U.ID, "
- + "U.DN, "
- + "U.USER_NAME, "
- + "U.USER_GROUP, "
- + "U.CREATION, "
- + "U.LAST_ACCESSED, "
- + "U.LAST_VERIFIED, "
- + "U.JUSTIFICATION, "
- + "U.STATUS, "
- + "A.ROLE "
- + "FROM USER U "
- + "LEFT JOIN AUTHORITY A " // ensures that users without authorities are still matched
- + "ON U.ID = A.USER_ID "
- + "WHERE U.DN <> ?";
-
- private static final String SELECT_USER_GROUPS = "SELECT DISTINCT "
- + "U.USER_GROUP "
- + "FROM USER U";
-
- private static final String SELECT_USER_GROUP = "SELECT "
- + "U.ID, "
- + "U.DN, "
- + "U.USER_NAME, "
- + "U.USER_GROUP, "
- + "U.CREATION, "
- + "U.LAST_ACCESSED, "
- + "U.LAST_VERIFIED, "
- + "U.JUSTIFICATION, "
- + "U.STATUS, "
- + "A.ROLE "
- + "FROM USER U "
- + "LEFT JOIN AUTHORITY A " // ensures that users without authorities are still matched
- + "ON U.ID = A.USER_ID "
- + "WHERE U.DN <> ? AND U.USER_GROUP = ?";
-
- private static final String INSERT_USER = "INSERT INTO USER ("
- + "ID, DN, USER_NAME, USER_GROUP, CREATION, LAST_VERIFIED, JUSTIFICATION, STATUS"
- + ") VALUES ("
- + "?, "
- + "?, "
- + "?, "
- + "?, "
- + "NOW(), "
- + "?, "
- + "?, "
- + "?"
- + ")";
-
- private static final String UPDATE_USER = "UPDATE USER SET "
- + "DN = ?, "
- + "USER_NAME = ?, "
- + "USER_GROUP = ?, "
- + "LAST_ACCESSED = ?, "
- + "LAST_VERIFIED = ?, "
- + "JUSTIFICATION = ?, "
- + "STATUS = ? "
- + "WHERE ID = ?";
-
- private static final String UPDATE_USER_GROUP_STATUS = "UPDATE USER SET "
- + "STATUS = ?,"
- + "USER_GROUP = NULL "
- + "WHERE USER_GROUP = ?";
-
- private static final String UPDATE_USER_GROUP_VERIFICATION = "UPDATE USER SET "
- + "LAST_VERIFIED = ? "
- + "WHERE USER_GROUP = ?";
-
- private static final String UNGROUP_GROUP = "UPDATE USER SET "
- + "USER_GROUP = NULL "
- + "WHERE USER_GROUP = ?";
-
- private static final String DELETE_USER = "DELETE FROM USER "
- + "WHERE ID = ?";
-
- private final Connection connection;
-
- public StandardUserDAO(Connection connection) {
- this.connection = connection;
- }
-
- @Override
- public Boolean hasPendingUserAccounts() throws DataAccessException {
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_PENDING_ACCOUNTS_COUNT);
-
- // execute the query
- rs = statement.executeQuery();
-
- // get the first row which will contain the number of pending accounts
- if (rs.next()) {
- int pendingAccounts = rs.getInt("PENDING_ACCOUNTS");
- return pendingAccounts > 0;
- }
-
- // query returned no results?
- return false;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public Set<NiFiUser> findUsers() throws DataAccessException {
- Set<NiFiUser> users = new HashSet<>();
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_USERS);
- statement.setString(1, NiFiUser.ANONYMOUS_USER_DN);
-
- // execute the query
- rs = statement.executeQuery();
-
- // create the user
- NiFiUser user = null;
-
- // go through the user and its roles
- while (rs.next()) {
- // get the user id for the current record
- String userId = rs.getString("ID");
-
- // create the user during the first iteration
- if (user == null || !userId.equals(user.getId())) {
- user = new NiFiUser();
- user.setId(userId);
- user.setDn(rs.getString("DN"));
- user.setUserName(rs.getString("USER_NAME"));
- user.setUserGroup(rs.getString("USER_GROUP"));
- user.setJustification(rs.getString("JUSTIFICATION"));
- user.setStatus(AccountStatus.valueOfStatus(rs.getString("STATUS")));
-
- // set the creation date
- user.setCreation(new Date(rs.getTimestamp("CREATION").getTime()));
-
- // get the last accessed date
- if (rs.getTimestamp("LAST_ACCESSED") != null) {
- user.setLastAccessed(new Date(rs.getTimestamp("LAST_ACCESSED").getTime()));
- }
-
- // get the last verified date
- if (rs.getTimestamp("LAST_VERIFIED") != null) {
- user.setLastVerified(new Date(rs.getTimestamp("LAST_VERIFIED").getTime()));
- }
-
- // add the user
- users.add(user);
- }
-
- // the select statement performs a left join since the desired
- // user may not have any authorities
- String authority = rs.getString("ROLE");
- if (StringUtils.isNotBlank(authority)) {
- user.getAuthorities().add(Authority.valueOfAuthority(authority));
- }
- }
-
- return users;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public Set<String> findUserGroups() throws DataAccessException {
- Set<String> userGroups = new HashSet<>();
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_USER_GROUPS);
-
- // execute the query
- rs = statement.executeQuery();
-
- // get each user group
- while (rs.next()) {
- userGroups.add(rs.getString("USER_GROUP"));
- }
-
- return userGroups;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public Set<NiFiUser> findUsersForGroup(String group) throws DataAccessException {
- Set<NiFiUser> users = new HashSet<>();
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_USER_GROUP);
- statement.setString(1, NiFiUser.ANONYMOUS_USER_DN);
- statement.setString(2, group);
-
- // execute the query
- rs = statement.executeQuery();
-
- // create the user
- NiFiUser user = null;
-
- // go through the user and its roles
- while (rs.next()) {
- // get the user id for the current record
- String userId = rs.getString("ID");
-
- // create the user during the first iteration
- if (user == null || !userId.equals(user.getId())) {
- user = new NiFiUser();
- user.setId(userId);
- user.setDn(rs.getString("DN"));
- user.setUserName(rs.getString("USER_NAME"));
- user.setUserGroup(rs.getString("USER_GROUP"));
- user.setJustification(rs.getString("JUSTIFICATION"));
- user.setStatus(AccountStatus.valueOfStatus(rs.getString("STATUS")));
-
- // set the creation date
- user.setCreation(new Date(rs.getTimestamp("CREATION").getTime()));
-
- // get the last accessed date
- if (rs.getTimestamp("LAST_ACCESSED") != null) {
- user.setLastAccessed(new Date(rs.getTimestamp("LAST_ACCESSED").getTime()));
- }
-
- // get the last verified date
- if (rs.getTimestamp("LAST_VERIFIED") != null) {
- user.setLastVerified(new Date(rs.getTimestamp("LAST_VERIFIED").getTime()));
- }
-
- // add the user
- users.add(user);
- }
-
- // the select statement performs a left join since the desired
- // user may not have any authorities
- String authority = rs.getString("ROLE");
- if (StringUtils.isNotBlank(authority)) {
- user.getAuthorities().add(Authority.valueOfAuthority(authority));
- }
- }
-
- return users;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public NiFiUser findUserById(String id) throws DataAccessException {
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_USER_BY_ID);
- statement.setString(1, id);
-
- // execute the query
- rs = statement.executeQuery();
-
- // create the user
- NiFiUser user = null;
-
- // go through the user and its roles
- while (rs.next()) {
- // create the user during the first iteration
- if (user == null) {
- user = new NiFiUser();
- user.setId(rs.getString("ID"));
- user.setDn(rs.getString("DN"));
- user.setUserName(rs.getString("USER_NAME"));
- user.setUserGroup(rs.getString("USER_GROUP"));
- user.setJustification(rs.getString("JUSTIFICATION"));
- user.setStatus(AccountStatus.valueOfStatus(rs.getString("STATUS")));
-
- // set the creation date
- user.setCreation(new Date(rs.getTimestamp("CREATION").getTime()));
-
- // get the last accessed date
- if (rs.getTimestamp("LAST_ACCESSED") != null) {
- user.setLastAccessed(new Date(rs.getTimestamp("LAST_ACCESSED").getTime()));
- }
-
- // get the last verified date
- if (rs.getTimestamp("LAST_VERIFIED") != null) {
- user.setLastVerified(new Date(rs.getTimestamp("LAST_VERIFIED").getTime()));
- }
- }
-
- // the select statement performs a left join since the desired
- // user may not have any authorities
- String authority = rs.getString("ROLE");
- if (StringUtils.isNotBlank(authority)) {
- user.getAuthorities().add(Authority.valueOfAuthority(authority));
- }
- }
-
- return user;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public NiFiUser findUserByDn(String dn) throws DataAccessException {
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- // create the connection and obtain a statement
- statement = connection.prepareStatement(SELECT_USER_BY_DN);
- statement.setString(1, dn);
-
- // execute the query
- rs = statement.executeQuery();
-
- // create the user
- NiFiUser user = null;
-
- // go through the user and its roles
- while (rs.next()) {
- // create the user during the first iteration
- if (user == null) {
- user = new NiFiUser();
- user.setId(rs.getString("ID"));
- user.setDn(rs.getString("DN"));
- user.setUserName(rs.getString("USER_NAME"));
- user.setUserGroup(rs.getString("USER_GROUP"));
- user.setJustification(rs.getString("JUSTIFICATION"));
- user.setStatus(AccountStatus.valueOfStatus(rs.getString("STATUS")));
-
- // set the creation date
- user.setCreation(new Date(rs.getTimestamp("CREATION").getTime()));
-
- // get the last accessed date
- if (rs.getTimestamp("LAST_ACCESSED") != null) {
- user.setLastAccessed(new Date(rs.getTimestamp("LAST_ACCESSED").getTime()));
- }
-
- // get the last verified date
- if (rs.getTimestamp("LAST_VERIFIED") != null) {
- user.setLastVerified(new Date(rs.getTimestamp("LAST_VERIFIED").getTime()));
- }
- }
-
- // the select statement performs a left join since the desired
- // user may not have any authorities
- String authority = rs.getString("ROLE");
- if (StringUtils.isNotBlank(authority)) {
- user.getAuthorities().add(Authority.valueOfAuthority(authority));
- }
- }
-
- return user;
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void createUser(NiFiUser user) throws DataAccessException {
- if (user.getDn() == null) {
- throw new IllegalArgumentException("User dn must be specified.");
- }
-
- PreparedStatement statement = null;
- ResultSet rs = null;
- try {
- final String id = UUID.nameUUIDFromBytes(user.getDn().getBytes(StandardCharsets.UTF_8)).toString();
-
- // create a statement
- statement = connection.prepareStatement(INSERT_USER, Statement.RETURN_GENERATED_KEYS);
- statement.setString(1, id);
- statement.setString(2, StringUtils.left(user.getDn(), 255));
- statement.setString(3, StringUtils.left(user.getUserName(), 100));
- statement.setString(4, StringUtils.left(user.getUserGroup(), 100));
- if (user.getLastVerified() != null) {
- statement.setTimestamp(5, new java.sql.Timestamp(user.getLastVerified().getTime()));
- } else {
- statement.setTimestamp(5, null);
- }
- statement.setString(6, StringUtils.left(user.getJustification(), 500));
- statement.setString(7, user.getStatus().toString());
-
- // insert the user
- int updateCount = statement.executeUpdate();
- if (updateCount == 1) {
- user.setId(id);
- } else {
- throw new DataAccessException("Unable to insert user.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void deleteUser(String id) throws DataAccessException {
- // ensure there are some authorities to create
- PreparedStatement statement = null;
- try {
- // add each authority for the specified user
- statement = connection.prepareStatement(DELETE_USER);
- statement.setString(1, id);
-
- // insert the authorities
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void updateUser(NiFiUser user) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // create a statement
- statement = connection.prepareStatement(UPDATE_USER);
- statement.setString(1, StringUtils.left(user.getDn(), 255));
- statement.setString(2, StringUtils.left(user.getUserName(), 100));
- statement.setString(3, StringUtils.left(user.getUserGroup(), 100));
- statement.setString(6, StringUtils.left(user.getJustification(), 500));
- statement.setString(7, user.getStatus().toString());
- statement.setString(8, user.getId());
-
- // set the last accessed time accordingly
- if (user.getLastAccessed() == null) {
- statement.setNull(4, Types.TIMESTAMP);
- } else {
- statement.setTimestamp(4, new java.sql.Timestamp(user.getLastAccessed().getTime()));
- }
-
- // set the last verified time accordingly
- if (user.getLastVerified() == null) {
- statement.setNull(5, Types.TIMESTAMP);
- } else {
- statement.setTimestamp(5, new java.sql.Timestamp(user.getLastVerified().getTime()));
- }
-
- // perform the update
- int updateCount = statement.executeUpdate();
- if (updateCount != 1) {
- throw new DataAccessException("Unable to update user.");
- }
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void updateGroupStatus(String group, AccountStatus status) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // create a statement
- statement = connection.prepareStatement(UPDATE_USER_GROUP_STATUS);
- statement.setString(1, status.toString());
- statement.setString(2, group);
-
- // perform the update
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void updateGroupVerification(String group, Date lastVerified) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // create a statement
- statement = connection.prepareStatement(UPDATE_USER_GROUP_VERIFICATION);
-
- // set the last verified time accordingly
- if (lastVerified == null) {
- statement.setNull(1, Types.TIMESTAMP);
- } else {
- statement.setTimestamp(1, new java.sql.Timestamp(lastVerified.getTime()));
- }
-
- // set the group
- statement.setString(2, group);
-
- // perform the update
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
- @Override
- public void ungroup(String group) throws DataAccessException {
- PreparedStatement statement = null;
- try {
- // create a statement
- statement = connection.prepareStatement(UNGROUP_GROUP);
- statement.setString(1, group);
-
- // perform the update
- statement.executeUpdate();
- } catch (SQLException sqle) {
- throw new DataAccessException(sqle);
- } catch (DataAccessException dae) {
- throw dae;
- } finally {
- RepositoryUtils.closeQuietly(statement);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountDisabledException.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountDisabledException.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountDisabledException.java
deleted file mode 100644
index e8b3d10..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountDisabledException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.admin.service;
-
-/**
- * Exception to indicate that the user account is disabled.
- */
-public class AccountDisabledException extends RuntimeException {
-
- public AccountDisabledException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
- public AccountDisabledException(Throwable cause) {
- super(cause);
- }
-
- public AccountDisabledException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public AccountDisabledException(String message) {
- super(message);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountNotFoundException.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountNotFoundException.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountNotFoundException.java
deleted file mode 100644
index 88287ce..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountNotFoundException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.admin.service;
-
-/**
- * Exception to indicate that the user account is disabled.
- */
-public class AccountNotFoundException extends RuntimeException {
-
- public AccountNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
- public AccountNotFoundException(Throwable cause) {
- super(cause);
- }
-
- public AccountNotFoundException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public AccountNotFoundException(String message) {
- super(message);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountPendingException.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountPendingException.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountPendingException.java
deleted file mode 100644
index dacc483..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AccountPendingException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.admin.service;
-
-/**
- * Exception to indicate that the user has already submitting an account request
- * and that request is still pending.
- */
-public class AccountPendingException extends RuntimeException {
-
- public AccountPendingException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
- public AccountPendingException(Throwable cause) {
- super(cause);
- }
-
- public AccountPendingException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public AccountPendingException(String message) {
- super(message);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AdministrationException.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AdministrationException.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AdministrationException.java
deleted file mode 100644
index c0e8ac1..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AdministrationException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.admin.service;
-
-/**
- *
- */
-public class AdministrationException extends RuntimeException {
-
- public AdministrationException(Throwable cause) {
- super(cause);
- }
-
- public AdministrationException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public AdministrationException(String message) {
- super(message);
- }
-
- public AdministrationException() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AuditService.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AuditService.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AuditService.java
deleted file mode 100644
index 0843bd8..0000000
--- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/AuditService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.admin.service;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import org.apache.nifi.action.Action;
-import org.apache.nifi.history.HistoryQuery;
-import org.apache.nifi.history.History;
-import org.apache.nifi.history.PreviousValue;
-
-/**
- * Allows NiFi actions to be audited.
- */
-public interface AuditService {
-
- /**
- * Adds the specified actions.
- *
- * @param actions
- * @throws AdministrationException
- */
- void addActions(Collection<Action> actions);
-
- /**
- * Finds the previous values for the specified property in the specified
- * processor. Returns null if there are none.
- *
- * @param processorId
- * @return
- */
- Map<String, List<PreviousValue>> getPreviousValues(String processorId);
-
- /**
- * Get the actions within the given date range.
- *
- * @param actionQuery
- * @return
- * @throws AdministrationException
- */
- History getActions(HistoryQuery actionQuery);
-
- /**
- * Get the details for the specified action id. If the action cannot be
- * found, null is returned.
- *
- * @param actionId
- * @return
- */
- Action getAction(Integer actionId);
-
- /**
- * Purges all action's that occurred before the specified end date.
- *
- * @param end
- * @param purgeAction
- * @throws AdministrationException
- */
- void purgeActions(Date end, Action purgeAction);
-}