// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataquality.helpers; import java.io.File; import java.text.ParseException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IFolder; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.util.EList; import org.talend.commons.utils.WorkspaceUtils; import org.talend.cwm.helper.ConnectionHelper; import org.talend.cwm.helper.ResourceHelper; import org.talend.cwm.helper.TaggedValueHelper; import org.talend.dataquality.PluginConstant; import org.talend.dataquality.analysis.Analysis; import org.talend.dataquality.analysis.AnalysisFactory; import org.talend.dataquality.analysis.AnalysisType; import org.talend.dataquality.analysis.ExecutionInformations; import org.talend.dataquality.reports.AnalysisMap; import org.talend.dataquality.reports.ReportsFactory; import org.talend.dataquality.reports.TdReport; import org.talend.utils.properties.PropertiesLoader; import org.talend.utils.properties.TypedProperties; import orgomg.cwm.objectmodel.core.TaggedValue; import orgomg.cwmx.analysis.informationreporting.Report; /** * DOC scorreia class global comment. Detailled comment */ public final class ReportHelper { public static final String HSQL_DEFAULT_DBTYPE = "HSQL"; //$NON-NLS-1$ public static final String DOT_MARK = "."; //$NON-NLS-1$ // ~ADD mzhao 2009-02-05 public static final String BASIC = "Basic"; // TODO externalize public static final String EVOLUTION = "Evolution"; // TODO externalize public static final String USER_DEFINED = "User defined"; // TODO externalize private static final String DEFAULT = "Default"; //$NON-NLS-1$ private static final TypedProperties PROPS = PropertiesLoader .getProperties(ReportHelper.class, "predefined_jrxml.properties"); //$NON-NLS-1$ /** * The report types. * * MOD mzhao 2009-02-19 MOD mzhao 2009-04-15 jrxml template files changed its location. */ public static enum ReportType { // Analysis: multi column BASIC_MUTICOLUMN(BASIC, PROPS.getProperty("BASIC_MUTICOLUMN")), //$NON-NLS-1$ EVOLUTION_MUTICOLUMN(EVOLUTION, PROPS.getProperty("EVOLUTION_MUTICOLUMN")), //$NON-NLS-1$ // Analysis: connection BASIC_CONNECTION(BASIC, PROPS.getProperty("BASIC_CONNECTION")), //$NON-NLS-1$ BASIC_CONNECTION_ORACLE(BASIC, PROPS.getProperty("BASIC_CONNECTION_ORACLE")), //$NON-NLS-1$ EVOLUTION_CONNECTION(EVOLUTION, PROPS.getProperty("EVOLUTION_CONNECTION")), //$NON-NLS-1$ EVOLUTION_CONNECTION_ORACLE(EVOLUTION, PROPS.getProperty("EVOLUTION_CONNECTION_ORACLE")), //$NON-NLS-1$ // EVOLUTION_CONNECTION(BASIC, "/reports/column/report_04.jrxml"), // Analysis: schema BASIC_SCHEMA(BASIC, PROPS.getProperty("BASIC_SCHEMA")), //$NON-NLS-1$ BASIC_SCHEMA_ORACLE(BASIC, PROPS.getProperty("BASIC_SCHEMA_ORACLE")), //$NON-NLS-1$ EVOLUTION_SCHEMA(EVOLUTION, PROPS.getProperty("EVOLUTION_SCHEMA")), //$NON-NLS-1$ EVOLUTION_SCHEMA_ORACLE(EVOLUTION, PROPS.getProperty("EVOLUTION_SCHEMA_ORACLE")), //$NON-NLS-1$ // TODO assign type to specific jrxml // Analysis: catalog BASIC_CATALOG(BASIC, PROPS.getProperty("BASIC_CATALOG")), //$NON-NLS-1$ BASIC_CATALOG_ORACLE(BASIC, PROPS.getProperty("BASIC_CATALOG_ORACLE")), //$NON-NLS-1$ EVOLUTION_CATALOG(EVOLUTION, PROPS.getProperty("EVOLUTION_CATALOG")), //$NON-NLS-1$ EVOLUTION_CATALOG_ORACLE(EVOLUTION, PROPS.getProperty("EVOLUTION_CATALOG_ORACLE")), //$NON-NLS-1$ // Analysis: table BASIC_TABLE(BASIC, PROPS.getProperty("BASIC_TABLE")), //$NON-NLS-1$ EVOLUTION_TABLE(EVOLUTION, PROPS.getProperty("EVOLUTION_TABLE")), //$NON-NLS-1$ // Analysis: column comparison BASIC_COLUMNS_COMPARISON(BASIC, PROPS.getProperty("BASIC_COLUMNS_COMPARISON")), //$NON-NLS-1$ EVOLUTION_COLUMNS_COMPARISON(EVOLUTION, PROPS.getProperty("EVOLUTION_COLUMNS_COMPARISON")), //$NON-NLS-1$ // Analysis: column correation BASIC_COLUMNS_CORRELATION(BASIC, PROPS.getProperty("BASIC_COLUMNS_CORRELATION")), //$NON-NLS-1$ EVOLUTION_COLUMNS_CORRELATION(EVOLUTION, PROPS.getProperty("EVOLUTION_COLUMNS_CORRELATION")), //$NON-NLS-1$ // Analysis: Functional Dependency analysis. BASIC_TABLE_FUNCTIONAL_DEPENDENCY(BASIC, PROPS.getProperty("BASIC_TABLE_FUNCTIONAL_DEPENDENCY")), //$NON-NLS-1$ EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY(EVOLUTION, PROPS.getProperty("EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY")), //$NON-NLS-1$ // Analysis: Column set analysis BASIC_COLUMN_SET(BASIC, PROPS.getProperty("BASIC_COLUMN_SET")), //$NON-NLS-1$ EVOLUTION_COLUMN_SET(EVOLUTION, PROPS.getProperty("EVOLUTION_COLUMN_SET")), //$NON-NLS-1$ // Analysis: match analysis BASIC_MATCH_ANALYSIS(BASIC, PROPS.getProperty("BASIC_MATCH_ANALYSIS")), //$NON-NLS-1$ EVOLUTION_MATCH_ANALYSIS(EVOLUTION, PROPS.getProperty("EVOLUTION_MATCH_ANALYSIS")), //$NON-NLS-1$ USER_MADE(USER_DEFINED, null); // for the user to set his own file path private String label; /** * Getter for label. * * @return the label */ public String getLabel() { return this.label; } /** * Getter for jrxmlFilename. * * @return the jrxmlFilename */ public String getJrxmlFilename() { return this.jrxmlFilename; } private String jrxmlFilename; /** * Sets the jrxmlFilename. * * @param jrxmlFilename the jrxmlFilename to set */ public void setJrxmlFilename(String jrxmlFilename) { this.jrxmlFilename = jrxmlFilename; } ReportType(String lab, String filename) { this.label = lab; this.jrxmlFilename = filename; } public static List<String> getLabels() { List<String> list = new ArrayList<String>(); for (ReportType t : ReportType.values()) { if (!list.contains(t.getLabel())) { list.add(t.getLabel()); } } return list; } /** * DOC qzhang Comment method "getReportType". MOD mzhao 2009-02-19 * * @param text * @return */ public static ReportType getReportType(AnalysisType anaType, String text) { if (USER_MADE.getLabel().equals(text)) { return USER_MADE; } // Multi column if (anaType == null) { return null; } if (anaType.getName().equals(AnalysisType.MULTIPLE_COLUMN.getName())) { if (BASIC_MUTICOLUMN.getLabel().equals(text)) { return BASIC_MUTICOLUMN; } else if (EVOLUTION_MUTICOLUMN.getLabel().equals(text)) { return EVOLUTION_MUTICOLUMN; } } else if (anaType.getName().equals(AnalysisType.CONNECTION.getName())) { if (BASIC_CONNECTION.getLabel().equals(text)) { return BASIC_CONNECTION; } else if (EVOLUTION_CONNECTION.getLabel().equals(text)) { return EVOLUTION_CONNECTION; } } else if (anaType.getName().equals(AnalysisType.SCHEMA.getName())) { if (BASIC_SCHEMA.getLabel().equals(text)) { return BASIC_SCHEMA; } else if (EVOLUTION_SCHEMA.getLabel().equals(text)) { return EVOLUTION_SCHEMA; } } else if (anaType.getName().equals(AnalysisType.CATALOG.getName())) { if (BASIC_CATALOG.getLabel().equals(text)) { return BASIC_CATALOG; } else if (EVOLUTION_CATALOG.getLabel().equals(text)) { return EVOLUTION_CATALOG; } } else if (anaType.getName().equals(AnalysisType.TABLE.getName())) { if (BASIC_TABLE.getLabel().equals(text)) { return BASIC_TABLE; } else if (EVOLUTION_TABLE.getLabel().equals(text)) { return EVOLUTION_TABLE; } } else if (anaType.getName().equals(AnalysisType.COLUMNS_COMPARISON.getName())) { if (BASIC_COLUMNS_COMPARISON.getLabel().equals(text)) { return BASIC_COLUMNS_COMPARISON; } else if (EVOLUTION_COLUMNS_COMPARISON.getLabel().equals(text)) { return EVOLUTION_COLUMNS_COMPARISON; } } else if (anaType.getName().equals(AnalysisType.COLUMN_CORRELATION.getName())) { if (BASIC_COLUMNS_CORRELATION.getLabel().equals(text)) { return BASIC_COLUMNS_CORRELATION; } else if (EVOLUTION_COLUMNS_CORRELATION.getLabel().equals(text)) { return EVOLUTION_COLUMNS_CORRELATION; } } else if (anaType.getName().equals(AnalysisType.TABLE_FUNCTIONAL_DEPENDENCY.getName())) { if (BASIC_TABLE_FUNCTIONAL_DEPENDENCY.getLabel().equals(text)) { return BASIC_TABLE_FUNCTIONAL_DEPENDENCY; } else if (EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY.getLabel().equals(text)) { return EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY; } } else if (anaType.getName().equals(AnalysisType.COLUMN_SET.getName())) { // MOD mzhao 10706, column set analysis if (BASIC_COLUMN_SET.getLabel().equals(text)) { return BASIC_COLUMN_SET; } else if (EVOLUTION_COLUMN_SET.getLabel().equals(text)) { return EVOLUTION_COLUMN_SET; } } else if (anaType.getName().equals(AnalysisType.MATCH_ANALYSIS.getName())) { // ADD msjian TDQ-7692, match analysis if (BASIC_MATCH_ANALYSIS.getLabel().equals(text)) { return BASIC_MATCH_ANALYSIS; } else if (EVOLUTION_MATCH_ANALYSIS.getLabel().equals(text)) { return EVOLUTION_MATCH_ANALYSIS; } } return null; } // public static ReportType getReportType(AnalysisType anaType, String text, String dbType) { // // MOD klliu 16372 add Basic and evolution to fit oracle type // if (USER_MADE.getLabel().equals(text)) { // return USER_MADE; // } // // Multi column // if (anaType.getName().equals(AnalysisType.MULTIPLE_COLUMN.getName())) { // if (BASIC_MUTICOLUMN.getLabel().equals(text)) { // return BASIC_MUTICOLUMN; // } else if (EVOLUTION_MUTICOLUMN.getLabel().equals(text)) { // return EVOLUTION_MUTICOLUMN; // } // } else if (anaType.getName().equals(AnalysisType.CONNECTION.getName())) { // if (StringUtils.equalsIgnoreCase(dbType, "Oracle with SID")) { // if (BASIC_CONNECTION_ORACLE.getLabel().equals(text)) { // return BASIC_CONNECTION_ORACLE; // } else if (EVOLUTION_CONNECTION_ORACLE.getLabel().equals(text)) { // return EVOLUTION_CONNECTION_ORACLE; // } // } else { // if (BASIC_CONNECTION.getLabel().equals(text)) { // return BASIC_CONNECTION; // } else if (EVOLUTION_CONNECTION.getLabel().equals(text)) { // return EVOLUTION_CONNECTION; // } // } // } else if (anaType.getName().equals(AnalysisType.SCHEMA.getName())) { // if (StringUtils.equalsIgnoreCase(dbType, "Oracle with SID")) { // if (BASIC_SCHEMA_ORACLE.getLabel().equals(text)) { // return BASIC_SCHEMA_ORACLE; // } else if (EVOLUTION_SCHEMA_ORACLE.getLabel().equals(text)) { // return EVOLUTION_SCHEMA_ORACLE; // } // } else { // if (BASIC_SCHEMA.getLabel().equals(text)) { // return BASIC_SCHEMA; // } else if (EVOLUTION_SCHEMA.getLabel().equals(text)) { // return EVOLUTION_SCHEMA; // } // } // } else if (anaType.getName().equals(AnalysisType.CATALOG.getName())) { // if (StringUtils.equalsIgnoreCase(dbType, "Oracle with SID")) { // if (BASIC_CATALOG_ORACLE.getLabel().equals(text)) { // return BASIC_CATALOG_ORACLE; // } else if (EVOLUTION_CATALOG_ORACLE.getLabel().equals(text)) { // return EVOLUTION_CATALOG_ORACLE; // } // } else { // if (BASIC_CATALOG.getLabel().equals(text)) { // return BASIC_CATALOG; // } else if (EVOLUTION_CATALOG.getLabel().equals(text)) { // return EVOLUTION_CATALOG; // } // } // } else if (anaType.getName().equals(AnalysisType.TABLE.getName())) { // if (BASIC_TABLE.getLabel().equals(text)) { // return BASIC_TABLE; // } else if (EVOLUTION_TABLE.getLabel().equals(text)) { // return EVOLUTION_TABLE; // } // } else if (anaType.getName().equals(AnalysisType.COLUMNS_COMPARISON.getName())) { // // MOD qiongli 2011-6-22 bug 16570,use the same jrxml between oracle and mysql // if (BASIC_COLUMNS_COMPARISON.getLabel().equals(text)) { // return BASIC_COLUMNS_COMPARISON; // } else if (EVOLUTION_COLUMNS_COMPARISON.getLabel().equals(text)) { // return EVOLUTION_COLUMNS_COMPARISON; // } // } else if (anaType.getName().equals(AnalysisType.COLUMN_CORRELATION.getName())) { // // MOD qiongli 2011-6-22 bug 16570,use the same jrxml between oracle and mysql // if (BASIC_COLUMNS_CORRELATION.getLabel().equals(text)) { // return BASIC_COLUMNS_CORRELATION; // } else if (EVOLUTION_COLUMNS_CORRELATION.getLabel().equals(text)) { // return EVOLUTION_COLUMNS_CORRELATION; // } // // } else if (anaType.getName().equals(AnalysisType.TABLE_FUNCTIONAL_DEPENDENCY.getName())) { // if (BASIC_TABLE_FUNCTIONAL_DEPENDENCY.getLabel().equals(text)) { // return BASIC_TABLE_FUNCTIONAL_DEPENDENCY; // } else if (EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY.getLabel().equals(text)) { // return EVOLUTION_TABLE_FUNCTIONAL_DEPENDENCY; // } // } else if (anaType.getName().equals(AnalysisType.COLUMN_SET.getName())) { // // MOD mzhao 10706, column set analysis // if (BASIC_COLUMN_SET.getLabel().equals(text)) { // return BASIC_COLUMN_SET; // } else if (EVOLUTION_COLUMN_SET.getLabel().equals(text)) { // return EVOLUTION_COLUMN_SET; // } // } // // return null; // } public static ReportType getReportType(Analysis ana, String text) { AnalysisType at = AnalysisHelper.getAnalysisType(ana); return getReportType(at, text); } // public static ReportType getReportTypeWithDB(Analysis ana, String text, String dbType) { // AnalysisType at = AnalysisHelper.getAnalysisType(ana); // return getReportType(at, text, dbType); // } // /** // * DOC Administrator Comment method "getReportType". // * // * @param analysis // * @param reportType // * @param db // * @return // */ // public static ReportType getReportType(Analysis analysis, String reportType, String db) { // // TODO Auto-generated method stub // return null; // } } private ReportHelper() { } /** * Method "getAnalyses". * * @param report * @return a list of analyses or an empty list. Do not use this list to add analysis to the report. */ public static List<Analysis> getAnalyses(Report report) { List<Analysis> analyses = new ArrayList<Analysis>(); // MOD yyin 20120530 TDQ-5050 if (report instanceof TdReport) { for (AnalysisMap anaMap : ((TdReport) report).getAnalysisMap()) { Analysis analysis = anaMap.getAnalysis(); if (analysis != null) { analyses.add(analysis); } } } return analyses; } /** * Method "removeAnalyses". * * @param report * @param analyses analyses to remove from the report * @return true if the analyses list of the report changed as a result of the call. */ public static boolean removeAnalyses(TdReport report, Collection<Analysis> analyses) { boolean removed = true; for (Analysis analysis : analyses) { if (!report.removeAnalysis(analysis)) { removed = false; } } return removed; } /** * Method "addAnalyses". * * @param analyses a collection of analyses. * @param report a report (must not be null) * @return true if the analysis list changed as a result of the call. */ public static boolean addAnalyses(Collection<Analysis> analyses, TdReport report) { boolean added = true; for (Analysis analysis : analyses) { if (!report.addAnalysis(analysis)) { added = false; } } return added; } public static TdReport createReport(String name) { TdReport report = ReportsFactory.eINSTANCE.createTdReport(); report.setName(name); return report; } /** * Method "mustRefreshAllAnalyses". * * @param report * @param refresh true if all analyses must be refreshed. False means that no analysis will be refreshed. */ public static void mustRefreshAllAnalyses(TdReport report, boolean refresh) { EList<AnalysisMap> analysisMap = report.getAnalysisMap(); for (AnalysisMap map : analysisMap) { map.setMustRefresh(refresh); } } /** * Method "getExecutionInformations" returns the execution informations of the given report. If none existed, they * are created and stored in the report. * * @param report a report * @return the existing execution informations */ public static ExecutionInformations getExecutionInformations(TdReport report) { ExecutionInformations execInformations = report.getExecInformations(); if (execInformations == null) { execInformations = AnalysisFactory.eINSTANCE.createExecutionInformations(); report.setExecInformations(execInformations); } return execInformations; } /** * Method "setReportType". * * MOD mzhao 2009-02-16 * * @param report the report object to update * @param reportType the report type to set * @param jrxmlFullPath the full path to the jxrxml file (can be null when the type of report is different from the * USER_DEFINED) * @return true if everything is set correctly, false otherwise. */ public static boolean setReportType(TdReport report, Analysis analysis, ReportType reportType, String jrxmlFullPath) { boolean ok = true; reportType = reportType == null ? ReportHelper.ReportType.USER_MADE : reportType; switch (reportType) { case USER_MADE: report.setReportType(reportType.getLabel(), jrxmlFullPath, analysis); if (StringUtils.isBlank(jrxmlFullPath)) { // do not log an error here ok = false; } break; default: report.setReportType(reportType.getLabel(), null, analysis); break; } return ok; } /** * * DOC mzhao Set analysis filter date from. * * @param report * @param dateText * @return * @throws ParseException */ public static void setAnalysisFilterDateFrom(TdReport report, String dateText) { report.setDateFrom(StringUtils.isEmpty(dateText) ? null : dateText); } /** * * DOC mzhao Comment method "setAnalysisFilterDateFrom". * * @param report * @param dateText * @return * @return * @throws ParseException */ public static void setAnalysisFilterDateTo(TdReport report, String dateText) { report.setDateTo(StringUtils.isEmpty(dateText) ? null : dateText); } /** * * DOC mzhao Comment method "getReportType". * * @param report * @param analysis * @return */ public static String getReportType(TdReport report, Analysis analysis) { String reportType = null; EList<AnalysisMap> anMaps = report.getAnalysisMap(); for (AnalysisMap anMap : anMaps) { if (ResourceHelper.areSame(analysis, anMap.getAnalysis())) { reportType = anMap.getReportType(); break; } } return reportType; } public static String getReportJrxml(TdReport report, Analysis analysis) { String jrxmlSource = null; EList<AnalysisMap> anMaps = report.getAnalysisMap(); for (AnalysisMap anMap : anMaps) { if (ResourceHelper.areSame(analysis, anMap.getAnalysis())) { jrxmlSource = anMap.getJrxmlSource(); break; } } return jrxmlSource; } /** * DOC bZhou Comment method "setOutputType". * * @param outputType * @param report * @return */ public static boolean setOutputType(String outputType, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.OUTPUT_TYPE_TAG, outputType); } /** * DOC bZhou Comment method "getOutputType". * * @param tag * @param element * @return */ public static String getOutputType(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.OUTPUT_TYPE_TAG, report.getTaggedValue()); if (taggedValue == null || taggedValue.getValue() == null) { // this default output type should be same with JasperReportBuilder.OUTPUT_FORMAT.pdf return "pdf";//$NON-NLS-1$ } return taggedValue.getValue(); } /** * DOC bZhou Comment method "setSingleGenReport". * * @param single * @param report * @return */ public static boolean setSingleGenReport(Boolean single, Report report) { String statusStr = String.valueOf(single); return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.GEN_SINGLE_REPORT, statusStr); } /** * set the password context to the report. * * @param isContext the password is context or not * @param report * @return */ public static boolean setPasswordContext(Boolean isContext, Report report) { String statusStr = String.valueOf(isContext); return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_PASSWORD_CONTEXT, statusStr); } /** * DOC bZhou Comment method "getSingleGenReport". * * @param report * @return */ public static Boolean getSingleGenReport(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.GEN_SINGLE_REPORT, report.getTaggedValue()); if (taggedValue == null) { return false; } return Boolean.valueOf(taggedValue.getValue()); } /** * if the password is context return true, else return false. * * @param report * @return */ public static Boolean getPasswordContext(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_PASSWORD_CONTEXT, report.getTaggedValue()); if (taggedValue == null) { return false; } return Boolean.valueOf(taggedValue.getValue()); } /** * DOC bZhou Comment method "setOutputFileName". * * @param fileName * @param report * @return */ public static boolean setOutputFileName(String fileName, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.OUTPUT_FILENAME_TAG, fileName); } /** * DOC bZhou Comment method "getOutputFileName". * * @param report * @return */ public static String getOutputFileName(Report report) { TaggedValue taggedValue = TaggedValueHelper .getTaggedValue(TaggedValueHelper.OUTPUT_FILENAME_TAG, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC bZhou Comment method "setOutputFolderName". * * @param folderName * @param report * @return */ public static boolean setOutputFolderName(String folderName, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.OUTPUT_FOLDER_TAG, folderName); } /** * DOC xqliu Comment method "getDbType". * * @param report * @return */ public static String getDbType(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_DBTYPE, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } public static String getDbVersion(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_DBVERSION, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getDbName". * * @param report * @return */ public static String getDbName(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_DBNAME, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getUser". * * @param report * @return */ public static String getUser(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_USER, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getPassword". * * @param report * @return */ public static String getPassword(Report report) { TaggedValue taggedValue = TaggedValueHelper .getTaggedValue(TaggedValueHelper.REP_DBINFO_PASSWORD, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } // decrypt the password String password = taggedValue.getValue(); String decryptPassword = ConnectionHelper.getDecryptPassword(password); if (decryptPassword != null) { password = decryptPassword; } return password; } /** * DOC xqliu Comment method "getDriver". * * @param report * @return */ public static String getDriver(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_DRIVER, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getDialect". * * @param report * @return */ public static String getDialect(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_DIALECT, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getUrl". * * @param report * @return */ public static String getUrl(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_URL, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getHost". * * @param report * @return */ public static String getHost(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_HOST, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getLastRunContext". * * @param report * @return */ public static String getLastRunContext(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_LAST_RUN_CONTEXT, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getPort". * * @param report * @return */ public static String getPort(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_PORT, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getSchema". * * @param report * @return */ public static String getSchema(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.REP_DBINFO_SCHEMA, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "setDbType". * * @param dbType * @param report * @return */ public static boolean setDbType(String dbType, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_DBTYPE, dbType); } /** * DOC xqliu Comment method "dbVersion". * * @param dbVersion * @param report * @return */ public static boolean setDbVersion(String dbVersion, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_DBVERSION, dbVersion); } /** * DOC xqliu Comment method "setDbName". * * @param dbName * @param report * @return */ public static boolean setDbName(String dbName, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_DBNAME, dbName); } /** * DOC xqliu Comment method "setUser". * * @param user * @param report * @return */ public static boolean setUser(String user, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_USER, user); } /** * DOC xqliu Comment method "setPassword". * * @param password * @param report * @return * @deprecated use {@link #setPassword(String, Report, boolean)} */ @Deprecated public static boolean setPassword(String password, Report report) { return setPassword(password, report, true); } /** * DOC xqliu Comment method "setPassword". * * @param password * @param report * @param encrypt encrypt the password or not * @return */ public static boolean setPassword(String password, Report report, boolean encrypt) { // encrypt the password if (encrypt) { String encryptPassword = ConnectionHelper.getEncryptPassword(password); if (encryptPassword != null) { password = encryptPassword; } } return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_PASSWORD, password); } /** * DOC xqliu Comment method "setDriver". * * @param driver * @param report * @return */ public static boolean setDriver(String driver, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_DRIVER, driver); } /** * DOC xqliu Comment method "setDialect". * * @param dialect * @param report * @return */ public static boolean setDialect(String dialect, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_DIALECT, dialect); } /** * DOC xqliu Comment method "setUrl". * * @param url * @param report * @return */ public static boolean setUrl(String url, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_URL, url); } /** * DOC xqliu Comment method "setHost". * * @param host * @param report * @return */ public static boolean setHost(String host, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_HOST, host); } /** * DOC xqliu Comment method "setLastRunContext". * * @param lastRunContext * @param report * @return */ public static boolean setLastRunContext(String lastRunContext, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_LAST_RUN_CONTEXT, lastRunContext); } /** * DOC xqliu Comment method "setPort". * * @param port * @param report * @return */ public static boolean setPort(String port, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_PORT, port); } /** * DOC xqliu Comment method "setSchema". * * @param schema * @param report * @return */ public static boolean setSchema(String schema, Report report) { return TaggedValueHelper.setTaggedValue(report, TaggedValueHelper.REP_DBINFO_SCHEMA, schema); } /** * DOC bZhou Comment method "getOutputFolderName". * * @param report * @return */ public static String getOutputFolderNameAssinged(Report report) { TaggedValue taggedValue = TaggedValueHelper.getTaggedValue(TaggedValueHelper.OUTPUT_FOLDER_TAG, report.getTaggedValue()); if (taggedValue == null) { return PluginConstant.EMPTY_STRING; } return taggedValue.getValue(); } /** * DOC xqliu Comment method "getOutputName". * * @param reportContainer * @param simpleName * @return */ public static String getOutputFolderNameDefault(IFolder reportContainer, String simpleName) { // TDQ-11353: fix the folder path to support git remote folder path like // (".repositories/1867765462/master/PROJECT_NAME/) return WorkspaceUtils.ifolderToFile(reportContainer).getAbsolutePath() + File.separator + "." + simpleName; } /** * DOC yyi Comment method "getSubReportsPath". * * @return */ public static IPath getSubReportsPath() { return new Path(PROPS.getProperty("SUB_REPORT_FOLDER")); //$NON-NLS-1$ } /** * get the report last run context group name, if it is empty, return the default context group name. * * @param tdReport * @return */ public static String getContextGroupName(TdReport tdReport) { String contextGroupNameInUse = ReportHelper.getLastRunContext(tdReport); if (StringUtils.isEmpty(contextGroupNameInUse)) { contextGroupNameInUse = tdReport.getDefaultContext(); } if (StringUtils.isEmpty(contextGroupNameInUse)) { contextGroupNameInUse = DEFAULT; } return contextGroupNameInUse; } }