// ============================================================================
//
// 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.action.actions;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.core.internal.resources.Workspace;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.views.markers.MarkerViewUtil;
import org.talend.commons.exception.BusinessException;
import org.talend.commons.utils.WorkspaceUtils;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.TDQItem;
import org.talend.dataprofiler.core.ImageLib;
import org.talend.dataprofiler.core.exception.ExceptionFactory;
import org.talend.dataprofiler.core.exception.ExceptionHandler;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.model.TdResourceModel;
import org.talend.dataprofiler.core.ui.dialog.TdTaskPropertiesDialog;
import org.talend.dq.helper.RepositoryNodeHelper;
import org.talend.repository.model.RepositoryNode;
import orgomg.cwm.objectmodel.core.ModelElement;
/**
* DOC mzhao class global comment. Detailled comment
*/
@SuppressWarnings("restriction")
public class TdAddTaskAction extends Action {
protected static Logger log = Logger.getLogger(TdAddTaskAction.class);
private Shell shell = null;
private Object navObj = null;
public TdAddTaskAction(Shell shell, Object me) {
super(DefaultMessagesImpl.getString("TdAddTaskAction.addTask")); //$NON-NLS-1$
setImageDescriptor(ImageLib.getImageDescriptor(ImageLib.ADD_ACTION));
this.shell = shell;
navObj = me;
}
@Override
public void run() {
try {
TdTaskPropertiesDialog dialog = new TdTaskPropertiesDialog(shell);
ModelElement modelElement = null;
if (navObj instanceof RepositoryNode) {
RepositoryNode node = (RepositoryNode) navObj;
modelElement = RepositoryNodeHelper.getModelElementFromRepositoryNode(node);
} else {
modelElement = (ModelElement) navObj;
}
if (modelElement == null || modelElement.eResource() == null || modelElement.getName() == null) {
String fileName = ""; //$NON-NLS-1$
if (navObj instanceof RepositoryNode) {
Item item = ((RepositoryNode) navObj).getObject().getProperty().getItem();
if (item instanceof TDQItem) {
fileName = ((TDQItem) item).getFilename();
}
}
BusinessException createBusinessException = ExceptionFactory.getInstance().createBusinessException(fileName);
throw createBusinessException;
}
IFile file = WorkspaceUtils.getModelElementResource(modelElement);
TdResourceModel tdResModel = new TdResourceModel(file.getFullPath(), (Workspace) file.getWorkspace(), modelElement);
dialog.setResource(tdResModel);
Map<String, Object> attMap = new HashMap<String, Object>();
attMap.put(MarkerViewUtil.NAME_ATTRIBUTE, modelElement.getName());
attMap.put(IMarker.LOCATION, file.getRawLocation().toString());
attMap.put(IMarker.LINE_NUMBER, file.getRawLocation().toString());
dialog.setInitialAttributes(attMap);
dialog.open();
} catch (BusinessException e) {
ExceptionHandler.process(e, Level.FATAL);
} catch (Exception e1) {
log.error(e1, e1);
}
}
}