protected void serialize(Collection objects) { for (Object obj : objects) { int type = type(obj); switch (type) { case TYPE_META: serializeClass((ClassMetaData) obj); break; case TYPE_SEQ: if (isMappingMode()) serializeSequence((SequenceMetaData) obj); case TYPE_QUERY: serializeQuery((QueryMetaData) obj); break; case TYPE_CLASS_QUERIES: for (QueryMetaData query : ((ClassQueries) obj) .getQueries()) serializeQuery(query); break; case TYPE_CLASS_SEQS: if (isMappingMode()) for (SequenceMetaData seq : ((ClassSeqs) obj) .getSequences()) serializeSequence(seq); break; default: if (isMappingMode()) serializeSystemMappingElement(obj); break;
/** * Create a new annotation serializer. */ protected AnnotationPersistenceMetaDataSerializer newAnnotationSerializer() { return new AnnotationPersistenceMetaDataSerializer (repos.getConfiguration()); }
/** * Creates an an annotation builder for the specified class metadata * and adds it to list of builders. */ protected AnnotationBuilder addAnnotation( Class<? extends Annotation> annType, QueryMetaData meta) { AnnotationBuilder ab = newAnnotationBuilder(annType); if (meta == null) return ab; addAnnotation(ab, meta); return ab; }
/** * Serialize attribute override content. */ private void serializeAttributeOverrideContent(FieldMetaData fmd, FieldMetaData orig) { AnnotationBuilder ab = addAnnotation(AttributeOverride.class, fmd); ab.add("name", fmd.getName()); serializeAttributeOverrideMappingContent(fmd, orig, ab); }
Log log = getLog(); if (log.isInfoEnabled()) log.info(_loc.get("ser-class", meta)); AnnotationBuilder abEntity = addAnnotation( getEntityAnnotationType(meta), meta); if (isMetaDataMode() && !meta.getTypeAlias().equals(Strings.getClassName(meta. getDescribedType()))) abEntity.add("name", meta.getTypeAlias()); if (isMappingMode()) addClassMappingAnnotations(meta); if (isMappingMode()) serializeClassMappingContent(meta); if (isMetaDataMode()) serializeIdClass(meta); if (isMappingMode()) serializeInheritanceContent(meta); if (isMappingMode()) { List seqs = (_seqs == null) ? null : _seqs.get (meta.getDescribedType().getName()); if (seqs != null) { serializationSort(seqs); for (int i = 0; i < seqs.size(); i++) serializeSequence((SequenceMetaData) seqs.get(i));
PersistenceStrategy strat = getStrategy(fmd); ValueMetaData cascades = null; AnnotationBuilder ab = addAnnotation( getFieldAnnotationType (fmd, strat), fmd); if (fmd.isPrimaryKey() && strat == PersistenceStrategy.EMBEDDED) switch (strat) { case BASIC: if (isMetaDataMode()) addBasicAttributes(fmd, ab); break; case MANY_ONE: if (isMetaDataMode()) addManyToOneAttributes(fmd, ab); cascades = fmd; break; case ONE_ONE: if (isMetaDataMode()) addOneToOneAttributes(fmd, ab); cascades = fmd; break; case ONE_MANY: if (isMetaDataMode()) addOneToManyAttributes(fmd, ab); cascades = fmd.getElement(); break; case MANY_MANY: if (isMetaDataMode()) addManyToManyAttributes(fmd, ab);
/** * Serialize query metadata. */ private void serializeQuery(QueryMetaData meta) { Log log = getLog(); if (log.isInfoEnabled()) { if (meta.getSourceScope() instanceof Class) log.info(_loc.get("ser-cls-query", meta.getSourceScope(), meta.getName())); else log.info(_loc.get("ser-query", meta.getName())); } Class<? extends Annotation> ann = QueryLanguages.LANG_SQL.equals(meta.getLanguage()) ? NamedNativeQuery.class : NamedQuery.class; AnnotationBuilder abQry = addAnnotation(ann, meta); abQry.add("name", meta.getName()); abQry.add("query", meta.getQueryString()); if (QueryLanguages.LANG_SQL.equals(meta.getLanguage())) { if (meta.getResultType() != null) abQry.add("resultClass", meta.getResultType()); } serializeQueryHints(meta, abQry); }
Log log = getLog(); if (log.isInfoEnabled()) log.info(_loc.get("ser-sequence", meta.getName())); AnnotationBuilder ab = addAnnotation(SequenceGenerator.class, meta); ab.add("name", meta.getName());
@Override protected int type(Object o) { int type = super.type(o); if (type == -1 && o instanceof QueryResultMapping) return TYPE_RESULTMAP; return type; }
public int compare(Object o1, Object o2) { FieldMetaData fmd1 = (FieldMetaData) o1; FieldMetaData fmd2 = (FieldMetaData) o2; if (fmd1.isPrimaryKey()) { if (fmd2.isPrimaryKey()) return fmd1.compareTo(fmd2); return -1; } if (fmd2.isPrimaryKey()) return 1; if (fmd1.isVersion()) { if (fmd2.isVersion()) return compareListingOrder(fmd1, fmd2); return getStrategy(fmd2) == PersistenceStrategy.BASIC ? 1 : -1; } if (fmd2.isVersion()) return getStrategy(fmd1) == PersistenceStrategy.BASIC ? -1 : 1; int stcmp = getStrategy(fmd1).compareTo(getStrategy(fmd2)); if (stcmp != 0) return stcmp; return compareListingOrder(fmd1, fmd2); }
protected void addAnnotation(AnnotationBuilder ab, Object meta) { if (meta instanceof ClassMetaData) addAnnotation(ab, (ClassMetaData) meta); else if (meta instanceof FieldMetaData) addAnnotation(ab, (FieldMetaData) meta); else if (meta instanceof SequenceMetaData) addAnnotation(ab, (SequenceMetaData) meta); else if (meta instanceof QueryMetaData) addAnnotation(ab, (QueryMetaData) meta); }
@Override protected void serializeClass(ClassMetaData meta) { if (_sync && isMappingMode() && meta instanceof ClassMapping) { // sync if resolved and mapped ClassMapping cls = (ClassMapping) meta; if ((cls.getResolve() & MetaDataModes.MODE_MAPPING) != 0 && cls.isMapped()) { cls.syncMappingInfo(); cls.getDiscriminator().syncMappingInfo(); cls.getVersion().syncMappingInfo(); FieldMapping[] fields; if (cls.getEmbeddingMetaData() == null) fields = cls.getDefinedFieldMappings(); else fields = cls.getFieldMappings(); for (FieldMapping f : fields) f.syncMappingInfo(); } } super.serializeClass(meta); }
@Override protected void serializeSequence(SequenceMetaData meta) { if (SequenceMapping.IMPL_VALUE_TABLE.equals(meta.getSequencePlugin())) { super.serializeSequence(meta); return; } AnnotationBuilder abTblGen = addAnnotation(TableGenerator.class, meta); SequenceMapping seq = (SequenceMapping) meta; abTblGen.add("name", seq.getName()); String table = seq.getTable(); if (table != null) { int dotIdx = table.indexOf('.'); if (dotIdx == -1) abTblGen.add("table", table); else { abTblGen.add("table", table.substring(dotIdx + 1)); abTblGen.add("schema", table.substring(0, dotIdx)); } } if (!StringUtils.isEmpty(seq.getPrimaryKeyColumn())) abTblGen.add("pkColumnName", seq.getPrimaryKeyColumn()); if (!StringUtils.isEmpty(seq.getSequenceColumn())) abTblGen.add("valueColumnName", seq.getSequenceColumn()); if (!StringUtils.isEmpty(seq.getPrimaryKeyValue())) abTblGen.add("pkColumnValue", seq.getPrimaryKeyValue()); if (seq.getAllocate() != 50 && seq.getAllocate() != -1) abTblGen.add("allocationSize", seq.getAllocate() + ""); if (seq.getInitialValue() != 0 && seq.getInitialValue() != -1) abTblGen.add("initialValue", seq.getInitialValue() + ""); }
Log log = getLog(); if (log.isInfoEnabled()) log.info(_loc.get("ser-class", meta)); AnnotationBuilder abEntity = addAnnotation( getEntityAnnotationType(meta), meta); if (isMetaDataMode() && !meta.getTypeAlias().equals(ClassUtil.getClassName(meta. getDescribedType()))) abEntity.add("name", meta.getTypeAlias()); if (isMappingMode()) addClassMappingAnnotations(meta); if (isMappingMode()) serializeClassMappingContent(meta); if (isMetaDataMode()) serializeIdClass(meta); if (isMappingMode()) serializeInheritanceContent(meta); if (isMappingMode()) { List seqs = (_seqs == null) ? null : _seqs.get (meta.getDescribedType().getName()); if (seqs != null) { serializationSort(seqs); for (int i = 0; i < seqs.size(); i++) serializeSequence((SequenceMetaData) seqs.get(i));
PersistenceStrategy strat = getStrategy(fmd); ValueMetaData cascades = null; AnnotationBuilder ab = addAnnotation( getFieldAnnotationType (fmd, strat), fmd); if (fmd.isPrimaryKey() && strat == PersistenceStrategy.EMBEDDED) switch (strat) { case BASIC: if (isMetaDataMode()) addBasicAttributes(fmd, ab); break; case MANY_ONE: if (isMetaDataMode()) addManyToOneAttributes(fmd, ab); cascades = fmd; break; case ONE_ONE: if (isMetaDataMode()) addOneToOneAttributes(fmd, ab); cascades = fmd; break; case ONE_MANY: if (isMetaDataMode()) addOneToManyAttributes(fmd, ab); cascades = fmd.getElement(); break; case MANY_MANY: if (isMetaDataMode()) addManyToManyAttributes(fmd, ab);
/** * Serialize query metadata. */ private void serializeQuery(QueryMetaData meta) { Log log = getLog(); if (log.isInfoEnabled()) { if (meta.getSourceScope() instanceof Class) log.info(_loc.get("ser-cls-query", meta.getSourceScope(), meta.getName())); else log.info(_loc.get("ser-query", meta.getName())); } Class<? extends Annotation> ann = QueryLanguages.LANG_SQL.equals(meta.getLanguage()) ? NamedNativeQuery.class : NamedQuery.class; AnnotationBuilder abQry = addAnnotation(ann, meta); abQry.add("name", meta.getName()); abQry.add("query", meta.getQueryString()); if (QueryLanguages.LANG_SQL.equals(meta.getLanguage())) { if (meta.getResultType() != null) abQry.add("resultClass", meta.getResultType()); } serializeQueryHints(meta, abQry); }
/** * Serialize attribute override content. */ private void serializeAttributeOverrideContent(FieldMetaData fmd, FieldMetaData orig) { AnnotationBuilder ab = addAnnotation(AttributeOverride.class, fmd); ab.add("name", fmd.getName()); serializeAttributeOverrideMappingContent(fmd, orig, ab); }
Log log = getLog(); if (log.isInfoEnabled()) log.info(_loc.get("ser-sequence", meta.getName())); AnnotationBuilder ab = addAnnotation(SequenceGenerator.class, meta); ab.add("name", meta.getName());
@Override protected int type(Object o) { int type = super.type(o); if (type == -1 && o instanceof QueryResultMapping) return TYPE_RESULTMAP; return type; }
public int compare(Object o1, Object o2) { FieldMetaData fmd1 = (FieldMetaData) o1; FieldMetaData fmd2 = (FieldMetaData) o2; if (fmd1.isPrimaryKey()) { if (fmd2.isPrimaryKey()) return fmd1.compareTo(fmd2); return -1; } if (fmd2.isPrimaryKey()) return 1; if (fmd1.isVersion()) { if (fmd2.isVersion()) return compareListingOrder(fmd1, fmd2); return getStrategy(fmd2) == PersistenceStrategy.BASIC ? 1 : -1; } if (fmd2.isVersion()) return getStrategy(fmd1) == PersistenceStrategy.BASIC ? -1 : 1; int stcmp = getStrategy(fmd1).compareTo(getStrategy(fmd2)); if (stcmp != 0) return stcmp; return compareListingOrder(fmd1, fmd2); }