Search in sources :

Example 1 with IGenericExporter

use of org.jboss.tools.hibernate.runtime.spi.IGenericExporter in project jbosstools-hibernate by jbosstools.

the class ExporterFactory method createConfiguredExporter.

/**
 * Creates exporter with the specified settings; also resolves any relevant properties via Eclipse VariablesPlugin.
 * @param collector
 * @throws CoreException in case of resolve variables issues.
 */
public IExporter createConfiguredExporter(IConfiguration cfg, String defaultOutputDirectory, String customTemplatePath, Properties globalProperties, Set<String> outputDirectories, IArtifactCollector collector, IService service) throws CoreException {
    IExporter exporter = getExporterDefinition().createExporterInstance(service);
    Properties extract = new Properties();
    Properties props = new Properties();
    props.putAll(globalProperties);
    props.putAll(getProperties());
    extractExporterProperties(getExporterDefinitionId(), props, extract);
    cfg.addProperties(props);
    exporter.setArtifactCollector(collector);
    String outputPath = defaultOutputDirectory;
    if (extract.containsKey(ExporterFactoryStrings.OUTPUTDIR)) {
        outputPath = extract.getProperty(ExporterFactoryStrings.OUTPUTDIR);
    }
    String resolvedOutputDir = resolve(outputPath);
    String loc = PathHelper.getLocationAsStringPath(resolvedOutputDir);
    if (outputPath != null && loc == null) {
        String out = NLS.bind(HibernateConsoleMessages.ExporterFactory_output_dir_in_does_not_exist, resolvedOutputDir, getExporterDefinition().getDescription());
        throw new HibernateConsoleRuntimeException(out);
    }
    if (StringHelper.isNotEmpty(loc)) {
        // only set if something valid found
        outputDirectories.add(loc);
        exporter.setOutputDirectory(new File(loc));
    }
    exporter.setConfiguration(cfg);
    List<String> templatePathList = new ArrayList<String>();
    if (extract.containsKey(ExporterFactoryStrings.TEMPLATE_PATH)) {
        String resolveTemplatePath = resolve(extract.getProperty(ExporterFactoryStrings.TEMPLATE_PATH));
        // $NON-NLS-1$
        StringTokenizer st = new StringTokenizer(resolveTemplatePath, ";");
        // $NON-NLS-1$
        String out = "";
        while (st.hasMoreTokens()) {
            String locationAsStringPath = PathHelper.getLocationAsStringPath(st.nextToken());
            if (locationAsStringPath == null) {
                out += NLS.bind(HibernateConsoleMessages.ExporterFactory_template_dir_in_does_not_exist, resolveTemplatePath, getExporterDefinition().getDescription()) + '\n';
            } else {
                templatePathList.add(locationAsStringPath);
            }
        }
        if (out.length() > 0) {
            out = out.substring(0, out.length() - 1);
            throw new HibernateConsoleRuntimeException(out);
        }
    }
    if (StringHelper.isNotEmpty(customTemplatePath)) {
        String resolvedCustomTemplatePath = resolve(customTemplatePath);
        // $NON-NLS-1$
        StringTokenizer st = new StringTokenizer(resolvedCustomTemplatePath, ";");
        // $NON-NLS-1$
        String out = "";
        while (st.hasMoreTokens()) {
            String locationAsStringPath = PathHelper.getLocationAsStringPath(st.nextToken());
            if (locationAsStringPath != null) {
                templatePathList.add(locationAsStringPath);
            } else {
                out = NLS.bind(HibernateConsoleMessages.ExporterFactory_template_dir_in_does_not_exist, resolvedCustomTemplatePath, getExporterDefinition().getDescription());
            }
        }
        if (!("".equals(out))) {
            // $NON-NLS-1$
            out = out.substring(0, out.length() - 1);
            throw new HibernateConsoleRuntimeException(out);
        }
    }
    exporter.setTemplatePath(templatePathList.toArray(new String[templatePathList.size()]));
    // special handling for GenericExporter (TODO: be delegated via plugin.xml)
    if (getExporterDefinitionId().equals("org.hibernate.tools.hbmtemplate")) {
        // $NON-NLS-1$
        IGenericExporter ge = exporter.getGenericExporter();
        ge.setFilePattern(extract.getProperty(ExporterFactoryStrings.FILE_PATTERN));
        ge.setTemplateName(extract.getProperty(ExporterFactoryStrings.TEMPLATE_NAME));
        ge.setForEach(extract.getProperty(ExporterFactoryStrings.FOR_EACH));
    }
    // special handling for Hbm2DDLExporter
    if (getExporterDefinitionId().equals("org.hibernate.tools.hbm2ddl")) {
        // $NON-NLS-1$
        IHbm2DDLExporter ddlExporter = exporter.getHbm2DDLExporter();
        // avoid users to delete their databases with a single click
        ddlExporter.setExport(Boolean.parseBoolean(extract.getProperty(ExporterFactoryStrings.EXPORTTODATABASE)));
    }
    // special handling for QueryExporter
    if (getExporterDefinitionId().equals("org.hibernate.tools.query")) {
        // $NON-NLS-1$
        IQueryExporter queryExporter = exporter.getQueryExporter();
        List<String> queryStrings = new ArrayList<String>();
        // $NON-NLS-1$
        queryStrings.add(extract.getProperty(ExporterFactoryStrings.QUERY_STRING, ""));
        queryExporter.setQueries(queryStrings);
        queryExporter.setFilename(extract.getProperty(ExporterFactoryStrings.OUTPUTFILENAME));
    }
    return exporter;
}
Also used : StringTokenizer(java.util.StringTokenizer) IHbm2DDLExporter(org.jboss.tools.hibernate.runtime.spi.IHbm2DDLExporter) ArrayList(java.util.ArrayList) IQueryExporter(org.jboss.tools.hibernate.runtime.spi.IQueryExporter) IExporter(org.jboss.tools.hibernate.runtime.spi.IExporter) HibernateConsoleRuntimeException(org.hibernate.console.HibernateConsoleRuntimeException) Properties(java.util.Properties) File(java.io.File) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter)

