package com.cisco.surf.jenkow.ide.config;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.activiti.designer.integration.servicetask.CustomServiceTask;
import org.activiti.designer.integration.servicetask.CustomServiceTaskDescriptor;
import org.activiti.designer.eclipse.extension.palette.IPaletteProvider;
import com.cisco.step.jenkins.plugins.jenkow.designer.JenkinsTask;
public class PaletteProvider implements IPaletteProvider {
private String jenkinsTaskExtensionJarPath;
@Override
public List<CustomServiceTaskDescriptor> provide(){
List<CustomServiceTaskDescriptor> providers = new ArrayList<CustomServiceTaskDescriptor>();
providers.add(new CustomServiceTaskDescriptor(JenkinsTask.class,"Jenkins",getExtensionJarPath()));
return providers;
}
private String getExtensionJarPath(){
if (jenkinsTaskExtensionJarPath == null){
try {
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/build.env.properties"));
String designerExtensionName = props.getProperty("designer.extension.name");
String home = System.getProperty("user.home");
File dst = new File(home+"/.jenkow/lib/"+designerExtensionName);
jenkinsTaskExtensionJarPath = dst.getAbsolutePath();
if (!dst.exists()){
// TODO 8: close streams in exception case
InputStream in = getClass().getResourceAsStream("/"+designerExtensionName);
dst.getParentFile().mkdirs();
byte[] buf = new byte[1024];
FileOutputStream out = new FileOutputStream(dst);
while (true){
int n = in.read(buf);
if (n < 0) break;
out.write(buf,0,n);
}
out.close();
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return jenkinsTaskExtensionJarPath;
}
}