Search in sources :

Example 1 with ObjectNameGenerator

use of org.apache.cayenne.dbsync.naming.ObjectNameGenerator in project cayenne by apache.

the class EntitySyncController method createMerger.

public EntityMergeSupport createMerger() {
    Collection<ObjEntity> entities = getObjEntities();
    if (entities.isEmpty()) {
        return null;
    }
    ObjectNameGenerator namingStrategy;
    try {
        namingStrategy = NameGeneratorPreferences.getInstance().createNamingStrategy(application);
    } catch (Throwable e) {
        namingStrategy = NameGeneratorPreferences.defaultNameGenerator();
    }
    // TODO: Modeler-controlled defaults for all the hardcoded boolean flags here.
    EntityMergeSupport merger = new EntityMergeSupport(namingStrategy, NamePatternMatcher.EXCLUDE_ALL, true, true, false);
    // see if we need to remove meaningful attributes...
    for (ObjEntity entity : entities) {
        if (!merger.getMeaningfulFKs(entity).isEmpty()) {
            return confirmMeaningfulFKs(namingStrategy);
        }
    }
    return merger;
}
Also used : EntityMergeSupport(org.apache.cayenne.dbsync.merge.context.EntityMergeSupport) ObjEntity(org.apache.cayenne.map.ObjEntity) ObjectNameGenerator(org.apache.cayenne.dbsync.naming.ObjectNameGenerator)

Example 2 with ObjectNameGenerator

use of org.apache.cayenne.dbsync.naming.ObjectNameGenerator in project cayenne by apache.

the class DefaultDbImportAction method applyTokens.

private boolean applyTokens(DataMap targetDataMap, Collection<MergerToken> tokens, DbImportConfiguration config) {
    if (tokens.isEmpty()) {
        logger.info("");
        logger.info("Detected changes: No changes to import.");
        return false;
    }
    final Collection<ObjEntity> loadedObjEntities = new LinkedList<>();
    ModelMergeDelegate mergeDelegate = new ProxyModelMergeDelegate(config.createMergeDelegate()) {

        @Override
        public void objEntityAdded(ObjEntity ent) {
            loadedObjEntities.add(ent);
            super.objEntityAdded(ent);
        }
    };
    ObjectNameGenerator nameGenerator = config.createNameGenerator();
    MergerContext mergerContext = MergerContext.builder(targetDataMap).delegate(mergeDelegate).nameGenerator(nameGenerator).usingPrimitives(config.isUsePrimitives()).usingJava7Types(config.isUseJava7Types()).meaningfulPKFilter(config.createMeaningfulPKFilter()).build();
    for (MergerToken token : tokens) {
        try {
            token.execute(mergerContext);
        } catch (Throwable th) {
            String message = "Migration Error. Can't apply changes from token: " + token.getTokenName() + " (" + token.getTokenValue() + ")";
            logger.error(message, th);
            mergerContext.getValidationResult().addFailure(new SimpleValidationFailure(th, message));
        }
    }
    ValidationResult failures = mergerContext.getValidationResult();
    if (failures.hasFailures()) {
        logger.info("Migration Complete.");
        logger.warn("Migration finished. The following problem(s) were encountered and ignored.");
        for (ValidationFailure failure : failures.getFailures()) {
            logger.warn(failure.toString());
        }
    } else {
        logger.info("Migration Complete Successfully.");
    }
    flattenManyToManyRelationships(targetDataMap, loadedObjEntities, nameGenerator);
    relationshipsSanity(targetDataMap);
    return true;
}
Also used : ObjectNameGenerator(org.apache.cayenne.dbsync.naming.ObjectNameGenerator) ModelMergeDelegate(org.apache.cayenne.dbsync.reverse.dbload.ModelMergeDelegate) ProxyModelMergeDelegate(org.apache.cayenne.dbsync.reverse.dbload.ProxyModelMergeDelegate) ValidationResult(org.apache.cayenne.validation.ValidationResult) MergerContext(org.apache.cayenne.dbsync.merge.context.MergerContext) LinkedList(java.util.LinkedList) SimpleValidationFailure(org.apache.cayenne.validation.SimpleValidationFailure) ValidationFailure(org.apache.cayenne.validation.ValidationFailure) ObjEntity(org.apache.cayenne.map.ObjEntity) SimpleValidationFailure(org.apache.cayenne.validation.SimpleValidationFailure) MergerToken(org.apache.cayenne.dbsync.merge.token.MergerToken) ProxyModelMergeDelegate(org.apache.cayenne.dbsync.reverse.dbload.ProxyModelMergeDelegate)

Aggregations

ObjectNameGenerator (org.apache.cayenne.dbsync.naming.ObjectNameGenerator)2 ObjEntity (org.apache.cayenne.map.ObjEntity)2 LinkedList (java.util.LinkedList)1 EntityMergeSupport (org.apache.cayenne.dbsync.merge.context.EntityMergeSupport)1 MergerContext (org.apache.cayenne.dbsync.merge.context.MergerContext)1 MergerToken (org.apache.cayenne.dbsync.merge.token.MergerToken)1 ModelMergeDelegate (org.apache.cayenne.dbsync.reverse.dbload.ModelMergeDelegate)1 ProxyModelMergeDelegate (org.apache.cayenne.dbsync.reverse.dbload.ProxyModelMergeDelegate)1 SimpleValidationFailure (org.apache.cayenne.validation.SimpleValidationFailure)1 ValidationFailure (org.apache.cayenne.validation.ValidationFailure)1 ValidationResult (org.apache.cayenne.validation.ValidationResult)1