You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2015/01/22 18:04:22 UTC
[33/79] [abbrv] [partial] incubator-nifi git commit: NIFI-270 Made
all changes identified by adam, mark, joey to prep for a cleaner build
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/AuditDataSourceFactoryBean.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/AuditDataSourceFactoryBean.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/AuditDataSourceFactoryBean.java
deleted file mode 100644
index aeb2755..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/AuditDataSourceFactoryBean.java
+++ /dev/null
@@ -1,222 +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;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import org.apache.commons.lang3.StringUtils;
-import org.h2.jdbcx.JdbcConnectionPool;
-import org.apache.nifi.util.NiFiProperties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.FactoryBean;
-
-/**
- *
- */
-public class AuditDataSourceFactoryBean implements FactoryBean {
-
- private static final Logger logger = LoggerFactory.getLogger(AuditDataSourceFactoryBean.class);
- private static final String NF_USERNAME_PASSWORD = "nf";
- private static final int MAX_CONNECTIONS = 5;
-
- // database file name
- private static final String AUDIT_DATABASE_FILE_NAME = "nifi-audit";
-
- // ------------
- // action table
- // ------------
- private static final String CREATE_ACTION_TABLE = "CREATE TABLE ACTION ("
- + "ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, "
- + "USER_DN VARCHAR2(255) NOT NULL, "
- + "USER_NAME VARCHAR2(100) NOT NULL, "
- + "SOURCE_ID VARCHAR2(100) NOT NULL, "
- + "SOURCE_NAME VARCHAR2(1000) NOT NULL, "
- + "SOURCE_TYPE VARCHAR2(1000) NOT NULL, "
- + "OPERATION VARCHAR2(50) NOT NULL, "
- + "ACTION_TIMESTAMP TIMESTAMP NOT NULL "
- + ")";
-
- // -----------------
- // component details
- // -----------------
- private static final String CREATE_PROCESSOR_DETAILS_TABLE = "CREATE TABLE PROCESSOR_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "TYPE VARCHAR2(1000) NOT NULL, "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- private static final String CREATE_REMOTE_PROCESS_GROUP_DETAILS_TABLE = "CREATE TABLE REMOTE_PROCESS_GROUP_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "URI VARCHAR2(2500) NOT NULL, "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- // --------------
- // action details
- // --------------
- private static final String CREATE_MOVE_DETAILS_TABLE = "CREATE TABLE MOVE_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "GROUP_ID VARCHAR2(100) NOT NULL, "
- + "GROUP_NAME VARCHAR2(1000) NOT NULL, "
- + "PREVIOUS_GROUP_ID VARCHAR2(100) NOT NULL, "
- + "PREVIOUS_GROUP_NAME VARCHAR2(1000) NOT NULL, "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- private static final String CREATE_CONFIGURE_DETAILS_TABLE = "CREATE TABLE CONFIGURE_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "NAME VARCHAR2(1000) NOT NULL, "
- + "VALUE VARCHAR2(5000), "
- + "PREVIOUS_VALUE VARCHAR2(5000), "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- private static final String CREATE_CONNECT_DETAILS_TABLE = "CREATE TABLE CONNECT_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "SOURCE_ID VARCHAR2(100) NOT NULL, "
- + "SOURCE_NAME VARCHAR2(1000), "
- + "SOURCE_TYPE VARCHAR2(1000) NOT NULL, "
- + "RELATIONSHIP VARCHAR2(1000), "
- + "DESTINATION_ID VARCHAR2(100) NOT NULL, "
- + "DESTINATION_NAME VARCHAR2(1000), "
- + "DESTINATION_TYPE VARCHAR2(1000) NOT NULL, "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- private static final String CREATE_PURGE_DETAILS_TABLE = "CREATE TABLE PURGE_DETAILS ("
- + "ACTION_ID INT NOT NULL PRIMARY KEY, "
- + "END_DATE TIMESTAMP NOT NULL, "
- + "FOREIGN KEY (ACTION_ID) REFERENCES ACTION(ID)"
- + ")";
-
- private JdbcConnectionPool connectionPool;
-
- private NiFiProperties properties;
-
- @Override
- public Object getObject() throws Exception {
- if (connectionPool == null) {
-
- // locate the repository directory
- String repositoryDirectoryPath = properties.getProperty(NiFiProperties.REPOSITORY_DATABASE_DIRECTORY);
-
- // ensure the repository directory is specified
- if (repositoryDirectoryPath == null) {
- throw new NullPointerException("Database directory must be specified.");
- }
-
- // create a handle to the repository directory
- File repositoryDirectory = new File(repositoryDirectoryPath);
-
- // get a handle to the database file
- File databaseFile = new File(repositoryDirectory, AUDIT_DATABASE_FILE_NAME);
-
- // format the database url
- String databaseUrl = "jdbc:h2:" + databaseFile + ";AUTOCOMMIT=OFF;DB_CLOSE_ON_EXIT=FALSE;LOCK_MODE=3";
- String databaseUrlAppend = properties.getProperty(NiFiProperties.H2_URL_APPEND);
- if (StringUtils.isNotBlank(databaseUrlAppend)) {
- databaseUrl += databaseUrlAppend;
- }
-
- // create the pool
- connectionPool = JdbcConnectionPool.create(databaseUrl, NF_USERNAME_PASSWORD, NF_USERNAME_PASSWORD);
- connectionPool.setMaxConnections(MAX_CONNECTIONS);
-
- Connection connection = null;
- ResultSet rs = null;
- Statement statement = null;
- try {
- // get a connection
- connection = connectionPool.getConnection();
- connection.setAutoCommit(false);
-
- // determine if the tables need to be created
- rs = connection.getMetaData().getTables(null, null, "ACTION", null);
- if (!rs.next()) {
- logger.info("Database not built for repository: " + databaseUrl + ". Building now...");
- RepositoryUtils.closeQuietly(rs);
-
- // create a statement for initializing the database
- statement = connection.createStatement();
-
- // action table
- statement.execute(CREATE_ACTION_TABLE);
-
- // component details
- statement.execute(CREATE_PROCESSOR_DETAILS_TABLE);
- statement.execute(CREATE_REMOTE_PROCESS_GROUP_DETAILS_TABLE);
-
- // action details
- statement.execute(CREATE_MOVE_DETAILS_TABLE);
- statement.execute(CREATE_CONFIGURE_DETAILS_TABLE);
- statement.execute(CREATE_CONNECT_DETAILS_TABLE);
- statement.execute(CREATE_PURGE_DETAILS_TABLE);
- } else {
- logger.info("Existing database found and connected to at: " + databaseUrl);
- }
-
- // commit any changes
- connection.commit();
- } catch (SQLException sqle) {
- RepositoryUtils.rollback(connection, logger);
- throw sqle;
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- RepositoryUtils.closeQuietly(connection);
- }
- }
-
- return connectionPool;
- }
-
- @Override
- public Class getObjectType() {
- return JdbcConnectionPool.class;
- }
-
- @Override
- public boolean isSingleton() {
- return true;
- }
-
- public void setProperties(NiFiProperties properties) {
- this.properties = properties;
- }
-
- /**
- * Disposes resources.
- */
- public void shutdown() {
-
- // shutdown the connection pool
- if (connectionPool != null) {
- try {
- connectionPool.dispose();
- } catch (Exception e) {
- logger.warn("Unable to dispose of connection pool: " + e.getMessage());
- if (logger.isDebugEnabled()) {
- logger.warn(StringUtils.EMPTY, e);
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/RepositoryUtils.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/RepositoryUtils.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/RepositoryUtils.java
deleted file mode 100644
index b95388b..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/RepositoryUtils.java
+++ /dev/null
@@ -1,91 +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;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import org.slf4j.Logger;
-
-/**
- * A utility class for useful methods dealing with the repository
- *
- * @author unattributed
- */
-public class RepositoryUtils {
-
- public static void rollback(final Connection conn, final Logger logger) {
- try {
- if (null != conn) {
- conn.rollback();
- }
- } catch (final SQLException sqe) {
- logger.warn("The following problem occurred while trying to rollback " + conn + ": " + sqe.getLocalizedMessage());
- if (logger.isDebugEnabled()) {
- logger.debug("", sqe);
- }
- }
- }
-
- /**
- * Closes the given statement quietly - no logging, no exceptions
- *
- * @param statement
- */
- public static void closeQuietly(final Statement statement) {
-
- if (null != statement) {
- try {
- statement.close();
- } catch (final SQLException se) { /*IGNORE*/
-
- }
- }
- }
-
- /**
- * Closes the given result set quietly - no logging, no exceptions
- *
- * @param resultSet
- */
- public static void closeQuietly(final ResultSet resultSet) {
- if (null != resultSet) {
- try {
- resultSet.close();
- } catch (final SQLException se) {/*IGNORE*/
-
- }
- }
- }
-
- /**
- * Closes the given connection quietly - no logging, no exceptions
- *
- * @param conn
- */
- public static void closeQuietly(final Connection conn) {
- if (null != conn) {
- try {
- conn.close();
- } catch (final SQLException se) {/*IGNORE*/
-
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/UserDataSourceFactoryBean.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/UserDataSourceFactoryBean.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/UserDataSourceFactoryBean.java
deleted file mode 100644
index 1f64f6e..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/UserDataSourceFactoryBean.java
+++ /dev/null
@@ -1,247 +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;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.UUID;
-import org.apache.commons.lang3.StringUtils;
-import org.h2.jdbcx.JdbcConnectionPool;
-import org.apache.nifi.user.NiFiUser;
-import org.apache.nifi.util.NiFiProperties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.FactoryBean;
-
-/**
- *
- */
-public class UserDataSourceFactoryBean implements FactoryBean {
-
- private static final Logger logger = LoggerFactory.getLogger(UserDataSourceFactoryBean.class);
- private static final String NF_USERNAME_PASSWORD = "nf";
- private static final int MAX_CONNECTIONS = 5;
-
- // database file name
- private static final String AUDIT_DATABASE_FILE_NAME = "nifi-users";
-
- private static final String CREATE_USER_TABLE = "CREATE TABLE USER ("
- + "ID VARCHAR2(100) NOT NULL PRIMARY KEY, "
- + "DN VARCHAR2(255) NOT NULL UNIQUE, "
- + "USER_NAME VARCHAR2(100) NOT NULL, "
- + "USER_GROUP VARCHAR2(100), "
- + "CREATION TIMESTAMP NOT NULL, "
- + "LAST_ACCESSED TIMESTAMP, "
- + "LAST_VERIFIED TIMESTAMP, "
- + "JUSTIFICATION VARCHAR2(500) NOT NULL, "
- + "STATUS VARCHAR2(10) NOT NULL"
- + ")";
-
- private static final String CREATE_AUTHORITY_TABLE = "CREATE TABLE AUTHORITY ("
- + "ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, "
- + "USER_ID VARCHAR2(100) NOT NULL, "
- + "ROLE VARCHAR2(50) NOT NULL, "
- + "FOREIGN KEY (USER_ID) REFERENCES USER (ID), "
- + "CONSTRAINT USER_ROLE_UNIQUE_CONSTRAINT UNIQUE (USER_ID, ROLE)"
- + ")";
-
- private static final String INSERT_ANONYMOUS_USER = "INSERT INTO USER ("
- + "ID, DN, USER_NAME, CREATION, LAST_VERIFIED, JUSTIFICATION, STATUS"
- + ") VALUES ("
- + "'" + UUID.randomUUID().toString() + "', "
- + "'" + NiFiUser.ANONYMOUS_USER_DN + "', "
- + "'" + NiFiUser.ANONYMOUS_USER_DN + "', "
- + "NOW(), "
- + "NOW(), "
- + "'Anonymous user needs no justification', "
- + "'ACTIVE'"
- + ")";
-
- private static final String INSERT_ANONYMOUS_MONITOR_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "(SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "'), "
- + "'ROLE_MONITOR'"
- + ")";
-
- private static final String INSERT_ANONYMOUS_DFM_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "(SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "'), "
- + "'ROLE_DFM'"
- + ")";
-
- private static final String INSERT_ANONYMOUS_ADMIN_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "(SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "'), "
- + "'ROLE_ADMIN'"
- + ")";
-
- private static final String INSERT_ANONYMOUS_NIFI_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "(SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "'), "
- + "'ROLE_NIFI'"
- + ")";
-
- private static final String INSERT_ANONYMOUS_PROVENANCE_AUTHORITY = "INSERT INTO AUTHORITY ("
- + "USER_ID, ROLE"
- + ") VALUES ("
- + "(SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "'), "
- + "'ROLE_PROVENANCE'"
- + ")";
-
- private static final String SELECT_ANONYMOUS_PROVENANCE_AUTHORITY = "SELECT * FROM AUTHORITY "
- + "WHERE "
- + "USER_ID = (SELECT ID FROM USER WHERE DN = '" + NiFiUser.ANONYMOUS_USER_DN + "') "
- + "AND "
- + "ROLE = 'ROLE_PROVENANCE'";
-
- private JdbcConnectionPool connectionPool;
-
- private NiFiProperties properties;
-
- @Override
- public Object getObject() throws Exception {
- if (connectionPool == null) {
-
- // locate the repository directory
- String repositoryDirectoryPath = properties.getProperty(NiFiProperties.REPOSITORY_DATABASE_DIRECTORY);
-
- // ensure the repository directory is specified
- if (repositoryDirectoryPath == null) {
- throw new NullPointerException("Database directory must be specified.");
- }
-
- // create a handle to the repository directory
- File repositoryDirectory = new File(repositoryDirectoryPath);
-
- // create a handle to the database directory and file
- File databaseFile = new File(repositoryDirectory, AUDIT_DATABASE_FILE_NAME);
- String databaseUrl = getDatabaseUrl(databaseFile);
-
- // create the pool
- connectionPool = JdbcConnectionPool.create(databaseUrl, NF_USERNAME_PASSWORD, NF_USERNAME_PASSWORD);
- connectionPool.setMaxConnections(MAX_CONNECTIONS);
-
- Connection connection = null;
- ResultSet rs = null;
- Statement statement = null;
- try {
- // get a connection
- connection = connectionPool.getConnection();
- connection.setAutoCommit(false);
-
- // create a statement for creating/updating the database
- statement = connection.createStatement();
-
- // determine if the tables need to be created
- rs = connection.getMetaData().getTables(null, null, "USER", null);
- if (!rs.next()) {
- logger.info("Database not built for repository: " + databaseUrl + ". Building now...");
-
- // create the tables
- statement.execute(CREATE_USER_TABLE);
- statement.execute(CREATE_AUTHORITY_TABLE);
-
- // seed the anonymous user
- statement.execute(INSERT_ANONYMOUS_USER);
- statement.execute(INSERT_ANONYMOUS_MONITOR_AUTHORITY);
- statement.execute(INSERT_ANONYMOUS_DFM_AUTHORITY);
- statement.execute(INSERT_ANONYMOUS_ADMIN_AUTHORITY);
- statement.execute(INSERT_ANONYMOUS_NIFI_AUTHORITY);
- } else {
- logger.info("Existing database found and connected to at: " + databaseUrl);
- }
-
- // close the previous result set
- RepositoryUtils.closeQuietly(rs);
-
- // merge in the provenance role to handle existing databases
- rs = statement.executeQuery(SELECT_ANONYMOUS_PROVENANCE_AUTHORITY);
- if (!rs.next()) {
- statement.execute(INSERT_ANONYMOUS_PROVENANCE_AUTHORITY);
- }
-
- // commit any changes
- connection.commit();
- } catch (SQLException sqle) {
- RepositoryUtils.rollback(connection, logger);
- throw sqle;
- } finally {
- RepositoryUtils.closeQuietly(rs);
- RepositoryUtils.closeQuietly(statement);
- RepositoryUtils.closeQuietly(connection);
- }
- }
-
- return connectionPool;
- }
-
- /**
- * Get the database url for the specified database file.
- *
- * @param databaseFile
- * @return
- */
- private String getDatabaseUrl(File databaseFile) {
- String databaseUrl = "jdbc:h2:" + databaseFile + ";AUTOCOMMIT=OFF;DB_CLOSE_ON_EXIT=FALSE;LOCK_MODE=3";
- String databaseUrlAppend = properties.getProperty(NiFiProperties.H2_URL_APPEND);
- if (StringUtils.isNotBlank(databaseUrlAppend)) {
- databaseUrl += databaseUrlAppend;
- }
- return databaseUrl;
- }
-
- @Override
- public Class getObjectType() {
- return JdbcConnectionPool.class;
- }
-
- @Override
- public boolean isSingleton() {
- return true;
- }
-
- public void setProperties(NiFiProperties properties) {
- this.properties = properties;
- }
-
- /**
- * Disposes resources.
- */
- public void shutdown() {
-
- // shutdown the connection pool
- if (connectionPool != null) {
- try {
- connectionPool.dispose();
- } catch (Exception e) {
- logger.warn("Unable to dispose of connection pool: " + e.getMessage());
- if (logger.isDebugEnabled()) {
- logger.warn(StringUtils.EMPTY, e);
- }
- }
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/ActionDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/ActionDAO.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/ActionDAO.java
deleted file mode 100644
index 5d6d222..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/ActionDAO.java
+++ /dev/null
@@ -1,74 +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;
-
-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;
-
-/**
- * Action data access.
- */
-public interface ActionDAO {
-
- /**
- * Persists the specified action.
- *
- * @param action
- * @throws DataAccessException
- */
- void createAction(Action action) throws DataAccessException;
-
- /**
- * Finds all actions that meet the specified criteria.
- *
- * @param actionQuery
- * @return
- * @throws DataAccessException
- */
- History findActions(HistoryQuery actionQuery) throws DataAccessException;
-
- /**
- * Finds the previous values for the specified property in the specified
- * processor. Returns empty list if there are none.
- *
- * @param processorId
- * @return
- */
- Map<String, List<PreviousValue>> getPreviousValues(String processorId);
-
- /**
- * Finds the specified action.
- *
- * @param actionId
- * @return
- * @throws DataAccessException
- */
- Action getAction(Integer actionId) throws DataAccessException;
-
- /**
- * Deletes all actions up to the specified end date.
- *
- * @param endDate
- * @throws DataAccessException
- */
- void deleteActions(Date endDate) throws DataAccessException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/AuthorityDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/AuthorityDAO.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/AuthorityDAO.java
deleted file mode 100644
index 2992884..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/AuthorityDAO.java
+++ /dev/null
@@ -1,58 +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;
-
-import java.util.Set;
-import org.apache.nifi.authorization.Authority;
-
-/**
- * Authority data access.
- */
-public interface AuthorityDAO {
-
- /**
- * Finds all Authority for the specified user.
- *
- * @param userId
- * @return
- */
- Set<Authority> findAuthoritiesByUserId(String userId) throws DataAccessException;
-
- /**
- * Creates a new Authorities for the specified user.
- *
- * @param authorities
- * @param userId
- */
- void createAuthorities(Set<Authority> authorities, String userId) throws DataAccessException;
-
- /**
- * Removes all Authorities for the specified user.
- *
- * @param userId
- * @throws DataAccessException
- */
- void deleteAuthorities(String userId) throws DataAccessException;
-
- /**
- * Removes the specified Authority.
- *
- * @param authorities
- * @param userId
- */
- void deleteAuthorities(Set<Authority> authorities, String userId) throws DataAccessException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DAOFactory.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DAOFactory.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DAOFactory.java
deleted file mode 100644
index dee4ef9..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DAOFactory.java
+++ /dev/null
@@ -1,29 +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;
-
-/**
- *
- */
-public interface DAOFactory {
-
- UserDAO getUserDAO();
-
- ActionDAO getActionDAO();
-
- AuthorityDAO getAuthorityDAO();
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DataAccessException.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DataAccessException.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DataAccessException.java
deleted file mode 100644
index 05bf4af..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/DataAccessException.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.dao;
-
-/**
- * Represents any error that might occur while administering NiFi accounts.
- */
-public class DataAccessException extends RuntimeException {
-
- public DataAccessException(Throwable cause) {
- super(cause);
- }
-
- public DataAccessException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public DataAccessException(String message) {
- super(message);
- }
-
- public DataAccessException() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/UserDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/UserDAO.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/UserDAO.java
deleted file mode 100644
index 9ffab5d..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/UserDAO.java
+++ /dev/null
@@ -1,127 +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;
-
-import java.util.Date;
-import java.util.Set;
-import org.apache.nifi.user.AccountStatus;
-import org.apache.nifi.user.NiFiUser;
-
-/**
- * Defines the user data access object.
- */
-public interface UserDAO {
-
- /**
- * Determines whether there are any PENDING user accounts.
- *
- * @return
- * @throws DataAccessException
- */
- Boolean hasPendingUserAccounts() throws DataAccessException;
-
- /**
- * Returns all users.
- *
- * @return
- * @throws DataAccessException
- */
- Set<NiFiUser> findUsers() throws DataAccessException;
-
- /**
- * Returns all user groups.
- *
- * @return
- * @throws DataAccessException
- */
- Set<String> findUserGroups() throws DataAccessException;
-
- /**
- * Returns all users for the specified group.
- *
- * @param group
- * @return
- * @throws DataAccessException
- */
- Set<NiFiUser> findUsersForGroup(String group) throws DataAccessException;
-
- /**
- * Returns the user with the specified id.
- *
- * @param id
- * @return
- * @throws DataAccessException
- */
- NiFiUser findUserById(String id) throws DataAccessException;
-
- /**
- * Returns the user with the specified DN.
- *
- * @param dn
- * @return
- */
- NiFiUser findUserByDn(String dn) throws DataAccessException;
-
- /**
- * Creates a new user based off the specified NiFiUser.
- *
- * @param user
- */
- void createUser(NiFiUser user) throws DataAccessException;
-
- /**
- * Updates the specified NiFiUser.
- *
- * @param user
- */
- void updateUser(NiFiUser user) throws DataAccessException;
-
- /**
- * Deletes the specified user.
- *
- * @param id
- * @throws DataAccessException
- */
- void deleteUser(String id) throws DataAccessException;
-
- /**
- * Sets the status of the specified group.
- *
- * @param group
- * @param status
- * @throws DataAccessException
- */
- void updateGroupStatus(String group, AccountStatus status) throws DataAccessException;
-
- /**
- * Sets the last verified time for all users in the specified group.
- *
- * @param group
- * @param lastVerified
- * @throws DataAccessException S
- */
- void updateGroupVerification(String group, Date lastVerified) throws DataAccessException;
-
- /**
- * Ungroups the specified group.
- *
- * @param group
- * @throws DataAccessException
- */
- void ungroup(String group) throws DataAccessException;
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/DAOFactoryImpl.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/DAOFactoryImpl.java b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/DAOFactoryImpl.java
deleted file mode 100644
index 2f3de0e..0000000
--- a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/DAOFactoryImpl.java
+++ /dev/null
@@ -1,51 +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 org.apache.nifi.admin.dao.ActionDAO;
-import org.apache.nifi.admin.dao.AuthorityDAO;
-import org.apache.nifi.admin.dao.DAOFactory;
-import org.apache.nifi.admin.dao.UserDAO;
-
-/**
- *
- */
-public class DAOFactoryImpl implements DAOFactory {
-
- private final Connection connection;
-
- public DAOFactoryImpl(Connection connection) {
- this.connection = connection;
- }
-
- @Override
- public ActionDAO getActionDAO() {
- return new StandardActionDAO(connection);
- }
-
- @Override
- public AuthorityDAO getAuthorityDAO() {
- return new StandardAuthorityDAO(connection);
- }
-
- @Override
- public UserDAO getUserDAO() {
- return new StandardUserDAO(connection);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardActionDAO.java b/nifi/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/nifi/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/f6d9354b/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/dao/impl/StandardAuthorityDAO.java b/nifi/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/nifi/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;
- }
-
-}