// ============================================================================ // // 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.dq.writer.impl; import org.talend.commons.emf.FactoriesUtil; import org.talend.core.model.properties.ConnectionItem; import org.talend.core.model.properties.Item; import org.talend.dataquality.properties.TDQAnalysisItem; import org.talend.dataquality.properties.TDQBusinessRuleItem; import org.talend.dataquality.properties.TDQIndicatorDefinitionItem; import org.talend.dataquality.properties.TDQPatternItem; import org.talend.dataquality.properties.TDQReportItem; import org.talend.dq.helper.ModelElementIdentifier; import org.talend.dq.writer.AElementPersistance; import orgomg.cwm.objectmodel.core.ModelElement; /** * DOC bZhou class global comment. Detailled comment */ public final class ElementWriterFactory { private static ElementWriterFactory instance; public ElementWriterFactory() { } /** * DOC bZhou Comment method "getInstance". * * @return */ public static ElementWriterFactory getInstance() { if (instance == null) { instance = new ElementWriterFactory(); } return instance; } /** * DOC bZhou Comment method "createAnalysisWrite". * * @return */ public AnalysisWriter createAnalysisWrite() { return new AnalysisWriter(); } /** * DOC bZhou Comment method "createReportWriter". * * @return */ public ReportWriter createReportWriter() { return new ReportWriter(); } /** * DOC bZhou Comment method "createDataProviderWriter". * * @return */ public DataProviderWriter createDataProviderWriter() { return new DataProviderWriter(); } /** * DOC bZhou Comment method "createPatternWriter". * * @return */ public PatternWriter createPatternWriter() { return new PatternWriter(); } /** * DOC bZhou Comment method "createdRuleWriter". * * @return */ public DQRuleWriter createdRuleWriter() { return new DQRuleWriter(); } /** * * create MatchRule writer * * @return */ public MatchRuleDefinitionWriter createdMatchRuleWriter() { return new MatchRuleDefinitionWriter(); } /** * DOC bZhou Comment method "createSoftwareSystemWriter". * * @return */ public SoftwareSystemWriter createSoftwareSystemWriter() { return new SoftwareSystemWriter(); } /** * DOC bZhou Comment method "createIndicatorDefinitionWriter". * * @return */ public IndicatorDefinitionWriter createIndicatorDefinitionWriter() { return new IndicatorDefinitionWriter(); } /** * DOC bZhou Comment method "create". * * @param fileExtension * @return */ public AElementPersistance create(String fileExtension) { if (FactoriesUtil.ANA.equals(fileExtension)) { return createAnalysisWrite(); } else if (FactoriesUtil.REP.equals(fileExtension)) { return createReportWriter(); } else if (FactoriesUtil.PROV.equals(fileExtension)) { return createDataProviderWriter(); } else if (FactoriesUtil.PATTERN.equals(fileExtension)) { return createPatternWriter(); } else if (FactoriesUtil.DQRULE.equals(fileExtension)) { return createdRuleWriter(); } else if (FactoriesUtil.SOFTWARE_SYSTEM.equals(fileExtension)) { return createSoftwareSystemWriter(); } else if (FactoriesUtil.DEFINITION.equals(fileExtension)) { return createIndicatorDefinitionWriter(); } return null; } /** * DOC bZhou Comment method "create". * * @param element * @return */ public AElementPersistance create(ModelElement element) { if (ModelElementIdentifier.isAnalysis(element)) { return createAnalysisWrite(); } else if (ModelElementIdentifier.isReport(element)) { return createReportWriter(); } else if (ModelElementIdentifier.isDataProvider(element)) { return createDataProviderWriter(); } else if (ModelElementIdentifier.isPattern(element)) { return createPatternWriter(); } else if (ModelElementIdentifier.isID(element)) { if (ModelElementIdentifier.isDQRule(element) || ModelElementIdentifier.isMatchRule(element)) { return createdRuleWriter(); } return createIndicatorDefinitionWriter(); } else if (ModelElementIdentifier.isSoftware(element)) { return createSoftwareSystemWriter(); } return null; } /** * create a Writer by the type of Item */ public AElementPersistance create(Item currItem) { if (currItem instanceof TDQAnalysisItem) { return createAnalysisWrite(); } else if (currItem instanceof TDQReportItem) { return createReportWriter(); } else if (currItem instanceof ConnectionItem) { return createDataProviderWriter(); } else if (currItem instanceof TDQPatternItem) { return createPatternWriter(); } else if (currItem instanceof TDQIndicatorDefinitionItem) { return createIndicatorDefinitionWriter(); } else if (currItem instanceof TDQBusinessRuleItem) { return createdRuleWriter(); } return null; } }