diff options
Diffstat (limited to 'vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java')
-rw-r--r-- | vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java | 434 |
1 files changed, 434 insertions, 0 deletions
diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java b/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java new file mode 100644 index 000000000..2b94470fe --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java @@ -0,0 +1,434 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.scheduler; + + + + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.sql.DataSource; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; +import org.springframework.scheduling.quartz.QuartzJobBean; + + +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.openecomp.portalsdk.core.util.SystemProperties; +import org.openecomp.vid.conf.ExternalAppConfig; + + +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class MyLoginsFeedJob extends QuartzJobBean{ + + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MyLoginsFeedJob.class); + + + private Connection connection; + + private String APP_QUERY ; + + private String USER_LOG_QUERY ; + + private String ALL_ACCOUNTS_LOG_QUERY ; + + private String PROFILE_LOG_QUERY ; + + private String USER_PROFILE_LOG_QUERY ; + + + class App { + + private Integer appId; + private Integer motsId; + private String mlAppName; + + public Integer getAppId() { + return appId; + } + public void setAppId(Integer appId) { + this.appId = appId; + } + public Integer getMotsId() { + return motsId; + } + public void setMotsId(Integer motsId) { + this.motsId = motsId; + } + public String getMlAppName() { + return mlAppName; + } + public void setMlAppName(String mlAppName) { + this.mlAppName = mlAppName; + } + + } + + + + + private String getOutputFolder(){ + String outputFolder = SystemProperties.getProperty("my_login_feed_output_dir") + File.separator; + + return outputFolder; + } + + + public List<App> getApplicationList(Connection conn) { + + PreparedStatement stmt = null; + ResultSet rs = null; + List<App> appList = new ArrayList<App>(); + try{ + APP_QUERY = SystemProperties.getProperty("app.query"); + stmt = conn.prepareStatement(this.APP_QUERY); + rs = stmt.executeQuery(); + while(rs.next()) { + + App app = new App(); + app.setAppId(rs.getInt("APP_ID")); + app.setMotsId(rs.getInt("MOTS_ID")); + app.setMlAppName(rs.getString("ML_APP_NAME")); + appList.add(app); + } + + } + catch (Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error getting connection. " + e.getMessage())); + } + finally{ + try { + if(rs != null) { + rs.close(); + } + if(stmt != null){ + stmt.close(); + } + } + catch (Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error getting connection. " + e.getMessage())); + + } + } + + return appList; + } + + + + public void generateLogs(){ + Connection con = null; + try{ + con = getConnection(); + + List<App> appList = getApplicationList(con); + + for(App app : appList) { + + this.generateUserLogs(con, app); + this.generateProfileLogs(con, app); + this.generateUserProfileLogs(con, app); + this.generateAllAccountsLogs(con, app); + + } + + } catch (Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error getting connection. " + e.getMessage())); + } + finally{ + try { + if(con != null){ + con.close(); + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error closing connection")); + + } + } + } + + private void generateAllAccountsLogs(Connection con, App app){ + PreparedStatement stmt = null; + ResultSet rs = null; + try{ + + ALL_ACCOUNTS_LOG_QUERY = SystemProperties.getProperty("all.accounts.log.query"); + stmt = con.prepareStatement(ALL_ACCOUNTS_LOG_QUERY); + stmt.setInt(1, app.getAppId()); + rs = stmt.executeQuery(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + FileOutputStream fos = new java.io.FileOutputStream(this.getOutputFolder()+app.getMlAppName() + "_AllAccounts_" + sdf.format(new Date()) + ".txt"); + BufferedOutputStream bout = new BufferedOutputStream(fos); + + String header = "ATTUID,ACCOUNT_STATUS,APPLICATION_USERID,LAST_LOGON_DATE,LAST_PASSWORD_CHANGE_DATE,PROFILE_NAME"; + bout.write(header.getBytes()); + int userCount = 0; //need to include header and footer in the count + while (rs.next()){ + userCount ++; + bout.write("\n".getBytes()); + String CUID = rs.getString("CUID") == null ? "" : rs.getString("CUID"); + String activeYN = rs.getString("ACTIVE_YN") == null ? "" : rs.getString("ACTIVE_YN"); + String APPLICATIONUSERID = rs.getString("APPLICATIONUSERID") == null ? "" : rs.getString("APPLICATIONUSERID"); + String LAST_LOGON_DATE = rs.getString("LAST_LOGON_DATE") == null ? "" : rs.getString("LAST_LOGON_DATE"); + String LAST_PASSWORD_CHANGE_DATE = rs.getString("LAST_PASSWORD_CHANGE_DATE") == null ? "" : rs.getString("LAST_PASSWORD_CHANGE_DATE"); + String PROFILE_NAME = rs.getString("PROFILE_NAME") == null ? "" : rs.getString("PROFILE_NAME"); + + String dat = + CUID + "," + activeYN + "," + APPLICATIONUSERID + "," + + LAST_LOGON_DATE + "," + LAST_PASSWORD_CHANGE_DATE + "," + PROFILE_NAME + ; + bout.write(dat.getBytes()); + + } + bout.write("\n".getBytes()); + bout.write(("TotalRecords," + userCount + "," + (app.getMotsId() != null ? app.getMotsId():app.getMlAppName())).getBytes()); + bout.close(); + + + } catch (Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error While writing user data. " + e.getMessage())); + + } + finally{ + try { + if(rs != null){ + rs.close(); + } + if(stmt != null){ + stmt.close(); + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error closing user rs / stmt")); + + } + } + + } + + private void generateUserLogs(Connection con, App app){ + PreparedStatement stmt = null; + ResultSet rs = null; + try{ + + USER_LOG_QUERY = SystemProperties.getProperty("user.log.query"); + stmt = con.prepareStatement(USER_LOG_QUERY); + stmt.setInt(1, app.getAppId()); + rs = stmt.executeQuery(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + FileOutputStream fos = new java.io.FileOutputStream(this.getOutputFolder()+app.getMlAppName() + "_User_" + sdf.format(new Date()) + ".txt"); + BufferedOutputStream bout = new BufferedOutputStream(fos); + + String header = "CUID,AWID,APPLICATIONUSERID,FIRST_NAME,MIDDLE_INITIAL,LAST_NAME,LAST_LOGON_DATE,ACCOUNT_ACTIVATION_DATE,LAST_DATE_ACCOUNT_MODIFIED,LAST_PASSWORD_CHANGE_DATE,FULL_USER_NAME,NT_ID,EMAIL"; + bout.write(header.getBytes()); + int userCount = 2; //need to include header and footer in the count + while (rs.next()){ + userCount ++; + bout.write("\n".getBytes()); + String CUID = rs.getString("CUID") == null ? "" : rs.getString("CUID"); + String AWID = rs.getString("AWID") == null ? "" : rs.getString("AWID"); + String APPLICATIONUSERID = rs.getString("APPLICATIONUSERID") == null ? "" : rs.getString("APPLICATIONUSERID"); + String FIRST_NAME = rs.getString("FIRST_NAME") == null ? "" : rs.getString("FIRST_NAME"); + String MIDDLE_INITIAL = rs.getString("MIDDLE_INITIAL") == null ? "" : rs.getString("MIDDLE_INITIAL"); + String LAST_NAME = rs.getString("LAST_NAME") == null ? "" : rs.getString("LAST_NAME"); + String LAST_LOGON_DATE = rs.getString("LAST_LOGON_DATE") == null ? "" : rs.getString("LAST_LOGON_DATE"); + String ACCOUNT_ACTIVATION_DATE = rs.getString("ACCOUNT_ACTIVATION_DATE") == null ? "" : rs.getString("ACCOUNT_ACTIVATION_DATE"); + String LAST_DATE_ACCOUNT_MODIFIED = rs.getString("LAST_DATE_ACCOUNT_MODIFIED") == null ? "" : rs.getString("LAST_DATE_ACCOUNT_MODIFIED"); + String LAST_PASSWORD_CHANGE_DATE = rs.getString("LAST_PASSWORD_CHANGE_DATE") == null ? "" : rs.getString("LAST_PASSWORD_CHANGE_DATE"); + String FULL_USER_NAME = rs.getString("FULL_USER_NAME") == null ? "" : rs.getString("FULL_USER_NAME"); + String NT_ID = rs.getString("NT_ID") == null ? "" : rs.getString("NT_ID"); + String EMAIL = rs.getString("EMAIL") == null ? "" : rs.getString("EMAIL"); + String dat = + CUID + "," + AWID + "," + APPLICATIONUSERID + "," + + FIRST_NAME + "," + MIDDLE_INITIAL + "," + LAST_NAME + "," + LAST_LOGON_DATE + "," + + ACCOUNT_ACTIVATION_DATE + "," + + LAST_DATE_ACCOUNT_MODIFIED + "," + LAST_PASSWORD_CHANGE_DATE + "," + + FULL_USER_NAME + "," + NT_ID + "," + EMAIL + ; + bout.write(dat.getBytes()); + + } + bout.write("\n".getBytes()); + bout.write(("TotalRecords," + userCount + ",\"UADM USER DATA STANDARD 2.2\"").getBytes()); + bout.close(); + + + } catch (Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error While writing user data. " + e.getMessage())); + } + finally{ + try { + if(rs != null){ + rs.close(); + } + if(stmt != null){ + stmt.close(); + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error closing user rs / stmt")); + } + } + + } + + private void generateProfileLogs(Connection con, App app){ + PreparedStatement stmt = null; + ResultSet rs = null; + try{ + + PROFILE_LOG_QUERY = SystemProperties.getProperty("profile.log.query"); + stmt = con.prepareStatement(PROFILE_LOG_QUERY); + stmt.setInt(1, app.getAppId()); + rs = stmt.executeQuery(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + FileOutputStream fos = new java.io.FileOutputStream(this.getOutputFolder()+app.getMlAppName() + "_profile_" + sdf.format(new Date()) + ".txt"); + BufferedOutputStream bout = new BufferedOutputStream(fos); + + String header = "PROFILE_NAME,SECURITY_SETTINGS"; + bout.write(header.getBytes()); + int userCount = 2; //need to include header and footer in count= count + while (rs.next()){ + userCount ++; + bout.write("\n".getBytes()); + String PROFILE_NAME = rs.getString("PROFILE_NAME") == null ? "" : rs.getString("PROFILE_NAME"); + String SECURITY_SETTINGS = rs.getString("SECURITY_SETTINGS") == null ? "" : rs.getString("SECURITY_SETTINGS"); + String dat = + PROFILE_NAME + "," + SECURITY_SETTINGS ; + bout.write(dat.getBytes()); + + } + bout.write("\n".getBytes()); + bout.write(("TotalRecords," + userCount + ",\"UADM PROFILE DATA STANDARD 2.2\"").getBytes()); + bout.close(); + + + } catch (Exception e){ + System.out.println("UADM Audit Log. "+ new Date().toString() + ". Error While writing profile data. " + e.getMessage()); + e.printStackTrace(); + } + finally{ + try { + if(rs != null){ + rs.close(); + } + if(stmt != null){ + stmt.close(); + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error closing profile rs / stmt")); + } + } + + } + + private void generateUserProfileLogs(Connection con, App app){ + PreparedStatement stmt = null; + ResultSet rs = null; + try{ + USER_PROFILE_LOG_QUERY = SystemProperties.getProperty("user.profile.log.query"); + stmt = con.prepareStatement(USER_PROFILE_LOG_QUERY); + stmt.setInt(1, app.getAppId()); + rs = stmt.executeQuery(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + FileOutputStream fos = new java.io.FileOutputStream(this.getOutputFolder()+app.getMlAppName() + "_userprofiles_" + sdf.format(new Date()) + ".txt"); + BufferedOutputStream bout = new BufferedOutputStream(fos); + + String header = "CUID,AWID,APPLICATIONUSERID,PROFILE_NAME"; + bout.write(header.getBytes()); + int userCount = 2; //need to include header and footer in count= count + while (rs.next()){ + userCount ++; + bout.write("\n".getBytes()); + String CUID = rs.getString("CUID") == null ? "" : rs.getString("CUID"); + String AWID = rs.getString("AWID") == null ? "" : rs.getString("AWID"); + String APPLICATIONUSERID = rs.getString("APPLICATIONUSERID") == null ? "" : rs.getString("APPLICATIONUSERID"); + String PROFILE_NAME = rs.getString("PROFILE_NAME") == null ? "" : rs.getString("PROFILE_NAME"); + String dat = + CUID + "," + AWID + "," + APPLICATIONUSERID + "," + PROFILE_NAME ; + bout.write(dat.getBytes()); + + } + bout.write("\n".getBytes()); + bout.write(("TotalRecords," + userCount + ",\"UADM USER PROFILE DATA STANDARD 2.2\"").getBytes()); + bout.close(); + + + } catch (Exception e){ + System.out.println("UADM Audit Log. "+ new Date().toString() + ". Error While writing user profile data. " + e.getMessage()); + e.printStackTrace(); + } + finally{ + try { + if(rs != null){ + rs.close(); + } + if(stmt != null){ + stmt.close(); + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, ("UADM Audit Log. "+ new Date().toString() + ". Error closing user profile rs / stmt")); + } + } + + } + + @Override + protected void executeInternal(JobExecutionContext context) + throws JobExecutionException { + DataSource dataSource = (DataSource)context.getMergedJobDataMap().get("dataSource"); + + try { + setConnection(dataSource.getConnection()); + } catch (SQLException e) { + logger.error(EELFLoggerDelegate.errorLogger, (e.getMessage())); + + return; + } + logger.info(EELFLoggerDelegate.errorLogger, (" Generate MyLogins feeds")); + + generateLogs(); + + } + + public Connection getConnection() { + return connection; + } + + public void setConnection(Connection connection) { + this.connection = connection; + } + + + +} |