From 759e9e75fc0b5978f98f901744c87c0c8d5ef4fd Mon Sep 17 00:00:00 2001 From: mravula Date: Tue, 5 May 2020 12:20:30 -0400 Subject: Raptor backend java API Code(Analytics), UI Code(Overlay) and pages component in os project Issue-ID: PORTAL-902 Change-Id: Id297d9493a77e6816ed0f2a82c15b2eaa1e57a72 Signed-off-by: Sudarshan Kumar --- .../portalsdk/analytics/util/AppConstants.java | 1 + .../portalsdk/analytics/util/CachingUtils.java | 96 +++++++++++ .../onap/portalsdk/analytics/util/EmailUtils.java | 183 +++++++++++++++++++++ .../portalsdk/analytics/util/MailAttachment.java | 76 +++++++++ .../onap/portalsdk/analytics/util/RemDbInfo.java | 76 +++------ 5 files changed, 383 insertions(+), 49 deletions(-) create mode 100644 ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java create mode 100644 ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/EmailUtils.java create mode 100644 ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/MailAttachment.java (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util') diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java index 7c99e046..0002ea5b 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java @@ -625,6 +625,7 @@ public class AppConstants { public static final String MYSQL = "mysql"; public static final String ORACLE = "oracle"; public static final String POSTGRESQL = "postgresql"; + public static final String PAGE_DOWNLOAD = "page_download"; // COLORS to be used in Excel public static String Aqua = "#00FFFF"; diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java new file mode 100644 index 00000000..66bfb697 --- /dev/null +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java @@ -0,0 +1,96 @@ + +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.portalsdk.analytics.util; + +import org.apache.commons.collections4.map.LRUMap; + +public class CachingUtils { + + private static LRUMap pageSQLCahce; + private static LRUMap reportSqlCache; + private static LRUMap totalRowsCount; + + public static String getPageSql(String sql) { + return pageSQLCahce.get(sql); + + } + + public static void putPageSql(String sql, String pageSql) { + if (pageSQLCahce == null) { + pageSQLCahce = new LRUMap<>(); + } + pageSQLCahce.put(sql, pageSql); + } + + public static void putReportSql(String sql, String reportSql) { + if (reportSqlCache == null) { + reportSqlCache = new LRUMap<>(); + } + reportSqlCache.put(sql, reportSql); + } + + public static String getReportSql(String sql) { + return reportSqlCache.get(sql); + } + + public static boolean isReportSqlExists(String sql) { + if(reportSqlCache != null) { + return reportSqlCache.containsKey(sql); + } + return false; + } + + public static int getTotalRowsCount(String sql) { + return totalRowsCount.get(sql); + } + + public static void cacheTotalRowCount(String sql, int count) { + if (totalRowsCount == null) { + totalRowsCount = new LRUMap<>(); + } + totalRowsCount.put(sql, count); + } + + public static boolean isTotalCountAvailable(String sql) { + if (totalRowsCount != null) { + return totalRowsCount.containsKey(sql); + } + return false; + } +} diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/EmailUtils.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/EmailUtils.java new file mode 100644 index 00000000..61ac90c2 --- /dev/null +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/EmailUtils.java @@ -0,0 +1,183 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.portalsdk.analytics.util; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; + +import org.springframework.mail.javamail.JavaMailSenderImpl; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.mail.javamail.MimeMessagePreparator; +import org.onap.portalsdk.analytics.error.RaptorException; +import org.onap.portalsdk.analytics.system.AppUtils; +import org.onap.portalsdk.core.util.SystemProperties; +import org.springframework.core.io.FileSystemResource; + + +public class EmailUtils { + + public EmailUtils(){ + super(); + mailSender = new JavaMailSenderImpl(); + mailSender.setProtocol("smtp"); + mailSender.setHost(SystemProperties.getProperty(SystemProperties.MAIL_SERVER_HOST)); + mailSender.setPort(Integer.parseInt(SystemProperties.getProperty(SystemProperties.MAIL_SERVER_PORT))); + } + + private JavaMailSenderImpl mailSender; + + public void sendEmailWithAttachment(String subj, String mesg, String[] toList, String[] ccList, String[] filePathAndName) throws RaptorException { + String from = AppUtils.getDefaultEmailSender(); + List mailAttachList = new ArrayList(); + + for (int i = 0; i < filePathAndName.length; i++) { + MailAttachment mailAttachment = new MailAttachment(); + mailAttachment.setAttachmentType(MailAttachment.FILE_ATTACHMENT); + + String fileName = filePathAndName[i].substring(filePathAndName[i].lastIndexOf("/") + 1); + mailAttachment.setFileName(fileName); + mailAttachment.setFilePathName(filePathAndName[i]); + + mailAttachList.add(mailAttachment); + } + + notifyWithAttachments(mesg, toList, from, subj, ccList, null, mailAttachList, true); + + } + + public void sendEmailNoAttachment(String subj, String mesg, String[] toList, String[] ccList) throws RaptorException{ + String from = AppUtils.getDefaultEmailSender(); + notify(mesg, toList, from, subj, ccList, null, true); + } + + + public void notify(String message, String to, String from, boolean contentTypeHtml) { + notify(message, to, from, null, null, null, contentTypeHtml); + } + + public void notify(String message, String to, String from, String subject, boolean contentTypeHtml) { + notify(message, to, from, subject, null, null, contentTypeHtml); + } + + public void notify(String message, String to, String from, String subject, String cc, String bcc, boolean contentTypeHtml) { + String[] toList = new String[1]; + String[] ccList = null; + String[] bccList = null; + if (cc != null) { + ccList = new String[1]; + ccList[0] = cc; + } + if (bcc != null) { + bccList = new String[1]; + bccList[0] = bcc; + } + toList[0] = to; + notify(message, toList, from, subject, ccList, bccList, contentTypeHtml); + } + + public void notify(String message, String[] to, String from, String subject, String[] cc, String[] bcc, boolean contentTypeHtml) { + final MimeMessagePreparator messagePreparator = getMessagePreparator(message, to, from, subject, cc, bcc, null, contentTypeHtml); + Thread mailerThread = new Thread() { + public void run() { + getMailSender().send(messagePreparator); + } + }; + mailerThread.start(); + } + + public void notifyWithAttachments(String message, String[] to, String from, String subject, String[] cc, + String[] bcc, List mailAttachments, boolean contentTypeHtml) { + final MimeMessagePreparator messagePreparator = getMessagePreparator(message, to, from, subject, cc, bcc, + mailAttachments, contentTypeHtml); + Thread mailerThread = new Thread() { + public void run() { + getMailSender().send(messagePreparator); + } + }; + mailerThread.start(); + } + + private static MimeMessagePreparator getMessagePreparator(final String message, final String[] to, final String from, + final String subject, final String[] cc, final String[] bcc, final List mailAttachments, final boolean contentTypeHtml) { + final MimeMessagePreparator messagePreparator = new MimeMessagePreparator() { + public void prepare(MimeMessage mimeMessage) throws MessagingException { + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); + helper.setFrom(from); + helper.setTo(to); + helper.setText(message, contentTypeHtml); + if (subject != null) { + helper.setSubject(subject); + } + if (cc != null) { + System.out.println(cc); + helper.setCc(cc); + } + if (bcc != null) { + helper.setBcc(bcc); + } + if (mailAttachments != null && mailAttachments.size() > 0) { + for (int i = 0; i < mailAttachments.size(); i++) { + MailAttachment mailAttachment = (MailAttachment) mailAttachments.get(i); + if (mailAttachment.getAttachmentType() == MailAttachment.FILE_ATTACHMENT) { + helper.addAttachment(mailAttachment.getFileName(), new FileSystemResource(new File(mailAttachment + .getFilePathName()))); + } else if (mailAttachment.getAttachmentType() == MailAttachment.INLINE_ATTACHMENT) { + helper.addInline(mailAttachment.getFileName(), new FileSystemResource(new File(mailAttachment + .getFilePathName()))); + } + } + } + } + }; + return messagePreparator; + } + + public JavaMailSenderImpl getMailSender() { + return mailSender; + } + + public void setMailSender(JavaMailSenderImpl mailSender) { + this.mailSender = mailSender; + } + + +} diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/MailAttachment.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/MailAttachment.java new file mode 100644 index 00000000..82fa6ade --- /dev/null +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/MailAttachment.java @@ -0,0 +1,76 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.portalsdk.analytics.util; + +public class MailAttachment { + public static int INLINE_ATTACHMENT = 1; + public static int FILE_ATTACHMENT = 2; + + private String fileName; + private String filePathName; + private int attachmentType = 1; + + public MailAttachment() { + super(); + // TODO Auto-generated constructor stub + } + + public int getAttachmentType() { + return attachmentType; + } + + public void setAttachmentType(int attachmentType) { + this.attachmentType = attachmentType; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFilePathName() { + return filePathName; + } + + public void setFilePathName(String filePath) { + this.filePathName = filePath; + } +} diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/RemDbInfo.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/RemDbInfo.java index 57c1e31d..56e117f3 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/RemDbInfo.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/RemDbInfo.java @@ -39,53 +39,35 @@ package org.onap.portalsdk.analytics.util; import java.sql.Connection; import java.util.HashMap; - -import javax.servlet.ServletContext; - import org.onap.portalsdk.analytics.system.DbUtils; import org.onap.portalsdk.analytics.system.Globals; -import org.onap.portalsdk.analytics.system.fusion.adapter.RaptorAdapter; -import org.onap.portalsdk.analytics.system.fusion.adapter.SpringContext; - +import org.springframework.stereotype.Component; import com.mchange.v2.c3p0.ComboPooledDataSource; +@Component public class RemDbInfo { - private HashMap remDbMap = null; - private HashMap remDbTypeMap = null; - private HashMap remDbConnectionMap = null; - - public RemDbInfo() throws Exception { - if (remDbMap == null) { - load(); - } - } + private static HashMap remDbMap = null; + private static HashMap remDbTypeMap = null; + private static HashMap remDbConnectionMap = null; - private RaptorAdapter raptorAdapter; + public static void load() { + if(remDbMap!=null) + return; - - public void initializeDbUtils(ServletContext servletContext) { - raptorAdapter = (RaptorAdapter)SpringContext.getApplicationContext().getBean("raptorAdapter"); - } // initializeDbUtils - - public void load() throws Exception { remDbMap = new HashMap(); remDbTypeMap = new HashMap(); remDbConnectionMap = new HashMap(); try { - //String query = " SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE, rownum id FROM SCHEMA_INFO a " + - // " where schema_id = 'local' union " + - // " SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE, (rownum+1) id FROM SCHEMA_INFO a " + - // " where schema_id <> 'local' order by id "; String query = Globals.getRemoteDbSchemaSql(); DataSet ds = null; Globals.getDbUtils(); ds = DbUtils.executeQuery(query); - String prefix = "", desc = "", dbType = "", connectionUrl = "", username = "", password = "", driver_class = ""; + String dbId = "", desc = "", dbType = "", connectionUrl = "", username = "", password = "", driver_class = ""; if(ds.getRowCount() > 0) { for (int i = 0; i < ds.getRowCount(); i++) { - prefix = ds.getItem(i, 0); + dbId = ds.getItem(i, 0); desc = ds.getItem(i, 1); dbType = ds.getItem(i, 2); connectionUrl = ds.getItem(i, 3); @@ -98,44 +80,40 @@ public class RemDbInfo { cpds.setJdbcUrl( connectionUrl); cpds.setUser(username); cpds.setPassword(password); - - - - - remDbMap.put(prefix, desc); - remDbTypeMap.put(prefix, dbType); - remDbConnectionMap.put(prefix, cpds); - } - } else { - remDbMap.put("local", "local"); - remDbTypeMap.put("local", Globals.getDBType()); - remDbConnectionMap.put("local", raptorAdapter.getConnection()); + cpds.setMinPoolSize(Integer.parseInt(ds.getItem(i, 7))); + cpds.setMaxPoolSize(Integer.parseInt(ds.getItem(i, 8))); + cpds.setIdleConnectionTestPeriod(Integer.parseInt(ds.getItem(i, 9))); + + remDbMap.put(dbId, desc); + remDbTypeMap.put(dbId, dbType); + remDbConnectionMap.put(dbId, cpds); + } } } catch (Exception e) {} } - public String getDesc(String prefix) { - if ((remDbMap != null) && (remDbMap.containsKey(prefix))) { - return (String) remDbMap.get(prefix); + public String getDesc(String dbId) { + if ((remDbMap != null) && (remDbMap.containsKey(dbId))) { + return (String) remDbMap.get(dbId); } return ""; } - public String getDBType(String prefix) { - if ((remDbTypeMap != null) && (remDbTypeMap.containsKey(prefix))) { - return (String) remDbTypeMap.get(prefix); + public String getDBType(String dbId) { + if ((remDbTypeMap != null) && (remDbTypeMap.containsKey(dbId))) { + return (String) remDbTypeMap.get(dbId); } return ""; } - public Connection getDBConnection(String prefix) { - if ((remDbConnectionMap != null) && (remDbConnectionMap.containsKey(prefix))) { + public Connection getDBConnection(String dbId) { + if ((remDbConnectionMap != null) && (remDbConnectionMap.containsKey(dbId))) { try { - return ((ComboPooledDataSource) remDbConnectionMap.get(prefix)).getConnection(); + return ((ComboPooledDataSource) remDbConnectionMap.get(dbId)).getConnection(); } catch (Exception ex) { ex.printStackTrace(); return null; -- cgit 1.2.3-korg