diff options
Diffstat (limited to 'vid/src/main/java/org/openecomp/vid/scheduler')
6 files changed, 813 insertions, 0 deletions
diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/LogJob.java b/vid/src/main/java/org/openecomp/vid/scheduler/LogJob.java new file mode 100644 index 000000000..05e7f1f96 --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/LogJob.java @@ -0,0 +1,49 @@ +/*- + * ============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 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.vid.conf.ExternalAppConfig; + +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class LogJob extends QuartzJobBean { + + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LogJob.class); + + + @Override + protected void executeInternal(JobExecutionContext ctx) + throws JobExecutionException { + // JobDataMap dataMap = ctx.getJobDetail().getJobDataMap(); + //int cnt = dataMap.getInt(""); + // JobKey jobKey = ctx.getJobDetail().getKey(); + logger.info(EELFLoggerDelegate.errorLogger, (Runtime.getRuntime().maxMemory() + " " + Runtime.getRuntime().maxMemory())); + + } + +} diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/LogRegistry.java b/vid/src/main/java/org/openecomp/vid/scheduler/LogRegistry.java new file mode 100644 index 000000000..2d52b5868 --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/LogRegistry.java @@ -0,0 +1,59 @@ +/*- + * ============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.text.ParseException; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.quartz.CronTriggerFactoryBean; +import org.springframework.scheduling.quartz.JobDetailFactoryBean; +import org.springframework.stereotype.Component; + +import org.openecomp.portalsdk.core.scheduler.CronRegistry; +import org.openecomp.portalsdk.core.util.SystemProperties; + +@Component +@DependsOn({ "systemProperties" }) +public class LogRegistry extends CronRegistry { + + private static final String groupName = "AppGroup"; + private static final String jobName = "LogJob"; + private static final String triggerName = "LogTrigger"; + + // @Autowired + // private SystemProperties systemProperties; + + // @Bean + public JobDetailFactoryBean jobDetailFactoryBean() { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("units", "bytes"); + return jobDetailFactoryBean(groupName, jobName, LogJob.class, map); + } + + // @Bean + public CronTriggerFactoryBean cronTriggerFactoryBean() throws ParseException { + // "0 * * * * ? * + return cronTriggerFactoryBean(groupName, triggerName, SystemProperties.getProperty(SystemProperties.LOG_CRON)); + } + +} 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; + } + + + +} diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedRegistry.java b/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedRegistry.java new file mode 100644 index 000000000..ea4583ebc --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedRegistry.java @@ -0,0 +1,67 @@ +/*- + * ============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.text.ParseException; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.quartz.CronTriggerFactoryBean; +import org.springframework.scheduling.quartz.JobDetailFactoryBean; +import org.springframework.stereotype.Component; + +import org.openecomp.portalsdk.core.scheduler.CronRegistry; +import org.openecomp.portalsdk.core.util.SystemProperties; +import com.mchange.v2.c3p0.ComboPooledDataSource; + +@Component +@DependsOn({ "dataSource", "systemProperties" }) +public class MyLoginsFeedRegistry extends CronRegistry { + + // @Autowired + // private SystemProperties systemProperties; + + @Autowired + public MyLoginsFeedRegistry(ComboPooledDataSource dataSource) { + super(dataSource); + } + + private static final String groupName = "AppGroup"; + private static final String jobName = "MyLoginsFeedJob"; + private static final String triggerName = "MyLoginsFeedTrigger"; + + // @Bean + public JobDetailFactoryBean jobDetailFactoryBean() { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("dataSource", getDataSource()); + return jobDetailFactoryBean(groupName, jobName, MyLoginsFeedJob.class, map); + } + + // @Bean + public CronTriggerFactoryBean cronTriggerFactoryBean() throws ParseException { + // "0 * * * * ? *" + return cronTriggerFactoryBean(groupName, triggerName, + SystemProperties.getProperty(SystemProperties.MYLOGINS_FEED_CRON)); + } + +} diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/Register.java b/vid/src/main/java/org/openecomp/vid/scheduler/Register.java new file mode 100644 index 000000000..6ce4d1b9e --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/Register.java @@ -0,0 +1,93 @@ +/*- + * ============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.util.ArrayList; +import java.util.List; + +import org.quartz.Trigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.DependsOn; +import org.springframework.stereotype.Component; + +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.openecomp.portalsdk.core.scheduler.Registerable; +import org.openecomp.portalsdk.core.util.SystemProperties; + + +@Component +@DependsOn({"logRegistry", "myLoginsFeedRegistry", "systemProperties"}) +public class Register implements Registerable { + + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(Register.class); + + + private List<Trigger> scheduleTriggers = new ArrayList<Trigger>(); + Trigger trigger[] = new Trigger[1]; + + + @Autowired + private LogRegistry logRegistry; + + @Autowired + private MyLoginsFeedRegistry myLoginsFeedRegistry; + + @Override + public Trigger[] getTriggers() { + return getScheduleTriggers().toArray(trigger); + } + + @Override + public void registerTriggers() { + // if the property value is not available; the cron will not be added and can be ignored. its safe to ignore the exceptions + try { + if(SystemProperties.getProperty(SystemProperties.LOG_CRON) != null) + getScheduleTriggers().add(logRegistry.getTrigger()); + + } catch(IllegalStateException ies) { + logger.info(EELFLoggerDelegate.errorLogger, ("Log Cron not available")); + } + + try { + if(SystemProperties.getProperty(SystemProperties.MYLOGINS_FEED_CRON) != null) + getScheduleTriggers().add(myLoginsFeedRegistry.getTrigger()); + + } catch(IllegalStateException ies) { + logger.info(EELFLoggerDelegate.errorLogger, ("MyLogins Cron not available")); + } + + } + + + public List<Trigger> getScheduleTriggers() { + return scheduleTriggers; + } + + public void setScheduleTriggers(List<Trigger> scheduleTriggers) { + this.scheduleTriggers = scheduleTriggers; + } + + + + + + +} diff --git a/vid/src/main/java/org/openecomp/vid/scheduler/RegistryAdapter.java b/vid/src/main/java/org/openecomp/vid/scheduler/RegistryAdapter.java new file mode 100644 index 000000000..e8068cf8d --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/scheduler/RegistryAdapter.java @@ -0,0 +1,111 @@ +/*- + * ============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.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.quartz.Trigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.springframework.stereotype.Component; + +import org.openecomp.portalsdk.core.scheduler.Registerable; +import org.openecomp.portalsdk.workflow.services.WorkflowScheduleService; + +/** + * TODO REFACTOR + * moved from org.openecomp.portalsdk.core.scheduler + * to org.openecomp.portalsdk.scheduler + * + */ +@Component +public class RegistryAdapter { + + @Autowired + private Registerable registry; + + @Autowired + private WorkflowScheduleService workflowScheduleService; + + private SchedulerFactoryBean schedulerBean; + + Trigger trigger[] = new Trigger[1]; + + public Trigger[] getTriggers() { + + registry.registerTriggers(); + + List<Trigger> allTriggers = new ArrayList<Trigger>(); + + List<Trigger> coreTriggers = addCoreTriggers(); + final Trigger[] extTriggerArray = registry.getTriggers(); + + allTriggers.addAll(Arrays.asList(extTriggerArray)); + allTriggers.addAll(coreTriggers); + + return allTriggers.toArray(trigger); + + + } + + + public List<Trigger> addCoreTriggers() { + //On startup of the application after crash recovery, invoke workflow schedule trigger + List<Trigger> triggers = getWorkflowScheduleService().triggerWorkflowScheduling(); + return triggers; + } + + + public void setSchedulerBean(SchedulerFactoryBean _schedulerBean) { + schedulerBean = _schedulerBean; + + } + + public SchedulerFactoryBean getSchedulerBean() { + return schedulerBean; + + } + + + public Registerable getRegistry() { + return registry; + } + + + public void setRegistry(Registerable registry) { + this.registry = registry; + } + + + public WorkflowScheduleService getWorkflowScheduleService() { + return workflowScheduleService; + } + + + public void setWorkflowScheduleService( + WorkflowScheduleService workflowScheduleService) { + this.workflowScheduleService = workflowScheduleService; + } + +} + |