public ReverseEngineeringStrategy getReverseEngineeringStrategy() { return getReverseEngineeringStrategy(null); }
public OverrideRepository addFile(File xmlFile) { log.info( "Override file: " + xmlFile.getPath() ); try { addInputStream( new FileInputStream( xmlFile ) ); } catch ( Exception e ) { log.error( "Could not configure overrides from file: " + xmlFile.getPath(), e ); throw new MappingException( "Could not configure overrides from file: " + xmlFile.getPath(), e ); } return this; }
private static void bindPrimaryKey(Element identifier, Table table, OverrideRepository repository) { if(identifier==null) return; String propertyName = identifier.attributeValue("property"); String compositeIdName = identifier.attributeValue("id-class"); Element element = identifier.element("generator"); if(element!=null) { String identifierClass = element.attributeValue("class"); Properties params = new Properties(); Iterator<?> iter = element.elementIterator( "param" ); while ( iter.hasNext() ) { Element childNode = (Element) iter.next(); params.setProperty( childNode.attributeValue( "name" ), childNode.getText() ); } repository.addTableIdentifierStrategy(table, identifierClass, params); } List<String> boundColumnNames = bindColumns(identifier.elements("key-column"), table, repository); repository.addPrimaryKeyNamesForTable(table, boundColumnNames, propertyName, compositeIdName); }
private ReverseEngineeringStrategy loadRevengFile( ReverseEngineeringStrategy delegate ) { String revengFile = getExporterMojo().getComponentProperty( "revengfile" ); if ( revengFile != null ) { OverrideRepository or = new OverrideRepository(); File rf = HibernateUtils.getFile( getExporterMojo().getProject().getBasedir(), revengFile ); if ( rf == null ) { getExporterMojo().getLog().info( "Couldn't find the revengfile in the project. Trying absolute path." ); rf = HibernateUtils.getFile( null, revengFile ); } if ( rf != null ) { or.addFile( rf ); return or.getReverseEngineeringStrategy( delegate ); } } return delegate; }
repository.addMetaAttributeInfo( tableIdentifier, column.getName(), map); repository.setTypeNameForColumn(tableIdentifier, column.getName(), element.attributeValue("type")); repository.setPropertyNameForColumn(tableIdentifier, column.getName(), element.attributeValue("property")); repository.setExcludedColumn(tableIdentifier, column.getName());
repository.addForeignKeyInfo(constraintName, manyToOneProperty, excludeManyToOne, collectionProperty, excludeCollection, associationInfo, inverseAssociationInfo); return true; } else {
private static void bindSchemaSelection(List<?> selection, OverrideRepository repository) { Iterator<?> iterator = selection.iterator(); while ( iterator.hasNext() ) { Element element = (Element) iterator.next(); SchemaSelection schemaSelection = new SchemaSelection(); schemaSelection.setMatchCatalog( element.attributeValue("match-catalog") ); schemaSelection.setMatchSchema( element.attributeValue("match-schema") ); schemaSelection.setMatchTable( element.attributeValue("match-table") ); repository.addSchemaSelection(schemaSelection); } }
private static void bindMetaAttributes(Element element, Table table, OverrideRepository repository) { MultiMap map = MetaAttributeBinder.loadAndMergeMetaMap( element, new MultiValueMap()); if(map!=null && !map.isEmpty()) { repository.addMetaAttributeInfo( table, map); } }
private static void bindTables(List<?> tables, OverrideRepository repository) { Iterator<?> iterator = tables.iterator(); while ( iterator.hasNext() ) { Element element = (Element) iterator.next(); Table table = new Table(); table.setCatalog( element.attributeValue("catalog") ); table.setSchema( element.attributeValue("schema") ); table.setName( element.attributeValue("name") ); String wantedClassName = element.attributeValue("class"); Element primaryKey = element.element("primary-key"); bindPrimaryKey(primaryKey, table, repository); List<?> columns = element.elements("column"); bindColumns(columns, table, repository); List<?> foreignKeys = element.elements("foreign-key"); bindForeignKeys(foreignKeys, table, repository); bindMetaAttributes(element, table, repository); repository.addTable(table,wantedClassName); } }
public OverrideRepository addInputStream(InputStream xmlInputStream) throws MappingException { try { ErrorLogger errorLogger = new ErrorLogger( "XML InputStream" ); org.dom4j.Document doc = XMLHelper.createSAXReader( errorLogger).read( new InputSource( xmlInputStream ) ); if ( errorLogger.hasErrors() ) throw new MappingException( "invalid override definition", ( Throwable ) errorLogger.getErrors().get( 0 ) ); add( doc ); return this; } catch ( MappingException me ) { throw me; } catch ( Exception e ) { log.error( "Could not configure overrides from input stream", e ); throw new MappingException( e ); } finally { try { xmlInputStream.close(); } catch ( IOException ioe ) { log.error( "could not close input stream", ioe ); } } }
private ReverseEngineeringStrategy createReverseEngineeringStrategy() { DefaultReverseEngineeringStrategy defaultStrategy = new DefaultReverseEngineeringStrategy(); ReverseEngineeringStrategy strategy = defaultStrategy; if(revengFiles!=null) { OverrideRepository or = new OverrideRepository(); String[] fileNames = revengFiles.list(); for (int i = 0; i < fileNames.length; i++) { or.addFile(new File(fileNames[i]) ); } strategy = or.getReverseEngineeringStrategy(defaultStrategy); } if(reverseEngineeringStrategyClass!=null) { strategy = loadreverseEngineeringStrategy(reverseEngineeringStrategyClass, strategy); } ReverseEngineeringSettings qqsettings = new ReverseEngineeringSettings(strategy).setDefaultPackageName(packageName) .setDetectManyToMany( detectManyToMany ) .setDetectOneToOne( detectOneToOne ) .setDetectOptimisticLock( detectOptimisticLock ); defaultStrategy.setSettings(qqsettings); strategy.setSettings(qqsettings); return strategy; }
private static void bindOneToOne(Element element, String constraintName, OverrideRepository repository) { String oneToOneProperty = null; Boolean excludeOneToOne = null; Element oneToOne = element.element("one-to-one"); DefaulAssociationInfo associationInfo = null; if(oneToOne!=null) { oneToOneProperty = oneToOne.attributeValue("property"); excludeOneToOne = BooleanValue(oneToOne.attributeValue("exclude")); associationInfo = extractAssociationInfo(oneToOne); } String inverseOneToOneProperty = null; Boolean excludeInverseOneToOne = null; Element inverseOneToOne = element.element("inverse-one-to-one"); DefaulAssociationInfo inverseAssociationInfo = null; if(inverseOneToOne!=null) { inverseOneToOneProperty = inverseOneToOne.attributeValue("property"); excludeInverseOneToOne = BooleanValue(inverseOneToOne.attributeValue("exclude")); inverseAssociationInfo = extractAssociationInfo(inverseOneToOne); } // having oneToOne = null and inverseOneToOne != null doesn't make sense // we cannot have the inverse side without the owning side in this case if ( (oneToOne!=null) ) { repository.addForeignKeyInfo(constraintName, oneToOneProperty, excludeOneToOne, inverseOneToOneProperty, excludeInverseOneToOne, associationInfo, inverseAssociationInfo); } }
/** * Read override from an application resource trying different classloaders. * This method will try to load the resource first from the thread context * classloader and then from the classloader that loaded Hibernate. */ public OverrideRepository addResource(String path) throws MappingException { log.info( "Mapping resource: " + path ); InputStream rsrc = Thread.currentThread().getContextClassLoader().getResourceAsStream( path ); if ( rsrc == null ) rsrc = OverrideRepository.class.getClassLoader().getResourceAsStream( path ); if ( rsrc == null ) throw new MappingException( "Resource: " + path + " not found" ); try { return addInputStream( rsrc ); } catch ( MappingException me ) { throw new MappingException( "Error reading resource: " + path, me ); } }