Example 2 with IGenericExporter

use of org.jboss.tools.hibernate.runtime.spi.IGenericExporter in project jbosstools-hibernate by jbosstools.

the class ExporterAttributesTest method checkCorrectLaunchConfigurationFile.

private void checkCorrectLaunchConfigurationFile(final String fileName) {
    // IWorkspace ws = ResourcesPlugin.getWorkspace();
    String str1, str2;
    ILaunchConfiguration launchConfig = loadLaunchConfigFromFile(fileName);
    Map<String, Object> attrMap = null;
    try {
        attrMap = launchConfig.getAttributes();
    } catch (CoreException e) {
        e.printStackTrace();
    }
    Assert.assertNotNull(attrMap);
    ExporterAttributes exporterAttributes = null;
    try {
        exporterAttributes = new ExporterAttributes(launchConfig);
    } catch (CoreException e) {
        e.printStackTrace();
    }
    Assert.assertNotNull(exporterAttributes);
    // check is configuration correct
    Assert.assertNull(exporterAttributes.checkExporterAttributes());
    List<ExporterFactory> exporterFactories = exporterAttributes.getExporterFactories();
    Set<ExporterFactory> selectedExporters = new HashSet<ExporterFactory>();
    selectedExporters.addAll(exporterFactories);
    Set<String> deletedExporterIds = new HashSet<String>();
    ILaunchConfigurationWorkingCopy launchConfigWC = null;
    try {
        launchConfigWC = launchConfig.getWorkingCopy();
    } catch (CoreException e) {
        e.printStackTrace();
    }
    Assert.assertNotNull(launchConfigWC);
    // 
    str1 = project.getSample(fileName);
    str1 = ResourceReadUtils.adjustXmlText(str1);
    // 
    Assert.assertNotNull(project);
    Assert.assertNotNull(project.getIProject());
    Assert.assertNotNull(project.getIProject().getFile(fileName));
    // 
    InputStream is = null;
    try {
        is = project.getIProject().getFile(fileName).getContents();
    } catch (CoreException e) {
        e.printStackTrace();
    }
    Assert.assertNotNull(is);
    str2 = ResourceReadUtils.readStream(is);
    str2 = ResourceReadUtils.adjustXmlText(str2);
    Assert.assertEquals(str1, str2);
    // update and save lc - so fileName from the project updated
    try {
        ExporterAttributes.saveExporterFactories(launchConfigWC, exporterFactories, selectedExporters, deletedExporterIds);
        launchConfigWC.doSave();
    } catch (CoreException e) {
        Assert.fail(e.getMessage());
    }
    // 
    is = null;
    try {
        is = project.getIProject().getFile(fileName).getContents();
    } catch (CoreException e) {
        e.printStackTrace();
    }
    Assert.assertNotNull(is);
    str2 = ResourceReadUtils.readStream(is);
    str2 = ResourceReadUtils.adjustXmlText(str2);
    Assert.assertEquals(str1, str2);
    // 
    IArtifactCollector artifactCollector = service.newArtifactCollector();
    ExporterAttributes expAttr = exporterAttributes;
    // Global properties
    Properties props = new Properties();
    // $NON-NLS-1$
    props.put(CodeGenerationStrings.EJB3, "" + expAttr.isEJB3Enabled());
    // $NON-NLS-1$
    props.put(CodeGenerationStrings.JDK5, "" + expAttr.isJDK5Enabled());
    consoleCfg.build();
    IConfiguration cfg = consoleCfg.getConfiguration();
    Assert.assertNotNull(cfg);
    Set<String> outputDirectories = new HashSet<String>();
    for (int i = 0; i < exporterFactories.size(); i++) {
        Properties globalProperties = new Properties();
        globalProperties.putAll(props);
        ExporterFactory ef = exporterFactories.get(i);
        // 
        Properties propsForTesting = new Properties();
        propsForTesting.putAll(globalProperties);
        propsForTesting.putAll(ef.getProperties());
        // 
        IExporter exporter = null;
        outputDirectories.clear();
        try {
            exporter = ef.createConfiguredExporter(cfg, expAttr.getOutputPath(), expAttr.getTemplatePath(), globalProperties, outputDirectories, artifactCollector, service);
        } catch (CoreException e) {
            e.printStackTrace();
        }
        Assert.assertNotNull(exporter);
        Assert.assertTrue(outputDirectories.size() > 0);
        Properties propsFromExporter = exporter.getProperties();
        String exporterDefinitionId = ef.getExporterDefinitionId();
        // test special handling for GenericExporter
        if (exporterDefinitionId.equals("org.hibernate.tools.hbmtemplate")) {
            // $NON-NLS-1$
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.FILE_PATTERN));
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.TEMPLATE_NAME));
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.FOR_EACH));
            IGenericExporter ge = exporter.getGenericExporter();
            Assert.assertNotNull(ge);
            Assert.assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.FILE_PATTERN), ge.getFilePattern());
            Assert.assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.TEMPLATE_NAME), ge.getTemplateName());
        // to test GenericExporter should provide public getter but it doesn't
        // assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.FOR_EACH), ge.getForEach());
        }
        // test special handling for Hbm2DDLExporter
        if (exporterDefinitionId.equals("org.hibernate.tools.hbm2ddl")) {
            // $NON-NLS-1$
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.EXPORTTODATABASE));
            IHbm2DDLExporter ddlExporter = exporter.getHbm2DDLExporter();
            Assert.assertNotNull(ddlExporter);
        // to test Hbm2DDLExporter should provide public getter but it doesn't
        // assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.EXPORTTODATABASE), ddlExporter.getExport());
        }
        // test special handling for QueryExporter
        if (exporterDefinitionId.equals("org.hibernate.tools.query")) {
            // $NON-NLS-1$
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.QUERY_STRING));
            Assert.assertNull(propsFromExporter.getProperty(ExporterFactoryStrings.OUTPUTFILENAME));
        // IQueryExporter queryExporter = exporter.getQueryExporter();
        // to test QueryExporter should provide public getter but it doesn't
        // List<String> queryStrings = queryExporter.getQueries();
        // assertEquals(1, queryStrings.size());
        // assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.QUERY_STRING), queryStrings.get(0));
        // assertEquals(propsForTesting.getProperty(ExporterFactoryStrings.OUTPUTFILENAME), queryExporter.getFileName());
        }
    // try {
    // exporter.start();
    // } catch (HibernateException he) {
    // he.printStackTrace();
    // }
    }
    Assert.assertTrue(artifactCollector.getFileTypes().size() == 0);
}
Also used : ILaunchConfiguration(org.eclipse.debug.core.ILaunchConfiguration) InputStream(java.io.InputStream) ILaunchConfigurationWorkingCopy(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) Properties(java.util.Properties) ExporterAttributes(org.hibernate.eclipse.launch.ExporterAttributes) CoreException(org.eclipse.core.runtime.CoreException) IArtifactCollector(org.jboss.tools.hibernate.runtime.spi.IArtifactCollector) IHbm2DDLExporter(org.jboss.tools.hibernate.runtime.spi.IHbm2DDLExporter) ExporterFactory(org.hibernate.eclipse.console.model.impl.ExporterFactory) IExporter(org.jboss.tools.hibernate.runtime.spi.IExporter) IConfiguration(org.jboss.tools.hibernate.runtime.spi.IConfiguration) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) HashSet(java.util.HashSet)

