@Override protected AnnotationPersistenceMetaDataParser newAnnotationParser() { AnnotationPersistenceMappingParser parser = new AnnotationPersistenceMappingParser((JDBCConfiguration) repos.getConfiguration()); // strict mode means we're using a separate mapping parser, so if // we're adapting parse metadata hints if (strict) parser.setMappingOverride(((MappingRepository) repos). getStrategyInstaller().isAdapting()); return parser; }
@Override protected void parsePackageMappingAnnotations(Package pkg) { MappingTag tag; for (Annotation anno : pkg.getDeclaredAnnotations()) { tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownPackageMappingAnnotation(pkg, anno); continue; } switch (tag) { case TABLE_GEN: parseTableGenerator(pkg, (TableGenerator) anno); break; default: throw new UnsupportedException(_loc.get("unsupported", pkg, anno.toString())); } } }
/** * Parse @KeyJoinColumn(s). */ private void parseKeyJoinColumns(FieldMapping fm, KeyJoinColumn... joins) { if (joins.length == 0) return; List<Column> cols = new ArrayList<Column>(joins.length); int unique = 0; for (int i = 0; i < joins.length; i++) { cols.add(newColumn(joins[i], delimit())); unique |= (joins[i].unique()) ? TRUE : FALSE; } setColumns(fm, fm.getKeyMapping().getValueInfo(), cols, unique); }
/** * Parse given @PrimaryKeyJoinColumn annotations. */ private void parsePrimaryKeyJoinColumns(FieldMapping fm, PrimaryKeyJoinColumn... joins) { List<Column> cols = new ArrayList<Column>(joins.length); for (PrimaryKeyJoinColumn join : joins) cols.add(newColumn(join)); setColumns(fm, fm.getValueInfo(), cols, 0); }
/** * Parse @VersionColumn(s). */ private void parseVersionColumns(ClassMapping cm, VersionColumn... vcols) { if (vcols.length == 0) return; List<Column> cols = new ArrayList<Column>(vcols.length); for (VersionColumn vcol : vcols) cols.add(newColumn(vcol, delimit())); cm.getVersion().getMappingInfo().setColumns(cols); }
@Override protected void parseMemberMappingAnnotations(FieldMetaData fmd) { FieldMapping fm = (FieldMapping) fmd; AnnotatedElement el = (AnnotatedElement) getRepository(). getMetaDataFactory().getDefaults().getBackingMember(fmd); tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownMemberMappingAnnotation(fm, anno); continue; parseAssociationOverrides(fm, (AssociationOverride) anno); break; case ASSOC_OVERRIDES: parseAssociationOverrides(fm, ((AssociationOverrides) anno). value()); break; case ATTR_OVERRIDE: parseAttributeOverrides(fm, (AttributeOverride) anno); break; case ATTR_OVERRIDES: parseAttributeOverrides(fm, ((AttributeOverrides) anno). value()); break; case COL: parseColumns(fm, (javax.persistence.Column) anno); break; case COLS: parseColumns(fm, ((Columns) anno).value()); break;
@Override protected void parseMemberMappingAnnotations(FieldMetaData fmd) { FieldMapping fm = (FieldMapping) fmd; AnnotatedElement el = (AnnotatedElement) getRepository(). getMetaDataFactory().getDefaults().getBackingMember(fmd); tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownMemberMappingAnnotation(fm, anno); continue; parseAssociationOverrides(fm, (AssociationOverride) anno); break; case ASSOC_OVERRIDES: parseAssociationOverrides(fm, ((AssociationOverrides) anno). value()); break; case ATTR_OVERRIDE: parseAttributeOverrides(fm, (AttributeOverride) anno); break; case ATTR_OVERRIDES: parseAttributeOverrides(fm, ((AttributeOverrides) anno). value()); break; case COL: parseColumns(fm, (javax.persistence.Column) anno); break; case COLS: parseColumns(fm, ((Columns) anno).value()); break;
tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownClassMappingAnnotation(cm, anno); continue; parseAssociationOverrides(cm, (AssociationOverride) anno); break; case ASSOC_OVERRIDES: parseAssociationOverrides(cm, ((AssociationOverrides) anno). value()); break; case ATTR_OVERRIDE: parseAttributeOverrides(cm, (AttributeOverride) anno); break; case ATTR_OVERRIDES: parseAttributeOverrides(cm, ((AttributeOverrides) anno). value()); break; case DISCRIM_COL: parseDiscriminatorColumn(cm, (DiscriminatorColumn) anno); break; case DISCRIM_VAL: (((DiscriminatorValue) anno).value()); if (Modifier.isAbstract(cm.getDescribedType(). getModifiers()) && getLog().isInfoEnabled()) { getLog().info( _loc.get("discriminator-on-abstract-class", cm .getDescribedType().getName()));
for (int i = 0; i < pcols.length; i++) { if (cols.size() > i) setupColumn((Column) cols.get(i), pcols[i], delimit()); else { if (cols.isEmpty()) cols = new ArrayList<Column>(pcols.length); cols.add(newColumn(pcols[i], delimit())); .isAnnotationPresentAction(fm.getDeclaredType(), xmlRootElementClass))).booleanValue()) { DBDictionary dict = ((MappingRepository) getRepository()) .getDBDictionary(); if (dict.supportsXMLColumn) DBIdentifier sSecTable = DBIdentifier.newTable(pcols[i].table(), delimit()); sSecondary = trackSecondaryTable(fm, sSecondary, sSecTable, i); setColumns(fm, fm.getElementMapping().getValueInfo(), cols, unique); else setColumns(fm, fm.getValueInfo(), cols, unique); if (!DBIdentifier.isNull(sSecondary)) fm.getMappingInfo().setTableIdentifier(sSecondary);
throw new MetaDataException(_loc.get("no-gen-name", el)); Log log = getLog(); if (log.isTraceEnabled()) log.trace(_loc.get("parse-gen", name)); SequenceMapping meta = (SequenceMapping) getRepository(). getCachedSequenceMetaData(name); if (meta != null) { meta = (SequenceMapping) getRepository().addSequenceMetaData(name); meta.setSequencePlugin(SequenceMapping.IMPL_VALUE_TABLE); meta.setTableIdentifier(toTableIdentifier(gen.schema(), gen.table())); meta.setPrimaryKeyColumnIdentifier(DBIdentifier.newColumn(gen.pkColumnName(), delimit())); meta.setSequenceColumnIdentifier(DBIdentifier.newColumn(gen.valueColumnName(),delimit())); meta.setPrimaryKeyValue(gen.pkColumnValue()); meta.setInitialValue(gen.initialValue()); meta.setAllocate(gen.allocationSize()); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, meta.SRC_ANNOTATIONS); case 1: meta.setUniqueColumnsIdentifier(DBIdentifier.toArray(gen.uniqueConstraints()[0].columnNames(), DBIdentifierType.COLUMN, delimit())); meta.setUniqueConstraintIdentifier(DBIdentifier.newConstraint(gen.uniqueConstraints()[0].name(), delimit())); break; default:
/** * Parse given @XJoinColumn annotations. */ protected void parseXJoinColumns(FieldMapping fm, MappingInfo info, boolean secondaryAllowed, XJoinColumn... joins) { if (joins.length == 0) return; List<Column> cols = new ArrayList<Column>(joins.length); int unique = 0; DBIdentifier sSecondary = DBIdentifier.NULL; for (int i = 0; i < joins.length; i++) { cols.add(newColumn(joins[i], delimit())); unique |= (joins[i].unique()) ? TRUE : FALSE; sSecondary = trackSecondaryTable(fm, sSecondary, DBIdentifier.newTable(joins[i].table(), delimit()), i); if (!secondaryAllowed && !DBIdentifier.isNull(sSecondary)) throw new MetaDataException(_loc.get("bad-second", fm)); } setColumns(fm, info, cols, unique); if (!DBIdentifier.isNull(sSecondary)) fm.getMappingInfo().setTableIdentifier(sSecondary); }
JoinTable joinTbl; for (AssociationOverride assoc : assocs) { efm = getEmbeddedFieldMapping(fm, assoc.name()); if (efm == null) throw new MetaDataException(_loc.get("embed-override-name", for (JoinColumn ecol : ecols) { unique |= (ecol.unique()) ? TRUE : FALSE; jcols.add(newColumn(ecol)); setColumns(efm, efm.getValueInfo(), jcols, unique); } else if (joinTbl != null) { parseJoinTable(efm, joinTbl);
for (JoinColumn scol : scols) { unique |= (scol.unique()) ? TRUE : FALSE; jcols.add(newColumn(scol)); setColumns(sup, sup.getValueInfo(), jcols, unique); } else if (joinTbl != null) { parseJoinTable(sup, joinTbl);
/** * Parse @SecondaryTable(s). */ private void parseSecondaryTables(ClassMapping cm, SecondaryTable... tables) { ClassMappingInfo info = cm.getMappingInfo(); List<Column> joins = null; for (SecondaryTable table : tables) { DBIdentifier sName = DBIdentifier.newTable(table.name(), delimit()); if (DBIdentifier.isEmpty(sName)) throw new MetaDataException(_loc.get("second-name", cm)); if (!StringUtils.isEmpty(table.schema())) { DBIdentifier sSchema = DBIdentifier.newSchema(table.schema(), delimit()); sName = QualifiedDBIdentifier.newPath(sSchema, sName); } if (table.pkJoinColumns().length > 0) { joins = new ArrayList<Column>(table.pkJoinColumns().length); for (PrimaryKeyJoinColumn join : table.pkJoinColumns()) joins.add(newColumn(join)); info.setSecondaryTableJoinColumns(sName, joins); } else { info.addSecondaryTable(sName); } addUniqueConstraints(sName.getName(), cm, info, table.uniqueConstraints()); } }
/** * Parse given @XJoinColumn annotations. */ protected void parseXJoinColumns(FieldMapping fm, MappingInfo info, boolean secondaryAllowed, XJoinColumn... joins) { if (joins.length == 0) return; List<Column> cols = new ArrayList<Column>(joins.length); int unique = 0; String secondary = null; for (int i = 0; i < joins.length; i++) { cols.add(newColumn(joins[i])); unique |= (joins[i].unique()) ? TRUE : FALSE; secondary = trackSecondaryTable(fm, secondary, joins[i].table(), i); if (!secondaryAllowed && secondary != null) throw new MetaDataException(_loc.get("bad-second", fm)); } setColumns(fm, info, cols, unique); if (secondary != null) fm.getMappingInfo().setTableName(secondary); }
throw new MetaDataException(_loc.get("no-gen-name", el)); Log log = getLog(); if (log.isTraceEnabled()) log.trace(_loc.get("parse-gen", name)); SequenceMapping meta = (SequenceMapping) getRepository(). getCachedSequenceMetaData(name); if (meta != null) { meta = (SequenceMapping) getRepository().addSequenceMetaData(name); meta.setSequencePlugin(SequenceMapping.IMPL_VALUE_TABLE); meta.setTable(toTableName(gen.schema(), gen.table())); meta.setPrimaryKeyColumn(gen.pkColumnName()); meta.setSequenceColumn(gen.valueColumnName()); meta.setInitialValue(gen.initialValue()); meta.setAllocate(gen.allocationSize()); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, meta.SRC_ANNOTATIONS);
MappingRepository repos = (MappingRepository) getRepository(); Log log = getLog(); for (SqlResultSetMapping anno : annos) { if (log.isTraceEnabled()) result.setSource(getSourceFile(), cm.getDescribedType(), result.SRC_ANNOTATIONS);
private boolean startVersionColumn(Attributes attrs) throws SAXException { Column col = AnnotationPersistenceMappingParser.newColumn(attrs.getValue("name"), Boolean.parseBoolean(attrs.getValue("nullable")), Boolean.parseBoolean(attrs.getValue("insertable")), Boolean.parseBoolean(attrs.getValue("updatable")), attrs.getValue("columnDefinition"), Integer.parseInt(attrs.getValue("length")), Integer.parseInt(attrs.getValue("precision")), Integer.parseInt(attrs.getValue("scale")), attrs.getValue("table"), delimit()); _versionColumnsList.add(col); return true; }
/** * Parse @SecondaryTable(s). */ private void parseSecondaryTables(ClassMapping cm, SecondaryTable... tables) { ClassMappingInfo info = cm.getMappingInfo(); Log log = getLog(); String name; List<Column> joins; boolean warnUnique = false; for (SecondaryTable table : tables) { name = table.name(); if (StringUtils.isEmpty(name)) throw new MetaDataException(_loc.get("second-name", cm)); if (!StringUtils.isEmpty(table.schema())) name = table.schema() + "." + name; if (table.pkJoinColumns().length > 0) { joins = new ArrayList<Column>(table.pkJoinColumns().length); for (PrimaryKeyJoinColumn join : table.pkJoinColumns()) joins.add(newColumn(join)); info.setSecondaryTableJoinColumns(name, joins); } warnUnique |= table.uniqueConstraints().length > 0; } //### EJB3 if (warnUnique && log.isWarnEnabled()) log.warn(_loc.get("unique-constraints", cm)); }
/** * Set the given columns as the columns for <code>fm</code>. * * @param unique bitwise combination of TRUE and FALSE for the * unique attribute of each column */ protected void setColumns(FieldMapping fm, MappingInfo info, List<Column> cols, int unique) { info.setColumns(cols); if (unique == TRUE) info.setUnique(new org.apache.openjpa.jdbc.schema.Unique()); //### EJB3 Log log = getLog(); if (log.isWarnEnabled() && unique == (TRUE | FALSE)) log.warn(_loc.get("inconsist-col-attrs", fm)); }