DatabaseChangeLog changeLog = new XMLChangeLogSAXParser().parse(CHANGE_LOG_FILE, new ChangeLogParameters(), liquibase.getFileOpener()); List<ChangeSet> changeSets = changeLog.getChangeSets();
/** * Interface used for callbacks when updating the database. Implement this interface and pass it * to {@link DatabaseUpdater#executeChangelog(String, Map, ChangeSetExecutorCallback)} */ public interface ChangeSetExecutorCallback { /** * This method is called after each changeset is executed. * * @param changeSet the liquibase changeset that was just run * @param numChangeSetsToRun the total number of changesets in the current file */ public void executing(ChangeSet changeSet, int numChangeSetsToRun); }
protected void handleChangeSet(final ChangeSet changeSet) { databaseChangeLog.addChangeSet(changeSet); }
throw new ChangeLogParseException("included file " + fileName + " is not a recognized file type"); PreconditionContainer preconditions = changeLog.getPreconditions(); if (preconditions != null) { if (null == databaseChangeLog.getPreconditions()) { databaseChangeLog.setPreconditions(new PreconditionContainer()); databaseChangeLog.getPreconditions().addNestedPrecondition(preconditions); for (ChangeSet changeSet : changeLog.getChangeSets()) { handleChangeSet(changeSet);
if (!version.equals(OSGiXMLChangeLogSAXParser .getSchemaVersion())) { log.warning(databaseChangeLog.getPhysicalFilePath() + " is using schema version " + version + " rather than version " databaseChangeLog.setLogicalFilePath(atts.getValue("logicalFilePath")); ObjectQuotingStrategy quotingStrategy = ObjectQuotingStrategy.LEGACY; String quotingStrategyText = atts.getValue("objectQuotingStrategy"); databaseChangeLog.setObjectQuotingStrategy(quotingStrategy); } else if ("include".equals(qName)) { String fileName = atts.getValue("file"); fileName = fileName.replace('\\', '/'); boolean isRelativeToChangelogFile = Boolean.parseBoolean(atts.getValue("relativeToChangelogFile")); handleIncludedChangeLog(fileName, isRelativeToChangelogFile, databaseChangeLog.getPhysicalFilePath()); } else if ("includeAll".equals(qName)) { String pathName = atts.getValue("path"); Enumeration<URL> resources = resourceAccessor.getResources(databaseChangeLog.getPhysicalFilePath()); while (resources.hasMoreElements()) { try { + databaseChangeLog.getPhysicalFilePath()); pathName = pathName.replaceFirst("^\\Q" + changeLogFile.getParentFile().getAbsolutePath() + "\\E", ""); pathName = databaseChangeLog.getFilePath().replaceFirst("/[^/]*$", "") + pathName; pathName = pathName.replace('\\', '/');
protected OSGiXMLChangeLogSAXHandler(final String physicalChangeLogLocation, final ResourceAccessor resourceAccessor, final ChangeLogParameters changeLogParameters) { log = LogFactory.getLogger(); this.resourceAccessor = resourceAccessor; databaseChangeLog = new DatabaseChangeLog(); databaseChangeLog.setPhysicalFilePath(physicalChangeLogLocation); databaseChangeLog.setChangeLogParameters(changeLogParameters); this.changeLogParameters = changeLogParameters; changeFactory = ChangeFactory.getInstance(); preconditionFactory = PreconditionFactory.getInstance(); sqlVisitorFactory = SqlVisitorFactory.getInstance(); changeLogParserFactory = ChangeLogParserFactory.getInstance(); }
liquibase.changelog.DatabaseChangeLog databaseChangeLog = new liquibase.changelog.DatabaseChangeLog();
protected Status validateChangeSet(Liquibase liquibase, String changelog) throws LiquibaseException { final Status result; List<ChangeSet> changeSets = getLiquibaseUnrunChangeSets(liquibase); if (!changeSets.isEmpty()) { if (changeSets.size() == liquibase.getDatabaseChangeLog().getChangeSets().size()) { result = Status.EMPTY; } else { logger.debugf("Validation failed. Database is not up-to-date for changelog %s", changelog); result = Status.OUTDATED; } } else { logger.debugf("Validation passed. Database is up-to-date for changelog %s", changelog); result = Status.VALID; } // Needs to restart liquibase services to clear ChangeLogHistoryServiceFactory.getInstance(). // See https://issues.jboss.org/browse/KEYCLOAK-3769 for discussion relevant to why reset needs to be here resetLiquibaseServices(liquibase); return result; }
List<ChangeSet> changeSets = changeLogs.getChangeSets(); for(ChangeSet changeSet: changeSets){ for(Change change: changeSet.getChanges()){
List<ChangeSet> changeSets = changeLogs.getChangeSets(); for(ChangeSet changeSet: changeSets){ for(Change change: changeSet.getChanges()){