Search in sources :

Example 6 with IService

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

the class OpenMappingAction method run.

/**
 * @param consoleConfig
 * @param compositeProperty
 * @param parentProperty
 * @throws JavaModelException
 * @throws PartInitException
 * @throws FileNotFoundException
 * @throws BadLocationException
 */
public static IEditorPart run(ConsoleConfiguration consoleConfig, IProperty compositeProperty, IProperty parentProperty) throws PartInitException, JavaModelException, FileNotFoundException {
    IPersistentClass rootClass = parentProperty.getPersistentClass();
    IFile file = OpenMappingUtils.searchFileToOpen(consoleConfig, rootClass);
    IEditorPart editorPart = null;
    if (file != null) {
        editorPart = OpenMappingUtils.openFileInEditor(file);
        IService service = consoleConfig.getHibernateExtension().getHibernateService();
        updateEditorSelection(editorPart, compositeProperty, parentProperty, service);
    }
    if (editorPart == null && parentProperty.isComposite()) {
        if (OpenMappingUtils.hasConfigXMLMappingClassAnnotation(consoleConfig, rootClass)) {
            String fullyQualifiedName = parentProperty.getValue().getComponentClassName();
            editorPart = OpenSourceAction.run(consoleConfig, compositeProperty, fullyQualifiedName);
        }
    }
    if (editorPart == null) {
        final String title = HibernateConsoleMessages.OpenMappingAction_open_mapping_file;
        final String msg = NLS.bind(HibernateConsoleMessages.OpenMappingAction_mapping_file_for_property_not_found, compositeProperty.getName());
        MessageDialog.openError(null, title, msg);
        throw new FileNotFoundException(msg);
    }
    return editorPart;
}
Also used : IFile(org.eclipse.core.resources.IFile) FileNotFoundException(java.io.FileNotFoundException) IEditorPart(org.eclipse.ui.IEditorPart) IPersistentClass(org.jboss.tools.hibernate.runtime.spi.IPersistentClass) IService(org.jboss.tools.hibernate.runtime.spi.IService)

Example 7 with IService

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

the class LazyDatabaseSchemaWorkbenchAdapter method readDatabaseSchema.

protected IDatabaseCollector readDatabaseSchema(final IProgressMonitor monitor, final ConsoleConfiguration consoleConfiguration, final IReverseEngineeringStrategy strategy) {
    final IConfiguration configuration = consoleConfiguration.buildWith(null, false);
    return (IDatabaseCollector) consoleConfiguration.execute(new ExecutionContext.Command() {

        public Object execute() {
            IDatabaseCollector db = null;
            try {
                IService service = consoleConfiguration.getHibernateExtension().getHibernateService();
                IJDBCReader reader = service.newJDBCReader(configuration, strategy);
                db = service.newDatabaseCollector(reader);
                reader.readDatabaseSchema(db, new ProgressListener(monitor));
            } catch (UnsupportedOperationException he) {
                throw new HibernateException(he);
            } catch (Exception he) {
                he.printStackTrace();
                throw new HibernateException(he.getMessage(), he.getCause());
            }
            return db;
        }
    });
}
Also used : IProgressListener(org.jboss.tools.hibernate.runtime.spi.IProgressListener) HibernateException(org.jboss.tools.hibernate.runtime.spi.HibernateException) IConfiguration(org.jboss.tools.hibernate.runtime.spi.IConfiguration) IDatabaseCollector(org.jboss.tools.hibernate.runtime.spi.IDatabaseCollector) IService(org.jboss.tools.hibernate.runtime.spi.IService) HibernateException(org.jboss.tools.hibernate.runtime.spi.HibernateException) IJDBCReader(org.jboss.tools.hibernate.runtime.spi.IJDBCReader)

Example 8 with IService

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

the class TypeVisitor method createHierarhyStructure.

/**
 * Replace <class> element on <joined-subclass> or <subclass>.
 * @param project
 * @param rootClasses
 * @return
 */
