001package io.ebeaninternal.dbmigration.model.visitor; 002 003import io.ebeaninternal.api.SpiEbeanServer; 004import io.ebeaninternal.server.deploy.BeanDescriptor; 005import io.ebeaninternal.server.deploy.visitor.BeanPropertyVisitor; 006import io.ebeaninternal.server.deploy.visitor.VisitProperties; 007 008import java.util.List; 009 010/** 011 * Makes use of BeanVisitor and PropertyVisitor to navigate BeanDescriptors 012 * and their properties. 013 */ 014public class VisitAllUsing extends VisitProperties { 015 016 private final BeanVisitor visitor; 017 018 private final List<BeanDescriptor<?>> descriptors; 019 020 /** 021 * Visit all the descriptors for a given server. 022 */ 023 public VisitAllUsing(BeanVisitor visitor, SpiEbeanServer server) { 024 this(visitor, server.getBeanDescriptors()); 025 } 026 027 /** 028 * Visit all the descriptors in the list. 029 */ 030 public VisitAllUsing(BeanVisitor visitor, List<BeanDescriptor<?>> descriptors) { 031 this.visitor = visitor; 032 this.descriptors = descriptors; 033 } 034 035 public void visitAllBeans() { 036 for (BeanDescriptor<?> desc : descriptors) { 037 if (desc.isBaseTable()) { 038 visitBean(desc, visitor); 039 } 040 } 041 } 042 043 /** 044 * Visit the bean using a visitor. 045 */ 046 protected void visitBean(BeanDescriptor<?> desc, BeanVisitor visitor) { 047 BeanPropertyVisitor propertyVisitor = visitor.visitBean(desc); 048 if (propertyVisitor != null) { 049 visitProperties(desc, propertyVisitor); 050 } 051 } 052 053}