// ============================================================================ // // 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.views.provider; import java.util.Arrays; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IMemento; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.navigator.ICommonContentExtensionSite; import org.eclipse.ui.navigator.ICommonLabelProvider; import org.talend.commons.emf.FactoriesUtil; import org.talend.core.model.metadata.builder.database.DqRepositoryViewService; import org.talend.core.model.properties.Item; import org.talend.core.model.properties.Property; import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.cwm.helper.TaggedValueHelper; import org.talend.dataprofiler.core.ImageLib; import org.talend.dataprofiler.core.manager.DQStructureMessage; import org.talend.dataquality.analysis.Analysis; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dq.analysis.AnalysisHandler; import org.talend.dq.factory.ModelElementFileFactory; import org.talend.dq.helper.PropertyHelper; import org.talend.dq.helper.ProxyRepositoryManager; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.dq.helper.UDIHelper; import org.talend.dq.helper.resourcehelper.AnaResourceFileHelper; import org.talend.dq.helper.resourcehelper.IndicatorResourceFileHelper; import org.talend.dq.helper.resourcehelper.PatternResourceFileHelper; import org.talend.resource.ResourceManager; import orgomg.cwm.objectmodel.core.ModelElement; /** * @author rli * @deprecated use DQRepositoryViewLabelProvider */ @Deprecated public class ResourceViewLabelProvider extends WorkbenchLabelProvider implements ICommonLabelProvider { private static Logger log = Logger.getLogger(ResourceViewLabelProvider.class); public void init(ICommonContentExtensionSite aConfig) { // don't need do anything } @Override protected ImageDescriptor decorateImage(ImageDescriptor input, Object element) { ImageDescriptor image = super.decorateImage(input, element); if (element instanceof IFile) { IFile file = (IFile) element; String fileExtension = file.getFileExtension(); // MOD qiongli 2010-9-7,bug 14698,add 'try...catch' try { if (FactoriesUtil.isPatternFile(fileExtension)) { image = ImageLib.getImageDescriptor(ImageLib.PATTERN_REG); Pattern pattern = PatternResourceFileHelper.getInstance().findPattern(file); if (pattern != null) { if (!TaggedValueHelper.getValidStatus(pattern)) { image = ImageLib.createInvalidIconDes(ImageLib.PATTERN_REG); } } } else if (FactoriesUtil.isReportFile(fileExtension)) { image = ImageLib.getImageDescriptor(ImageLib.REPORT_OBJECT); } else if (FactoriesUtil.isUDIFile(fileExtension)) { image = ImageLib.getImageDescriptor(ImageLib.IND_DEFINITION); IndicatorDefinition udi = IndicatorResourceFileHelper.getInstance().findIndDefinition(file); if (udi != null) { boolean validStatus = TaggedValueHelper.getValidStatus(udi) | UDIHelper.isUDIValid(udi); if (!validStatus) { image = ImageLib.createInvalidIconDes(ImageLib.IND_DEFINITION); } } } else if (FactoriesUtil.isAnalysisFile(fileExtension)) { // ADD qiongli 2010-8-9,feature 14252 Analysis analysis = AnaResourceFileHelper.getInstance().findAnalysis(file); if (analysis != null) { AnalysisHandler analysisHandler = new AnalysisHandler(); analysisHandler.setAnalysis(analysis); if (analysisHandler.getResultMetadata().getExecutionNumber() != 0) { if (!analysisHandler.getResultMetadata().isLastRunOk()) { image = ImageLib.createErrorIcon(image); } else if (analysisHandler.getResultMetadata().isOutThreshold()) { image = ImageLib.createInvalidIcon(image); } } } } } catch (Exception exc) { log.error(exc, exc); image = ImageLib.getImageDescriptor(ImageLib.DELETE_ACTION); } if (FactoriesUtil.isEmfFile(fileExtension)) { Property property = PropertyHelper.getProperty(file); if (property != null) { Item item = property.getItem(); Boolean lockByOthers = ProxyRepositoryManager.getInstance().isLockByOthers(item); Boolean lockByUserOwn = ProxyRepositoryManager.getInstance().isLockByUserOwn(item); if (lockByOthers || lockByUserOwn) { log.info(property.getLabel() + " is locked"); //$NON-NLS-1$ image = ImageLib.createLockedIcon(image); } } } } else if (element instanceof IFolder) { IFolder folder = (IFolder) element; if (ResourceManager.isMetadataFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.METADATA); } else if (ResourceManager.isLibrariesFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.LIBRARIES); } else if (ResourceManager.isDataProfilingFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.DATA_PROFILING); } else if (ResourceManager.isDBConnectionFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.CONNECTION); } else if (ResourceManager.isExchangeFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.EXCHANGE); } else if (ResourceManager.isFileDelimitedFolder(folder)) { image = ImageLib.getImageDescriptor(ImageLib.FILE_DELIMITED); } } return image; } public String getDescription(Object anElement) { if (anElement instanceof IResource) { return ((IResource) anElement).getFullPath().makeRelative().toString(); } return null; } public void restoreState(IMemento aMemento) { // don't need do anything } public void saveState(IMemento aMemento) { // don't need do anything } @Override protected String decorateText(String input, Object element) { if (element instanceof IFile) { IFile file = (IFile) element; if (log.isDebugEnabled()) { log.debug("Loading file " + file.getLocation()); //$NON-NLS-1$ } // MOD qiongli ,bug 14698,add 'try...catch' ModelElement mElement = null; try { mElement = ModelElementFileFactory.getModelElement(file); } catch (Exception exc) { log.error(exc, exc); } if (mElement != null) { Property property = ProxyRepositoryFactory.getInstance().getProperty(mElement); return DqRepositoryViewService.buildElementName(property); } } String tempInput = DQStructureMessage.getString(super.decorateText(input, element)); if (element instanceof IFolder) { if (tempInput.startsWith(RepositoryNodeHelper.PREFIX_TDQ)) { tempInput = tempInput.replaceFirst(RepositoryNodeHelper.PREFIX_TDQ, ""); //$NON-NLS-1$ } IFolder folder = (IFolder) element; if (ResourceManager.isAnalysisFolder(folder)) { tempInput += "(" + getFileCount(folder, new String[] { "ana" }) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } else if (ResourceManager.isReportsFolder(folder)) { tempInput += "(" + getFileCount(folder, new String[] { "rep" }) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } } return super.decorateText(tempInput, element); } protected int getFileCount(IFolder parent, String[] filterExtensions) { int i = 0; List<String> extensions = Arrays.asList(filterExtensions); try { IResource[] members = parent.members(); // MOD qiongli,feature 9486.except the logical delete resources IFile propFile = null; for (IResource resource : members) { if (resource instanceof IFile) { if (extensions.contains(((IFile) resource).getFileExtension())) { propFile = ResourcesPlugin .getWorkspace() .getRoot() .getFile( ((IFile) resource).getFullPath().removeFileExtension() .addFileExtension(FactoriesUtil.PROPERTIES_EXTENSION)); if (propFile.exists()) { Property property = PropertyHelper.getProperty(propFile); if (!property.getItem().getState().isDeleted()) { i++; } } } // MOD by zshen for bug 13755 } else if (resource instanceof IFolder) { i += getFileCount((IFolder) resource, filterExtensions); } // ~13755 } } catch (CoreException e) { e.printStackTrace(); } return i; } }