private Collection<IPersistentClass> createHierarhyStructure(IJavaProject project, Map<String, IPersistentClass> rootClasses) {
    IService service = getService(project);
    Map<String, IPersistentClass> pcCopy = new HashMap<String, IPersistentClass>();
    for (Map.Entry<String, IPersistentClass> entry : rootClasses.entrySet()) {
        pcCopy.put(entry.getKey(), entry.getValue());
    }
    for (Map.Entry<String, IPersistentClass> entry : pcCopy.entrySet()) {
        IPersistentClass pc = null;
        try {
            pc = getMappedSuperclass(project, pcCopy, entry.getValue());
            IPersistentClass subclass = null;
            if (pc != null) {
                if (pc.isAbstract()) {
                    subclass = service.newSingleTableSubclass(pc);
                    if (pc.isInstanceOfRootClass() && pc.getDiscriminator() == null) {
                        IValue discr = service.newSimpleValue();
                        // $NON-NLS-1$
                        discr.setTypeName("string");
                        // $NON-NLS-1$
                        discr.addColumn(service.newColumn("DISCR_COL"));
                        pc.setDiscriminator(discr);
                    }
                } else {
                    subclass = service.newJoinedSubclass(pc);
                }
            } else {
                pc = getMappedImplementedInterface(project, pcCopy, entry.getValue());
                if (pc != null) {
                    subclass = service.newSingleTableSubclass(pc);
                }
            }
            if (subclass != null) {
                IPersistentClass pastClass = pcCopy.get(entry.getKey());
                subclass.setClassName(pastClass.getClassName());
                subclass.setEntityName(pastClass.getEntityName());
                subclass.setDiscriminatorValue(StringHelper.unqualify(pastClass.getClassName()));
                subclass.setAbstract(pastClass.isAbstract());
                if (subclass.isInstanceOfJoinedSubclass()) {
                    subclass.setTable(service.newTable(StringHelper.unqualify(pastClass.getClassName()).toUpperCase()));
                    subclass.setKey(pc.getIdentifierProperty().getValue());
                }
                if (pastClass.getIdentifierProperty() != null) {
                    subclass.addProperty(pastClass.getIdentifierProperty());
                }
                Iterator<IProperty> it = pastClass.getPropertyIterator();
                while (it.hasNext()) {
                    subclass.addProperty(it.next());
                }
                entry.setValue(subclass);
            }
        } catch (JavaModelException e) {
            HibernateConsolePlugin.getDefault().log(e);
        }
    }
    return pcCopy.values();
}
Also used : JavaModelException(org.eclipse.jdt.core.JavaModelException) IValue(org.jboss.tools.hibernate.runtime.spi.IValue) HashMap(java.util.HashMap) IProperty(org.jboss.tools.hibernate.runtime.spi.IProperty) HashMap(java.util.HashMap) Map(java.util.Map) IService(org.jboss.tools.hibernate.runtime.spi.IService) IPersistentClass(org.jboss.tools.hibernate.runtime.spi.IPersistentClass)

Example 9 with IService

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

the class CodeGenXMLFactory method createRoot.

