// ============================================================================ // // 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.factory; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFile; import org.talend.commons.emf.FactoriesUtil; import org.talend.core.model.properties.ConnectionItem; import org.talend.core.model.properties.Item; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.dataquality.analysis.Analysis; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dataquality.indicators.sql.UserDefIndicator; import org.talend.dataquality.rules.DQRule; import org.talend.dq.helper.resourcehelper.AnaResourceFileHelper; import org.talend.dq.helper.resourcehelper.DQRuleResourceFileHelper; import org.talend.dq.helper.resourcehelper.IndicatorResourceFileHelper; import org.talend.dq.helper.resourcehelper.PatternResourceFileHelper; import org.talend.dq.helper.resourcehelper.PrvResourceFileHelper; import org.talend.dq.helper.resourcehelper.RepResourceFileHelper; import org.talend.dq.helper.resourcehelper.ResourceFileMap; import orgomg.cwm.objectmodel.core.ModelElement; import orgomg.cwmx.analysis.informationreporting.Report; /** * This factory for getting the <code>ModelElement</code> from <code>IFile</code>. */ public final class ModelElementFileFactory { private ModelElementFileFactory() { } // private static Logger log = Logger.getLogger(ModelElementFileFactory.class); /** * DOC bZhou Comment method "getModelElement". * * @param file * @return */ public static ModelElement getModelElement(IFile file) { ModelElement modelElement = null; String fileExtension = file.getFileExtension(); if (FactoriesUtil.isAnalysisFile(fileExtension)) { modelElement = AnaResourceFileHelper.getInstance().findAnalysis(file); } else if (FactoriesUtil.isReportFile(fileExtension)) { modelElement = RepResourceFileHelper.getInstance().findReport(file); } else if (FactoriesUtil.isDQRuleFile(fileExtension)) { modelElement = DQRuleResourceFileHelper.getInstance().findDQRule(file); } else if (FactoriesUtil.isPatternFile(fileExtension)) { modelElement = PatternResourceFileHelper.getInstance().findPattern(file); } else if (FactoriesUtil.isUDIFile(fileExtension)) { modelElement = IndicatorResourceFileHelper.getInstance().findIndDefinition(file); } else if (FactoriesUtil.isItemFile(fileExtension)) { modelElement = PrvResourceFileHelper.getInstance().findProvider(file); } return modelElement; } /** * DOC zshen Comment method "getModelElement". * * @param file * @return */ public static ModelElement getModelElement(IRepositoryViewObject repositoryObject) { ModelElement modelElement = null; Item theItem = repositoryObject.getProperty().getItem(); if (theItem instanceof ConnectionItem) { modelElement = ((ConnectionItem) theItem).getConnection(); } return modelElement; } /** * DOC bZhou Comment method "getResourceFileMap". * * @param file * @return */ public static ResourceFileMap getResourceFileMap(IFile file) { return getResourceFileMap(file.getFileExtension()); } public static ResourceFileMap getResourceFileMap(String fileExtension) { ResourceFileMap modelElement = null; if (FactoriesUtil.isAnalysisFile(fileExtension)) { modelElement = AnaResourceFileHelper.getInstance(); } else if (FactoriesUtil.isReportFile(fileExtension)) { modelElement = RepResourceFileHelper.getInstance(); } else if (FactoriesUtil.isDQRuleFile(fileExtension)) { modelElement = DQRuleResourceFileHelper.getInstance(); } else if (FactoriesUtil.isPatternFile(fileExtension)) { modelElement = PatternResourceFileHelper.getInstance(); } else if (FactoriesUtil.isUDIFile(fileExtension)) { modelElement = IndicatorResourceFileHelper.getInstance(); } else if (FactoriesUtil.isItemFile(fileExtension) || FactoriesUtil.isProvFile(fileExtension)) { modelElement = PrvResourceFileHelper.getInstance(); } return modelElement; } /** * DOC bZhou Comment method "getResourceFileMap". * * @param element * @return */ public static ResourceFileMap getResourceFileMap(ModelElement element) { ResourceFileMap resourceMap = null; if (element instanceof Analysis) { resourceMap = AnaResourceFileHelper.getInstance(); } else if (element instanceof Report) { resourceMap = RepResourceFileHelper.getInstance(); } else if (element instanceof DQRule) { resourceMap = DQRuleResourceFileHelper.getInstance(); } else if (element instanceof Pattern) { resourceMap = PatternResourceFileHelper.getInstance(); } else if (element instanceof UserDefIndicator) { resourceMap = IndicatorResourceFileHelper.getInstance(); } return resourceMap; } /** * DOC bZhou Comment method "getModelElements". * * @param files * @return */ public static ModelElement[] getModelElements(IFile[] files) { List<ModelElement> modelElements = new ArrayList<ModelElement>(); ModelElement element; for (IFile file : files) { element = getModelElement(file); if (element != null) { modelElements.add(element); } } return modelElements.toArray(new ModelElement[modelElements.size()]); } /** * DOC bZhou Comment method "getALLElements". * * @param withSystem * @return */ public static ModelElement[] getALLElements(boolean withSystem) { List<ModelElement> allElement = ResourceFileMap.getAll(); return allElement.toArray(new ModelElement[allElement.size()]); } }