/** * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/lgpl-3.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kevoree.tools.nativeCode.mavenplugin.utils; import org.apache.maven.model.Model; import org.apache.maven.model.Parent; import org.apache.maven.model.io.xpp3.MavenXpp3Writer; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.IOUtil; import org.kevoree.KevoreeFactory; import org.kevoree.impl.DefaultKevoreeFactory; import org.kevoree.tools.nativeCode.mavenplugin.GenerateFilesMojo; import org.kevoree.tools.nativeN.utils.FileManager; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created with IntelliJ IDEA. * User: jed * Date: 09/10/12 * Time: 16:03 * To change this template use File | Settings | File Templates. */ public class MavenHelper { /* Check file header */ public static List<File> scanForKevScript(File modelDir) { List<File> models = new ArrayList(); for (File f : modelDir.listFiles()) { if(f.isDirectory()){ return scanForKevScript(f); } else { if (f.getName().endsWith(".kevs")) { String file = new String(FileManager.load(f.getAbsolutePath())); if(file.contains("createComponentType")){ models.add(f); } } } } return models; } public static void createPom(String path_template,String path_ouput,Model model,MavenProject project) throws IOException { KevoreeFactory factory = new DefaultKevoreeFactory(); String pom_component = new String(FileManager.load(GenerateFilesMojo.class.getClassLoader().getResourceAsStream(path_template))); pom_component= pom_component.replace("$groupId$", model.getGroupId()); pom_component= pom_component.replace("$artifactId$",model.getArtifactId()); pom_component= pom_component.replace("$version$", model.getArtifactId()); pom_component= pom_component.replace("$NAME$",model.getName()); pom_component = pom_component.replace("$VERSION_K$", factory.getVersion()); pom_component = pom_component.replace("$artifactId_parent$",project.getArtifactId()); pom_component = pom_component.replace("$version_parent$",project.getVersion()); MavenHelper.writeFile(path_ouput,pom_component,false,false); } public static void writeModel(Model model) throws IOException { FileWriter writer = null; try { model.getPomFile().getParentFile().mkdirs(); writer = new FileWriter( model.getPomFile() ); new MavenXpp3Writer().write( writer, model ); writer.flush(); } finally { IOUtil.close(writer); } } public static Parent createParent(MavenProject project) { return createParent( project.getGroupId(), project.getArtifactId(), project.getVersion() ); } private static Parent createParent( Model model ) { return createParent( model.getGroupId(), model.getArtifactId(), model.getVersion() ); } private static Parent createParent( String groupId, String artifactId, String version ) { Parent plugin = new Parent(); plugin.setGroupId( groupId ); plugin.setArtifactId( artifactId ); plugin.setVersion( version ); return plugin; } public static Model createModel(String groupId, String artifactId, String version, Parent parent, MavenProject parentProject) throws IOException { Model model = new Model(); model.setArtifactId( artifactId ); model.setGroupId( groupId ); model.setVersion( version ); model.setModelVersion("4.0.0"); model.setParent(parent); model.setName(""); File parentBase = parentProject.getBasedir(); File pomFile = new File( parentBase, artifactId+"/pom.xml"); model.setPomFile(pomFile); return model; } public static void writeFile(String path,String data,Boolean append,boolean backup) throws IOException { File file = new File(path.substring(0,path.lastIndexOf("/"))); file.mkdirs(); FileWriter fileWriter = new FileWriter(path,append); BufferedWriter out_j = new BufferedWriter(fileWriter); out_j.write(data); out_j.close(); } }