@SuppressWarnings("unchecked")
protected Element createRoot() {
    ExporterAttributes attributes = null;
    try {
        attributes = new ExporterAttributes(lc);
    } catch (CoreException e) {
    // ignore
    }
    if (attributes == null) {
        return null;
    }
    Properties props = new Properties();
    if (attributes.isReverseEngineer()) {
        props.setProperty(ConfigurationXMLStrings.ISREVENG, Boolean.toString(attributes.isReverseEngineer()));
        props.setProperty(ConfigurationXMLStrings.PACKAGENAME, attributes.getPackageName());
        props.setProperty(ConfigurationXMLStrings.PREFERBASICCOMPOSITEIDS, Boolean.toString(attributes.isPreferBasicCompositeIds()));
        props.setProperty(ConfigurationXMLStrings.DETECTMANYTOMANY, Boolean.toString(attributes.detectManyToMany()));
        props.setProperty(ConfigurationXMLStrings.DETECTONTTOONE, Boolean.toString(attributes.detectOneToOne()));
        props.setProperty(ConfigurationXMLStrings.DETECTOPTIMISTICLOCK, Boolean.toString(attributes.detectOptimisticLock()));
        props.setProperty(ConfigurationXMLStrings.REVERSESTRATEGY, attributes.getRevengStrategy());
        String revEngFile = getResLocation(attributes.getRevengSettings());
        props.setProperty(ConfigurationXMLStrings.REVENGFILE, revEngFile);
    }
    // 
    final IPath pathPlace2Generate = isEmpty(place2Generate) ? null : new Path(getResLocation(place2Generate));
    final IPath pathWorkspacePath = isEmpty(workspacePath) ? null : new Path(getResLocation(workspacePath));
    // 
    String consoleConfigName = attributes.getConsoleConfigurationName();
    ConsoleConfigurationPreferences consoleConfigPrefs = getConsoleConfigPreferences(consoleConfigName);
    final ConfigurationXMLFactory configurationXMLFactory = new ConfigurationXMLFactory(consoleConfigPrefs, props);
    configurationXMLFactory.setPlace2Generate(pathPlace2Generate);
    configurationXMLFactory.setWorkspacePath(pathWorkspacePath);
    Element rootConsoleConfig = configurationXMLFactory.createRoot();
    // 
    // $NON-NLS-1$
    String defaultTargetName = "hibernateAntCodeGeneration";
    Element el, root = DocumentFactory.getInstance().createElement(CodeGenerationStrings.PROJECT);
    // $NON-NLS-1$
    root.addAttribute(CodeGenerationStrings.NAME, "CodeGen");
    root.addAttribute(CodeGenerationStrings.DEFAULT, defaultTargetName);
    // 
    if (!isEmpty(place2Generate)) {
        el = root.addElement(CodeGenerationStrings.PROPERTY);
        el.addAttribute(CodeGenerationStrings.NAME, varCurrentDir);
        el.addAttribute(CodeGenerationStrings.LOCATION, getPlace2GenerateUID());
    }
    if (!isEmpty(workspacePath)) {
        el = root.addElement(CodeGenerationStrings.PROPERTY);
        el.addAttribute(CodeGenerationStrings.NAME, varWorkspaceDir);
        el.addAttribute(CodeGenerationStrings.LOCATION, getWorkspacePathUID());
    }
    // 
    String location = getResLocation(attributes.getOutputPath());
    location = ConfigurationXMLFactory.makePathRelative(location, pathPlace2Generate, pathWorkspacePath);
    el = root.addElement(CodeGenerationStrings.PROPERTY);
    el.addAttribute(CodeGenerationStrings.NAME, varBuildDir);
    el.addAttribute(CodeGenerationStrings.LOCATION, location);
    // 
    String hibernatePropFile = null;
    String generateHibernatePropeties = null;
    String connProfileName = consoleConfigPrefs == null ? null : consoleConfigPrefs.getConnectionProfileName();
    IConnectionProfile profile = getConnectionProfile(connProfileName);
    boolean bPropFile = profile != null;
    // update property with fake tm
    Properties propsTmp = null;
    String[] versions = ServiceLookup.getVersions();
    String maxVersion = versions[versions.length - 1];
    String hibernateVersion = consoleConfigPrefs == null ? maxVersion : consoleConfigPrefs.getHibernateVersion();
    IService service = ServiceLookup.findService(hibernateVersion);
    IEnvironment environment = service.getEnvironment();
    if (consoleConfigPrefs != null && consoleConfigPrefs.getPropertyFile() != null) {
        propsTmp = consoleConfigPrefs.getProperties();
        String tmStrategy = propsTmp.getProperty(environment.getTransactionManagerStrategy());
        if (tmStrategy != null && StringHelper.isEmpty(tmStrategy)) {
            propsTmp.setProperty(environment.getTransactionManagerStrategy(), ConfigurationFactory.FAKE_TM_LOOKUP);
            bPropFile = true;
        }
    }
    if (bPropFile) {
        Set<String> specialProps = new TreeSet<String>();
        specialProps.add(environment.getDriver());
        specialProps.add(environment.getURL());
        specialProps.add(environment.getUser());
        specialProps.add(environment.getPass());
        specialProps.add(environment.getDialect());
        // 
        if (propsTmp == null) {
            propsTmp = new Properties();
        }
        StringBuilder propFileContent = new StringBuilder();
        String driverClass = getDriverClass(connProfileName);
        if (profile != null) {
            final Properties cpProperties = profile.getProperties(profile.getProviderId());
            // 
            String url = cpProperties.getProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID);
            // 
            String user = cpProperties.getProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID);
            // 
            String pass = cpProperties.getProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID);
            // 
            String dialectName = consoleConfigPrefs.getDialectName();
            // 
            propsTmp.setProperty(environment.getDriver(), driverClass);
            propsTmp.setProperty(environment.getURL(), url);
            propsTmp.setProperty(environment.getUser(), user);
            propsTmp.setProperty(environment.getPass(), pass);
            if (StringHelper.isNotEmpty(dialectName)) {
                propsTmp.setProperty(environment.getDialect(), dialectName);
            }
        }
        // output keys in sort order
        Object[] keys = propsTmp.keySet().toArray();
        Arrays.sort(keys);
        // 
        if (externalPropFile) {
            for (Object obj : keys) {
                addIntoPropFileContent(propFileContent, obj.toString(), propsTmp.getProperty(obj.toString()));
            }
        } else {
            for (Object obj : keys) {
                if (specialProps.contains(obj)) {
                    el = root.addElement(CodeGenerationStrings.PROPERTY);
                    el.addAttribute(CodeGenerationStrings.NAME, obj.toString());
                    el.addAttribute(CodeGenerationStrings.VALUE, propsTmp.getProperty(obj.toString()));
                    addIntoPropFileContent(propFileContent, obj.toString());
                } else {
                    addIntoPropFileContent(propFileContent, obj.toString(), propsTmp.getProperty(obj.toString()));
                }
            }
        }
        if (externalPropFile) {
            hibernatePropFile = externalPropFileName;
        } else {
            // $NON-NLS-1$
            hibernatePropFile = "hibernatePropFile";
            el = root.addElement(CodeGenerationStrings.PROPERTY);
            el.addAttribute(CodeGenerationStrings.NAME, hibernatePropFile);
            // $NON-NLS-1$
            el.addAttribute(CodeGenerationStrings.VALUE, "${java.io.tmpdir}${ant.project.name}-hibernate.properties");
            // 
            // $NON-NLS-1$
            generateHibernatePropeties = "generateHibernatePropeties";
            Element target = root.addElement(CodeGenerationStrings.TARGET);
            target.addAttribute(CodeGenerationStrings.NAME, generateHibernatePropeties);
            // 
            hibernatePropFile = getVar(hibernatePropFile);
            Element echo = target.addElement(CodeGenerationStrings.ECHO);
            echo.addAttribute(CodeGenerationStrings.FILE, hibernatePropFile);
            echo.addText(getPropFileContentStubUID());
        }
        propFileContentPreSave = propFileContent.toString().trim();
    }
    // all jars from libraries should be here
    // $NON-NLS-1$
    String toolslibID = "toolslib";
    Element toolslib = root.addElement(CodeGenerationStrings.PATH);
    toolslib.addAttribute(CodeGenerationStrings.ID, toolslibID);
    final URL[] customClassPathURLs = PreferencesClassPathUtils.getCustomClassPathURLs(consoleConfigPrefs);
    for (int i = 0; i < customClassPathURLs.length; i++) {
        if (customClassPathURLs[i] == null) {
            continue;
        }
        // what is right here: CodeGenerationStrings.PATH or CodeGenerationStrings.PATHELEMENT?
        // http://www.redhat.com/docs/en-US/JBoss_Developer_Studio/en/hibernatetools/html/ant.html
        // use CodeGenerationStrings.PATH - so may be error in documentation?
        Element pathItem = toolslib.addElement(CodeGenerationStrings.PATH);
        // Element pathItem = toolslib.addElement(CodeGenerationStrings.PATHELEMENT);
        String strPathItem = customClassPathURLs[i].getPath();
        try {
            strPathItem = (new java.io.File(customClassPathURLs[i].toURI())).getPath();
        } catch (URISyntaxException e) {
        // ignore
        }
        strPathItem = new Path(strPathItem).toString();
        strPathItem = ConfigurationXMLFactory.makePathRelative(strPathItem, pathPlace2Generate, pathWorkspacePath);
        pathItem.addAttribute(CodeGenerationStrings.LOCATION, strPathItem);
    }
    // 
    Element target = root.addElement(CodeGenerationStrings.TARGET);
    target.addAttribute(CodeGenerationStrings.NAME, defaultTargetName);
    if (!isEmpty(generateHibernatePropeties)) {
        target.addAttribute(CodeGenerationStrings.DEPENDS, generateHibernatePropeties);
    }
    // 
    Element taskdef = target.addElement(CodeGenerationStrings.TASKDEF);
    taskdef.addAttribute(CodeGenerationStrings.NAME, CodeGenerationStrings.HIBERNATETOOL);
    // $NON-NLS-1$
    taskdef.addAttribute(CodeGenerationStrings.CLASSNAME, "org.hibernate.tool.ant.HibernateToolTask");
    taskdef.addAttribute(CodeGenerationStrings.CLASSPATHREF, toolslibID);
    // 
    Element hibernatetool = target.addElement(CodeGenerationStrings.HIBERNATETOOL);
    hibernatetool.addAttribute(CodeGenerationStrings.DESTDIR, getVar(varBuildDir));
    if (attributes.isUseOwnTemplates()) {
        String templatePath = getResLocation(attributes.getTemplatePath());
        hibernatetool.addAttribute(CodeGenerationStrings.TEMPLATEPATH, templatePath);
    }
    if (rootConsoleConfig != null) {
        if (StringHelper.isNotEmpty(hibernatePropFile)) {
            rootConsoleConfig.addAttribute(ConfigurationXMLStrings.PROPERTYFILE, hibernatePropFile);
        }
        // add hibernate console configuration
        hibernatetool.content().add(rootConsoleConfig);
    }
    // 
    // the path there are user classes
    Element classpath = hibernatetool.addElement(CodeGenerationStrings.CLASSPATH);
    Element path = classpath.addElement(CodeGenerationStrings.PATH);
    path.addAttribute(CodeGenerationStrings.LOCATION, getVar(varBuildDir));
    // 
    Map<String, Map<String, AttributeDescription>> exportersDescr = ExportersXMLAttributeDescription.getExportersDescription();
    Map<String, Set<String>> exportersSetSubTags = ExportersXMLAttributeDescription.getExportersSetSubTags();
    // 
    Properties globalProps = new Properties();
    // obligatory global properties
    // $NON-NLS-1$
    globalProps.put(CodeGenerationStrings.EJB3, "" + attributes.isEJB3Enabled());
    // $NON-NLS-1$
    globalProps.put(CodeGenerationStrings.JDK5, "" + attributes.isJDK5Enabled());
    List<ExporterFactory> exporterFactories = attributes.getExporterFactories();
    for (Iterator<ExporterFactory> iter = exporterFactories.iterator(); iter.hasNext(); ) {
        ExporterFactory ef = iter.next();
        if (!ef.isEnabled(lc)) {
            continue;
        }
        // Map<String, ExporterProperty> defExpProps = ef.getDefaultExporterProperties();
        // String expId = ef.getId();
        String expDefId = ef.getExporterDefinitionId();
        String expName = ef.getExporterTag();
        // mapping: guiName -> AttributeDescription
        Map<String, AttributeDescription> attributesDescrGui = exportersDescr.get(expName);
        if (attributesDescrGui == null) {
            attributesDescrGui = new TreeMap<String, AttributeDescription>();
        }
        // mapping: guiName -> set of sub tags
        Set<String> setSubTags = exportersSetSubTags.get(expName);
        if (setSubTags == null) {
            setSubTags = new TreeSet<String>();
        }
        // construct new mapping: name -> AttributeDescription
        Map<String, AttributeDescription> attributesDescrAnt = new TreeMap<String, AttributeDescription>();
        for (AttributeDescription ad : attributesDescrGui.values()) {
            attributesDescrAnt.put(ad.name, ad);
        }
        // 
        Element exporter = hibernatetool.addElement(expName);
        Properties expProps = new Properties();
        expProps.putAll(globalProps);
        expProps.putAll(ef.getProperties());
        // 
        Properties extractGUISpecial = new Properties();
        try {
            ExporterFactory.extractExporterProperties(expDefId, expProps, extractGUISpecial);
        } catch (CoreException e) {
        // ignore
        }
        // convert gui special properties names into Ant names
        for (Map.Entry<Object, Object> propEntry : extractGUISpecial.entrySet()) {
            Object key = propEntry.getKey();
            Object val = propEntry.getValue();
            AttributeDescription ad = attributesDescrGui.get(key);
            if (ad == null) {
                expProps.put(key, val);
                continue;
            }
            expProps.put(ad.name, val);
        }
        // to add attributes and properties in alphabetic order
        Map<String, Object> expPropsSorted = new TreeMap<String, Object>();
        for (Map.Entry<Object, Object> propEntry : expProps.entrySet()) {
            Object key = propEntry.getKey();
            Object val = propEntry.getValue();
            expPropsSorted.put(key.toString(), val);
        }
        // list2Remove - list to collect properties which put into attributes,
        // all other properties be ordinal property definition
        List<Object> list2Remove = new ArrayList<Object>();
        for (Map.Entry<String, Object> propEntry : expPropsSorted.entrySet()) {
            Object key = propEntry.getKey();
            Object val = propEntry.getValue();
            AttributeDescription ad = attributesDescrAnt.get(key);
            if (ad == null) {
                continue;
            }
            list2Remove.add(key);
            if (val == null || 0 == val.toString().compareTo(ad.defaultValue)) {
                continue;
            }
            String processedVal = processPropertyValue(val);
            if (setSubTags.contains(ad.guiName)) {
                Element subTag = exporter.addElement(ad.name);
                subTag.addText(processedVal);
            } else {
                exporter.addAttribute(ad.name, processedVal);
            }
        }
        for (Object obj : list2Remove) {
            expProps.remove(obj);
            expPropsSorted.remove(obj);
        }
        for (Map.Entry<String, Object> propEntry : expPropsSorted.entrySet()) {
            Object key = propEntry.getKey();
            Object val = propEntry.getValue();
            String processedVal = processPropertyValue(val);
            Element property = exporter.addElement(CodeGenerationStrings.PROPERTY);
            property.addAttribute(CodeGenerationStrings.KEY, key.toString());
            property.addAttribute(CodeGenerationStrings.VALUE, processedVal);
        }
    }
    return root;
}
Also used : TreeSet(java.util.TreeSet) Set(java.util.Set) Element(org.dom4j.Element) ArrayList(java.util.ArrayList) URISyntaxException(java.net.URISyntaxException) Properties(java.util.Properties) URL(java.net.URL) TreeSet(java.util.TreeSet) IConnectionProfile(org.eclipse.datatools.connectivity.IConnectionProfile) IService(org.jboss.tools.hibernate.runtime.spi.IService) IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) IPath(org.eclipse.core.runtime.IPath) TreeMap(java.util.TreeMap) AttributeDescription(org.hibernate.eclipse.launch.ExportersXMLAttributeDescription.AttributeDescription) CoreException(org.eclipse.core.runtime.CoreException) ConsoleConfigurationPreferences(org.hibernate.console.preferences.ConsoleConfigurationPreferences) ExporterFactory(org.hibernate.eclipse.console.model.impl.ExporterFactory) IEnvironment(org.jboss.tools.hibernate.runtime.spi.IEnvironment) ConfigurationXMLFactory(org.hibernate.console.ConfigurationXMLFactory) Map(java.util.Map) TreeMap(java.util.TreeMap)