Example 3 with IGenericExporter

use of org.jboss.tools.hibernate.runtime.spi.IGenericExporter in project jbosstools-hibernate by jbosstools.

the class ExporterFacadeTest method testGetGenericExporter.

@Test
public void testGetGenericExporter() {
    IGenericExporter genericExporter = exporterFacade.getGenericExporter();
    Assert.assertNull(genericExporter);
    exporter = new GenericExporter();
    exporterFacade = new AbstractExporterFacade(FACADE_FACTORY, exporter) {
    };
    genericExporter = exporterFacade.getGenericExporter();
    Assert.assertNotNull(genericExporter);
    Assert.assertSame(exporter, ((IFacade) genericExporter).getTarget());
}
Also used : GenericExporter(org.hibernate.tool.hbm2x.GenericExporter) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) AbstractExporterFacade(org.jboss.tools.hibernate.runtime.common.AbstractExporterFacade) Test(org.junit.Test)

Example 4 with IGenericExporter

use of org.jboss.tools.hibernate.runtime.spi.IGenericExporter in project jbosstools-hibernate by jbosstools.

the class FacadeFactoryTest method testCreateGenericExporter.

@Test
public void testCreateGenericExporter() {
    GenericExporter genericExporter = new GenericExporter();
    IGenericExporter facade = facadeFactory.createGenericExporter(genericExporter);
    Assert.assertSame(genericExporter, ((IFacade) facade).getTarget());
}
Also used : IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) GenericExporter(org.hibernate.tool.hbm2x.GenericExporter) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) Test(org.junit.Test)

