aboutsummaryrefslogtreecommitdiffstats
path: root/vid/src/main/java/org/openecomp/vid/scheduler
diff options
context:
space:
mode:
Diffstat (limited to 'vid/src/main/java/org/openecomp/vid/scheduler')
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/LogJob.java49
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/LogRegistry.java59
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedJob.java434
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/MyLoginsFeedRegistry.java67
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/Register.java93
-rw-r--r--vid/src/main/java/org/openecomp/vid/scheduler/RegistryAdapter.java111
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;
+ }
+
+}
+