// ============================================================================ // // 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.imex; import java.io.File; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.talend.commons.utils.platform.PluginChecker; import org.talend.cwm.helper.ResourceHelper; import org.talend.dataprofiler.core.migration.helper.IndicatorDefinitionFileHelper; import org.talend.dataprofiler.core.ui.imex.model.ItemRecord; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dataquality.indicators.definition.userdefine.UDIndicatorDefinition; import org.talend.resource.EResourceConstant; /** * DOC bZhou class global comment. Detailled comment */ public class FileTreeContentProvider implements ITreeContentProvider { /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement) { if (parentElement instanceof ItemRecord) { ItemRecord record = (ItemRecord) parentElement; return filterRecords(record.getChildern()); } return new Object[0]; } /** * filter the ItemRecords. * * @param childern * @return */ private Object[] filterRecords(ItemRecord[] childern) { ItemRecord[] result = childern; result = hideSomeItems(result); return result; } /** * hide Some Items. * * @param itemRecords * @return */ private ItemRecord[] hideSomeItems(ItemRecord[] itemRecords) { List<ItemRecord> result = new ArrayList<ItemRecord>(); for (ItemRecord itemRecord : itemRecords) { if (itemRecord != null) { // hide the Technial indicators if (itemRecord.getElement() != null && itemRecord.getElement() instanceof IndicatorDefinition && !(itemRecord.getElement() instanceof UDIndicatorDefinition)) { IndicatorDefinition indDef = (IndicatorDefinition) itemRecord.getElement(); String uuid = ResourceHelper.getUUID(indDef); if (IndicatorDefinitionFileHelper.isTechnialIndicator(uuid)) { continue; } } // TDQ-10933: Hide the Exchange node TDQ-11036: always hidden if (EResourceConstant.EXCHANGE.getName().equals(itemRecord.getName())) { continue; } // TDQ-10933~ // TDQ-9495: Hide the Reports node when top if (PluginChecker.isOnlyTopLoaded()) { if (EResourceConstant.REPORTS.getName().equals(itemRecord.getName())) { continue; } } } result.add(itemRecord); } return result.toArray(new ItemRecord[result.size()]); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element) { if (element instanceof ItemRecord) { return ((ItemRecord) element).getParent(); } return null; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element) { if (element instanceof ItemRecord) { File[] listFiles = ((ItemRecord) element).getFile().listFiles(); return listFiles != null && listFiles.length > 0; } return false; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement) { return getChildren(inputElement); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // TODO Auto-generated method stub } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, * java.lang.Object) */ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { ItemRecord.clear(); } }