package org.kevoree.kevscript.util;
import org.kevoree.ContainerRoot;
import org.kevoree.Repository;
import org.kevoree.compare.DefaultModelCompare;
import org.kevoree.loader.XMIModelLoader;
import org.kevoree.log.Log;
import org.kevoree.resolver.MavenResolver;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
* Created with IntelliJ IDEA.
* User: duke
* Date: 25/11/2013
* Time: 17:11
*/
public class MergeResolver {
private static MavenResolver resolver = new MavenResolver();
private static XMIModelLoader loader = new XMIModelLoader();
private static DefaultModelCompare compare = new DefaultModelCompare();
public static void merge(ContainerRoot model, String type, String url) {
if (type.equals("mvn")) {
List<String> urls = new ArrayList<String>();
for (Repository repo : model.getRepositories()) {
urls.add(repo.getUrl());
}
File resolved = resolver.resolve(url, urls);
if (resolved != null && resolved.exists()) {
try {
JarFile jar = new JarFile(new File(resolved.getAbsolutePath()));
JarEntry entry = jar.getJarEntry("KEV-INF/lib.kev");
ContainerRoot remoteModel = (ContainerRoot) loader.loadModelFromStream(jar.getInputStream(entry)).get(0);
compare.merge(model, remoteModel).applyOn(model);
} catch (IOException e) {
Log.error("Bad JAR file ", e);
}
}
}
}
}