// ============================================================================
//
// 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.handle;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.ecore.resource.Resource;
import org.talend.commons.utils.WorkspaceUtils;
import org.talend.core.model.properties.Item;
import org.talend.dataprofiler.core.PluginConstant;
import org.talend.dataprofiler.core.manager.DQStructureManager;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IRepositoryNode;
import org.talend.resource.EResourceConstant;
import org.talend.resource.ResourceManager;
import orgomg.cwm.objectmodel.core.ModelElement;
/**
* Duplicate a SQL source file
*/
public class SourceFileDuplicateHandle extends AbstractTDQFileDuplicateHandle {
SourceFileDuplicateHandle(IRepositoryNode node) {
super(node);
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.action.actions.handle.IDuplicateHandle#duplicate(java.lang.String)
*/
@Override
protected Item createFileItemByDuplicateFile(IFile newFile, String fileExtension, String newName) {
IPath makeRelativeTo = newFile.getFullPath().removeFirstSegments(1).removeLastSegments(1)
.makeRelativeTo(ResourceManager.getSourceFileFolder().getFullPath().removeFirstSegments(1));
return DQStructureManager.getInstance().createSourceFileItem(WorkspaceUtils.ifileToFile(file), makeRelativeTo, newName,
PluginConstant.SQL_STRING);
}
/**
* DOC msjian Comment method "extractFolder".
*
* @param oldItem
* @param oldModelElement
* @return
*/
@Override
protected IFolder extractFolder(Item oldItem, ModelElement oldObject) {
boolean inCurrentMainProject = ProjectManager.getInstance().isInCurrentMainProject(oldItem);
if (inCurrentMainProject) {
Resource resource = oldItem.eResource();
IPath path = new Path(resource.getURI().toPlatformString(false));
IFile oldFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
return (IFolder) oldFile.getParent();
} else {
// for the reference project node, we get its folder in current project.
return ResourceManager.getOneFolder(EResourceConstant.SOURCE_FILES);
}
}
}