// ============================================================================
//
// 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.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.WorkspaceUtils;
import org.talend.commons.utils.io.FilesUtils;
import org.talend.dataprofiler.ecos.jobs.ComponentInstaller;
import org.talend.dataprofiler.ecos.model.IEcosComponent;
import org.talend.dq.helper.FileUtils;
import org.talend.resource.ResourceManager;
import org.talend.utils.sugars.ReturnCode;
/**
* an object which can be import into TDQ, include an Object File (csv) and a Jar File list.
*/
public class ImportObject {
protected static Logger log = Logger.getLogger(ImportObject.class);
/**
* create a ImportObject.
*
* @param pObjfile
* @param pJarfiles
* @return
*/
public static ImportObject createImportObject(File pObjfile, List<File> pJarfiles) {
return new ImportObject(pObjfile, pJarfiles);
}
/**
* build a ImportObject list.
*
* @param componet
* @param information
* @return
*/
public static List<ImportObject> extractImportObject(IEcosComponent componet, List<ReturnCode> information) {
List<ImportObject> importObjects = new ArrayList<ImportObject>();
try {
String targetFolder = System.getProperty("java.io.tmpdir"); //$NON-NLS-1$
File componentFileFolder = ComponentInstaller.unzip(componet.getInstalledLocation(), targetFolder);
// get obj files(csv)
List<File> objFiles = FilesUtils.getAllFilesFromFolder(componentFileFolder, new FilenameFilter() {
public boolean accept(File dir, String name) {
return !FilesUtils.isSVNFolder(dir) && name.endsWith(FileUtils.CSV);
}
});
if (objFiles.isEmpty()) {
information.add(new ReturnCode("No valid exchange extension file(CSV) found in " + componet.getName(), false)); //$NON-NLS-1$
} else {
// get jar files
List<File> jarFiles = FilesUtils.getAllFilesFromFolder(componentFileFolder, new FilenameFilter() {
public boolean accept(File dir, String name) {
return !FilesUtils.isSVNFolder(dir) && name.endsWith("jar"); //$NON-NLS-1$
}
});
for (File file : objFiles) {
importObjects.add(ImportObject.createImportObject(file, jarFiles));
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
return importObjects;
}
private File objFile;
private List<File> jarFiles;
private ImportObject(File pObjfile, List<File> pJarfiles) {
this.setObjFile(pObjfile);
this.setJarFiles(pJarfiles);
}
/**
* copy jar file into TDQ_Libraries/Indicators/User Defined Indicators/lib.
*/
public void copyJarFiles() {
if (!this.getJarFiles().isEmpty()) {
try {
for (File file : this.getJarFiles()) {
FilesUtils.copyFile(file,
WorkspaceUtils.ifileToFile(ResourceManager.getUDIJarFolder().getFile(file.getName())));
}
} catch (IOException e) {
log.warn(e, e);
}
}
}
public List<File> getJarFiles() {
if (this.jarFiles == null) {
this.jarFiles = new ArrayList<File>();
}
return this.jarFiles;
}
public File getObjFile() {
return this.objFile;
}
private void setJarFiles(List<File> jarFiles) {
this.jarFiles = jarFiles;
}
private void setObjFile(File objFile) {
this.objFile = objFile;
}
}