Example 10 with IService

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

the class CodeGenerationLaunchDelegate method buildConfiguration.

private IConfiguration buildConfiguration(final ExporterAttributes attributes, ConsoleConfiguration cc, IWorkspaceRoot root) {
    final boolean reveng = attributes.isReverseEngineer();
    final String reverseEngineeringStrategy = attributes.getRevengStrategy();
    final boolean preferBasicCompositeids = attributes.isPreferBasicCompositeIds();
    final IResource revengres = PathHelper.findMember(root, attributes.getRevengSettings());
    if (reveng) {
        IConfiguration configuration = null;
        if (cc.hasConfiguration()) {
            configuration = cc.getConfiguration();
        } else {
            configuration = cc.buildWith(null, false);
        }
        // final JDBCMetaDataConfiguration cfg = new JDBCMetaDataConfiguration();
        final IService service = cc.getHibernateExtension().getHibernateService();
        final IConfiguration cfg = service.newJDBCMetaDataConfiguration();
        Properties properties = configuration.getProperties();
        cfg.setProperties(properties);
        cc.buildWith(cfg, false);
        cfg.setPreferBasicCompositeIds(preferBasicCompositeids);
        cc.execute(new // need to execute in the consoleconfiguration to let it handle classpath stuff!
        Command() {

            public Object execute() {
                // todo: factor this setup of revengstrategy to core
                IReverseEngineeringStrategy res = service.newDefaultReverseEngineeringStrategy();
                IOverrideRepository repository = null;
                if (revengres != null) {
                    File file = PathHelper.getLocation(revengres).toFile();
                    repository = service.newOverrideRepository();
                    repository.addFile(file);
                }
                if (repository != null) {
                    res = repository.getReverseEngineeringStrategy(res);
                }
                if (reverseEngineeringStrategy != null && reverseEngineeringStrategy.trim().length() > 0) {
                    res = service.newReverseEngineeringStrategy(reverseEngineeringStrategy, res);
                }
                IReverseEngineeringSettings qqsettings = service.newReverseEngineeringSettings(res).setDefaultPackageName(attributes.getPackageName()).setDetectManyToMany(attributes.detectManyToMany()).setDetectOneToOne(attributes.detectOneToOne()).setDetectOptimisticLock(attributes.detectOptimisticLock());
                res.setSettings(qqsettings);
                cfg.setReverseEngineeringStrategy(res);
                cfg.readFromJDBC();
                cfg.buildMappings();
                return null;
            }
        });
        return cfg;
    } else {
        cc.build();
        cc.buildMappings();
        return cc.getConfiguration();
    }
}
Also used : IReverseEngineeringSettings(org.jboss.tools.hibernate.runtime.spi.IReverseEngineeringSettings) IReverseEngineeringStrategy(org.jboss.tools.hibernate.runtime.spi.IReverseEngineeringStrategy) IConfiguration(org.jboss.tools.hibernate.runtime.spi.IConfiguration) Properties(java.util.Properties) IOverrideRepository(org.jboss.tools.hibernate.runtime.spi.IOverrideRepository) File(java.io.File) IResource(org.eclipse.core.resources.IResource) IService(org.jboss.tools.hibernate.runtime.spi.IService)

Aggregations

IService (org.jboss.tools.hibernate.runtime.spi.IService)23 ConsoleConfiguration (org.hibernate.console.ConsoleConfiguration)8 IConfiguration (org.jboss.tools.hibernate.runtime.spi.IConfiguration)8 Properties (java.util.Properties)5 IFile (org.eclipse.core.resources.IFile)5 CoreException (org.eclipse.core.runtime.CoreException)5 IPath (org.eclipse.core.runtime.IPath)5 File (java.io.File)4 FileNotFoundException (java.io.FileNotFoundException)4 JavaModelException (org.eclipse.jdt.core.JavaModelException)4 IPersistentClass (org.jboss.tools.hibernate.runtime.spi.IPersistentClass)4 Path (org.eclipse.core.runtime.Path)3 PartInitException (org.eclipse.ui.PartInitException)3 IArtifactCollector (org.jboss.tools.hibernate.runtime.spi.IArtifactCollector)3 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 IResource (org.eclipse.core.resources.IResource)2 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)2 IJavaProject (org.eclipse.jdt.core.IJavaProject)2 IPackageFragment (org.eclipse.jdt.core.IPackageFragment)2