// ============================================================================
//
// 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.exchange;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.ui.PlatformUI;
import org.talend.commons.utils.platform.PluginChecker;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.dataprofiler.core.CorePlugin;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.ecos.jobs.ComponentSearcher;
import org.talend.dataprofiler.ecos.model.IEcosCategory;
import org.talend.dq.nodes.DQRepositoryNode;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
/**
* DOC klliu class global comment. Detailled comment
*/
public class ExchangeFolderRepNode extends DQRepositoryNode {
/**
* ExchangeFolderRepNode constructor.
*
* @param object
* @param parent
* @param type
* @param inWhichProject
*/
public ExchangeFolderRepNode(IRepositoryViewObject object, RepositoryNode parent, ENodeType type,
org.talend.core.model.general.Project inWhichProject) {
super(object, parent, type, inWhichProject);
}
@Override
public List<IRepositoryNode> getChildren() {
Object[] result = null;
boolean isOnFilter = ExchangeFolderRepNode.isOnFilterring();
try {
String version = CorePlugin.getDefault().getProductVersion().toString();
result = ComponentSearcher.getAvailableCategory(version, isOnFilter).toArray();
} catch (SocketTimeoutException e) {
if (!isOnFilter) {
MessageDialogWithToggle.openWarning(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
DefaultMessagesImpl.getString("ExchangeFolderRepNode.connectFailedTitle"), //$NON-NLS-1$
e.getMessage());
}
} catch (Exception e) {
if (!isOnFilter) {
MessageDialogWithToggle.openWarning(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
DefaultMessagesImpl.getString("ExchangeFolderRepNode.connectFailedTitle"), //$NON-NLS-1$
DefaultMessagesImpl.getString("ExchangeFolderRepNode.connectFailed2")); //$NON-NLS-1$
}
}
// MOD gdbu 2011-6-29 bug : 22204
return filterResultsIfAny(buildRepositoryNode(result));
// ~22204
}
/**
* DOC xqliu Comment method "buildRepositoryNode".
*
* @param result
* @return
*/
private List<IRepositoryNode> buildRepositoryNode(Object[] result) {
List<IRepositoryNode> list = new ArrayList<IRepositoryNode>();
if (result != null && result.length > 0) {
if (result[0] instanceof String) {
for (Object obj : result) {
ExchangeCategoryRepNode exchangeCategoryRepNode = new ExchangeCategoryRepNode(null, this,
ENodeType.REPOSITORY_ELEMENT, getProject());
exchangeCategoryRepNode.setFlag(false);
exchangeCategoryRepNode.setMsg((String) obj);
list.add(exchangeCategoryRepNode);
}
} else if (result[0] instanceof IEcosCategory) {
for (Object obj : result) {
// MOD klliu bug TDQ-3754: Hide the parser rules when in TOP 2011-10-24
IEcosCategory category = (IEcosCategory) obj;
String name = category.getName();
ExchangeCategoryRepNode exchangeCategoryRepNode = new ExchangeCategoryRepNode(category, this,
ENodeType.REPOSITORY_ELEMENT, getProject());
exchangeCategoryRepNode.setFlag(true);
exchangeCategoryRepNode.setMsg("");//$NON-NLS-1$
if (!(name.equals("ParserRule") && PluginChecker.isOnlyTopLoaded())) {//$NON-NLS-1$
list.add(exchangeCategoryRepNode);
}
}
}
}
return list;
}
}