/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.maven;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Map;
import java.util.Properties;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import com.mysema.rdfbean.beangen.JavaBeanExporter;
import com.mysema.rdfbean.model.Format;
import com.mysema.rdfbean.model.io.RDFSource;
import com.mysema.rdfbean.object.DefaultConfiguration;
import com.mysema.rdfbean.object.Session;
import com.mysema.rdfbean.object.SessionFactoryImpl;
import com.mysema.rdfbean.owl.OWLClass;
import com.mysema.rdfbean.rdfs.RDFSClass;
import com.mysema.rdfbean.sesame.MemoryRepository;
/**
* JavaBeanGenMojo provides a Maven plugin for Java Bean generation from
* OWL/RDF-S schemas
*
* @author tiwe
* @version $Id$
*
* @goal beangen
* @phase generate-sources
*/
public class JavaBeanGenMojo extends AbstractMojo {
/**
* @parameter
*/
private File schemaFile;
/**
* @parameter
*/
private File targetFolder;
/**
* @parameter
*/
private boolean useTurtle;
/**
* @parameter
*/
private Properties nsToPackage;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
MemoryRepository repository = new MemoryRepository();
Format format = useTurtle ? Format.TURTLE : Format.RDFXML;
try {
repository.setSources(new RDFSource(schemaFile.getAbsoluteFile().toURI().toURL().toString(), format, "http://www.mysema.com"));
} catch (MalformedURLException e1) {
throw new MojoExecutionException(e1.getMessage(), e1);
}
DefaultConfiguration configuration = new DefaultConfiguration();
configuration.addPackages(RDFSClass.class.getPackage(), OWLClass.class.getPackage());
SessionFactoryImpl sessionFactory = new SessionFactoryImpl();
sessionFactory.setConfiguration(configuration);
sessionFactory.setRepository(repository);
sessionFactory.initialize();
Session session = sessionFactory.openSession();
try {
JavaBeanExporter exporter = new JavaBeanExporter(true);
for (Map.Entry<Object, Object> entry : nsToPackage.entrySet()) {
exporter.addPackage(entry.getKey().toString(), entry.getValue().toString());
}
exporter.export(session, targetFolder);
} catch (IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
} finally {
try {
session.close();
} finally {
sessionFactory.close();
}
}
}
}