// ============================================================================ // // 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.dataprofiler.core.ui.wizard.indicator.forms; import org.talend.dataprofiler.core.ui.editor.preview.IndicatorUnit; import org.talend.dataprofiler.core.ui.editor.preview.TableIndicatorUnit; import org.talend.dataprofiler.help.HelpPlugin; import org.talend.dataquality.analysis.ExecutionLanguage; import org.talend.dataquality.indicators.DataminingType; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dq.helper.UDIHelper; import org.talend.dq.nodes.indicator.type.IndicatorEnum; import org.talend.utils.sql.Java2SqlType; /** * DOC zqin class global comment. Detailled comment */ public enum FormEnum { BinsDesignerForm("Bins Designer", "html/wizard/indicator/BinsDesigner.html"), //$NON-NLS-1$ //$NON-NLS-2$ FreqBinsDesignerForm("Bins Designer", "html/wizard/indicator/BinsDesigner.html"), //$NON-NLS-1$ //$NON-NLS-2$ TextParametersForm("Text Parameters", "html/wizard/indicator/TextParameter.html"), //$NON-NLS-1$ //$NON-NLS-2$ TextParametersWithoutOptionsForm("Text Parameters", "html/wizard/indicator/TextParameter.html"), //$NON-NLS-1$ //$NON-NLS-2$ FreqTextParametersForm("Text Parameters", "html/wizard/indicator/TextParameter.html"), //$NON-NLS-1$ //$NON-NLS-2$ TimeSlicesForm("Time Slices", "html/wizard/indicator/TimeSlice.html"), //$NON-NLS-1$ //$NON-NLS-2$ FreqTimeSliceForm("Time Slices", "html/wizard/indicator/TimeSlice.html"), //$NON-NLS-1$ //$NON-NLS-2$ DataThresholdsForm("Data Thresholds", "html/wizard/indicator/DataThreshold.html"), //$NON-NLS-1$ //$NON-NLS-2$ IndicatorThresholdsForm("Indicator Thresholds", "html/wizard/indicator/IndicatorThresholds.html"), //$NON-NLS-1$ //$NON-NLS-2$ TextLengthForm("Text Length", "html/wizard/indicator/TextLength.html"), //$NON-NLS-1$ //$NON-NLS-2$ FreqTextLengthForm("Blank Options", "html/wizard/indicator/BlankOptions.html"), //$NON-NLS-1$ //$NON-NLS-2$ NumbericNominalForm("Frequency Table Parameters", ""), //$NON-NLS-1$ //$NON-NLS-2$ JavaUDIParametersForm("Java UDI Parameters", ""), //$NON-NLS-1$ //$NON-NLS-2$ ExpectedValueForm("Expected Value", "html/wizard/indicator/ExpectedValue.html"), //$NON-NLS-1$ //$NON-NLS-2$ JavaOptionsForm("Java Options", "html/wizard/indicator/JavaOptions.html"), //$NON-NLS-1$ //$NON-NLS-2$ PhoneNumberForm("Phone Number", "html/wizard/indicator/TextParameter.html"); //$NON-NLS-1$ //$NON-NLS-2$ private String formName; private String helpHref; FormEnum(String formName, String helpHref) { this.formName = formName; this.helpHref = helpHref; } public String getFormName() { return formName; } public String getHelpHref() { return "/" + HelpPlugin.PLUGIN_ID + "/" + helpHref; //$NON-NLS-1$ //$NON-NLS-2$ } /** * * use {@link IndicatorUnit#getHelpHref()} instead of it * * @deprecated * @param indicatorUnit * @return */ @Deprecated public static String[] getHelpHref(IndicatorUnit indicatorUnit) { return indicatorUnit.getHelpHref(); } /** * * use {@link IndicatorUnit#getHelpHref()} instead of it * * @deprecated * @param indicatorUnit * @return */ @Deprecated public static String[] getHelpHref(TableIndicatorUnit indicatorUnit) { return indicatorUnit.getHelpHref(); } /** * * use {@link IndicatorUnit#getFirstFormHelpHref()} instead of it * * @param indicatorUnit * @return */ public static String getFirstFormHelpHref(IndicatorUnit indicatorUnit) { return indicatorUnit.getFirstFormHelpHref(); } /** * * use {@link IndicatorUnit#getFirstFormHelpHref()} instead of it * * @param indicatorUnit * @return */ public static String getFirstFormHelpHref(TableIndicatorUnit indicatorUnit) { return indicatorUnit.getFirstFormHelpHref(); } /** * use {@link IndicatorUnit#getForms()} instead of it * * @deprecated * @param dataminingType * @param sqlType */ @Deprecated public static FormEnum[] getForms(IndicatorUnit indicatorUnit) { return indicatorUnit.getForms(); } /** * DOC talend Comment method "getFormEnumArray". * * @param indicatorUnit * @param sqlType * @param dataminingType * @param indicatorType * @return */ public static FormEnum[] getFormEnumArray(IndicatorDefinition indicatorDefinition, int sqlType, DataminingType dataminingType, IndicatorEnum indicatorType, String executionLanguage) { boolean isJavaEngine = ExecutionLanguage.JAVA.getLiteral().equals(executionLanguage); boolean isSqlEngine = ExecutionLanguage.SQL.getLiteral().equals(executionLanguage); FormEnum[] forms = null; switch (indicatorType) { case RowCountIndicatorEnum: case NullCountIndicatorEnum: case BlankCountIndicatorEnum: case DefValueCountIndicatorEnum: forms = new FormEnum[] { IndicatorThresholdsForm }; break; case DistinctCountIndicatorEnum: case UniqueIndicatorEnum: case DuplicateCountIndicatorEnum: forms = new FormEnum[] { IndicatorThresholdsForm }; if (Java2SqlType.isTextInSQL(sqlType)) { forms = new FormEnum[] { TextParametersForm, IndicatorThresholdsForm }; } break; case MinLengthIndicatorEnum: case MaxLengthIndicatorEnum: case AverageLengthIndicatorEnum: // MOD gdbu 2011-10-9 TDQ-3549 forms = new FormEnum[] { IndicatorThresholdsForm }; // ~TDQ-3549 break; case MinLengthWithBlankIndicatorEnum: case MinLengthWithNullIndicatorEnum: case MinLengthWithBlankNullIndicatorEnum: case MaxLengthWithBlankIndicatorEnum: case MaxLengthWithBlankNullIndicatorEnum: case MaxLengthWithNullIndicatorEnum: case AverageLengthWithBlankIndicatorEnum: case AverageLengthWithNullBlankIndicatorEnum: case AverageLengthWithNullIndicatorEnum: // MOD yyi 2010-12-23 17740:enable thresholds forms = new FormEnum[] { IndicatorThresholdsForm }; break; case FrequencyIndicatorEnum: case LowFrequencyIndicatorEnum: case PatternFreqIndicatorEnum: case PatternLowFreqIndicatorEnum: case EastAsiaPatternFreqIndicatorEnum: case EastAsiaPatternLowFreqIndicatorEnum: case DatePatternFreqIndicatorEnum: forms = getFormsForFreqencyIndicators(sqlType, dataminingType, indicatorType, isJavaEngine); break; case ModeIndicatorEnum: if (dataminingType == DataminingType.INTERVAL && Java2SqlType.isNumbericInSQL(sqlType)) { forms = new FormEnum[] { BinsDesignerForm, ExpectedValueForm }; } else if (Java2SqlType.isTextInSQL(sqlType)) { forms = new FormEnum[] { TextParametersForm, ExpectedValueForm }; } break; case BoxIIndicatorEnum: case RangeIndicatorEnum: case IQRIndicatorEnum: forms = new FormEnum[] { DataThresholdsForm }; break; case MeanIndicatorEnum: case MedianIndicatorEnum: case LowerQuartileIndicatorEnum: case UpperQuartileIndicatorEnum: case MinValueIndicatorEnum: case MaxValueIndicatorEnum: forms = new FormEnum[] { IndicatorThresholdsForm }; break; case RegexpMatchingIndicatorEnum: case SqlPatternMatchingIndicatorEnum: case AllMatchIndicatorEnum: forms = new FormEnum[] { IndicatorThresholdsForm }; break; case SoundexIndicatorEnum: case SoundexLowIndicatorEnum: case DateFrequencyIndicatorEnum: case DateLowFrequencyIndicatorEnum: case YearFrequencyIndicatorEnum: case YearLowFrequencyIndicatorEnum: case QuarterFrequencyIndicatorEnum: case QuarterLowFrequencyIndicatorEnum: case MonthFrequencyIndicatorEnum: case MonthLowFrequencyIndicatorEnum: case WeekFrequencyIndicatorEnum: case WeekLowFrequencyIndicatorEnum: forms = new FormEnum[] { NumbericNominalForm }; break; case UserDefinedIndicatorEnum: if (indicatorDefinition != null && UDIHelper.isJUDIValid(indicatorDefinition) && isJavaEngine) { forms = new FormEnum[] { JavaUDIParametersForm }; } else if (UDIHelper.isFrequency((indicatorDefinition)) && isSqlEngine) { forms = getFormsForFreqencyIndicators(sqlType, dataminingType, indicatorType, isJavaEngine); } else if (UDIHelper.isCount(indicatorDefinition) || UDIHelper.isMatching(indicatorDefinition) || UDIHelper.isRealValue(indicatorDefinition)) { forms = new FormEnum[] { IndicatorThresholdsForm }; } break; case BinFrequencyIndicatorEnum: case BinLowFrequencyIndicatorEnum: if (Java2SqlType.isNumbericInSQL(sqlType)) { forms = new FormEnum[] { FreqBinsDesignerForm }; } break; case ValidPhoneCountIndicatorEnum: case PossiblePhoneCountIndicatorEnum: case WellFormNationalPhoneCountIndicatorEnum: case WellFormIntePhoneCountIndicatorEnum: case WellFormE164PhoneCountIndicatorEnum: forms = new FormEnum[] { PhoneNumberForm, IndicatorThresholdsForm }; break; case PhoneNumbStatisticsIndicatorEnum: case FormatFreqPieIndictorEnum: forms = new FormEnum[] { PhoneNumberForm }; break; default: } return forms; } /** * DOC msjian Comment method "getFormsForFreqencyIndicatos". * * @param sqlType * @param dataminingType * @param indicatorType * @return */ private static FormEnum[] getFormsForFreqencyIndicators(int sqlType, DataminingType dataminingType, IndicatorEnum indicatorType, boolean isJavaEngine) { FormEnum[] forms = null; if (dataminingType == DataminingType.INTERVAL) { if (Java2SqlType.isNumbericInSQL(sqlType)) { // TDQ-11196: Disable bins for frequency table indicator if (indicatorType == IndicatorEnum.FrequencyIndicatorEnum || indicatorType == IndicatorEnum.LowFrequencyIndicatorEnum) { forms = new FormEnum[] { NumbericNominalForm }; } else { forms = new FormEnum[] { FreqBinsDesignerForm }; } // TDQ-11196~ } else if (Java2SqlType.isDateInSQL(sqlType)) { // MOD qiongli 2011-11-8,TDQ-3864,remove TimeSlice from UI forms = new FormEnum[] { NumbericNominalForm }; } } else if (Java2SqlType.isTextInSQL(sqlType)) { // TDQ-11265: for East Asia Pattern Frequency table indicators, both java and sql engine only have // "Text Parameters" without the ignore case option if (indicatorType == IndicatorEnum.EastAsiaPatternFreqIndicatorEnum || indicatorType == IndicatorEnum.EastAsiaPatternLowFreqIndicatorEnum) { return new FormEnum[] { TextParametersWithoutOptionsForm }; } // TDQ-11265~ // MOD qiongli 2012-2-7 TDQ-4627 javaOptionForm just for Java engine and Pattern Frequency. if (isJavaEngine && (indicatorType == IndicatorEnum.PatternFreqIndicatorEnum || indicatorType == IndicatorEnum.PatternLowFreqIndicatorEnum)) { forms = new FormEnum[] { FreqTextParametersForm, FreqTextLengthForm, JavaOptionsForm }; } else { forms = new FormEnum[] { FreqTextParametersForm, FreqTextLengthForm }; } } else if (dataminingType == DataminingType.NOMINAL) { if (Java2SqlType.isNumbericInSQL(sqlType)) { forms = new FormEnum[] { NumbericNominalForm }; } } return forms; } /** * * use {@link TableIndicatorUnit#getForms()} instead of it * * @deprecated * @param indicatorUnit * @return */ @Deprecated public static FormEnum[] getForms(TableIndicatorUnit indicatorUnit) { return indicatorUnit.getForms(); } /** * * use {@link IndicatorUnit#isExsitingForm()} instead of it * * @deprecated * @param indicatorUnit * @return */ @Deprecated public static boolean isExsitingForm(IndicatorUnit indicatorUnit) { return indicatorUnit.isExsitingForm(); } /** * * use {@link IndicatorUnit#isExsitingForm()} instead of it * * @param indicatorUnit * @return */ public static boolean isExsitingForm(TableIndicatorUnit indicatorUnit) { return indicatorUnit.isExsitingForm(); } }