// ============================================================================ // // 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.statistics.frequency.recognition; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import org.talend.dataquality.statistics.datetime.CustomDateTimePatternManager; import org.talend.dataquality.statistics.type.DataTypeEnum; /** * Recognize date types given the predefined date regex pattern. * * @since 1.3.0 * @author mzhao */ public class DateTimePatternRecognizer extends AbstractPatternRecognizer { private List<String> customDateTimePatterns = new ArrayList<>(); public void addCustomDateTimePattern(String pattern) { this.customDateTimePatterns.add(pattern); } public void addCustomDateTimePatterns(List<String> patterns) { this.customDateTimePatterns.addAll(patterns); } public List<String> getCustomDateTimePattern() { return customDateTimePatterns; } @Override public RecognitionResult recognize(String stringToRecognize) { return recognize(stringToRecognize, DataTypeEnum.DATE); } @Override public RecognitionResult recognize(String stringToRecognize, DataTypeEnum type) { RecognitionResult result = new RecognitionResult(); if (type != null && !DataTypeEnum.DATE.equals(type)) { result.setResult(Collections.singleton(stringToRecognize), false); return result; } if (stringToRecognize != null && stringToRecognize.length() > 6) { final Set<String> datePatternAfterReplace = CustomDateTimePatternManager.replaceByDateTimePattern(stringToRecognize, customDateTimePatterns); if (datePatternAfterReplace.isEmpty()) { // Did not recognized. result.setResult(Collections.singleton(stringToRecognize), false); } else { result.setResult(datePatternAfterReplace, true); } } return result; } @Override protected Set<String> getValuePattern(String originalValue) { RecognitionResult result = recognize(originalValue); return result.getPatternStringSet(); } }