Example 5 with IGenericExporter

use of org.jboss.tools.hibernate.runtime.spi.IGenericExporter in project jbosstools-hibernate by jbosstools.

the class FacadeFactoryTest method testCreateGenericExporter.

@Test
public void testCreateGenericExporter() {
    GenericExporter genericExporter = new GenericExporter();
    IGenericExporter facade = facadeFactory.createGenericExporter(genericExporter);
    Assert.assertSame(genericExporter, ((IFacade) facade).getTarget());
}
Also used : IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) GenericExporter(org.hibernate.tool.hbm2x.GenericExporter) IGenericExporter(org.jboss.tools.hibernate.runtime.spi.IGenericExporter) Test(org.junit.Test)

Aggregations

IGenericExporter (org.jboss.tools.hibernate.runtime.spi.IGenericExporter)18 GenericExporter (org.hibernate.tool.hbm2x.GenericExporter)16 Test (org.junit.Test)16 AbstractExporterFacade (org.jboss.tools.hibernate.runtime.common.AbstractExporterFacade)8 Properties (java.util.Properties)2 IExporter (org.jboss.tools.hibernate.runtime.spi.IExporter)2 IHbm2DDLExporter (org.jboss.tools.hibernate.runtime.spi.IHbm2DDLExporter)2 File (java.io.File)1 InputStream (java.io.InputStream)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 StringTokenizer (java.util.StringTokenizer)1 CoreException (org.eclipse.core.runtime.CoreException)1 ILaunchConfiguration (org.eclipse.debug.core.ILaunchConfiguration)1 ILaunchConfigurationWorkingCopy (org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)1 HibernateConsoleRuntimeException (org.hibernate.console.HibernateConsoleRuntimeException)1 ExporterFactory (org.hibernate.eclipse.console.model.impl.ExporterFactory)1 ExporterAttributes (org.hibernate.eclipse.launch.ExporterAttributes)1 IArtifactCollector (org.jboss.tools.hibernate.runtime.spi.IArtifactCollector)1 IConfiguration (org.jboss.tools.hibernate.runtime.spi.IConfiguration)1