Package org.mongeez.reader

Source Code of org.mongeez.reader.XmlChangeSetReader

/*
* Copyright 2011 SecondMarket Labs, LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/

package org.mongeez.reader;

import org.mongeez.commands.ChangeSet;
import org.mongeez.commands.ChangeSetList;
import org.mongeez.commands.Script;

import org.apache.commons.digester3.Digester;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class XmlChangeSetReader implements ChangeSetReader {
    private static final Logger logger = LoggerFactory.getLogger(XmlChangeSetReader.class);

    private Digester digester;

    XmlChangeSetReader() {
        digester = new Digester();

        digester.setValidating(false);

        digester.addObjectCreate("mongoChangeLog", ChangeSetList.class);
        digester.addObjectCreate("mongoChangeLog/changeSet", ChangeSet.class);
        digester.addSetProperties("mongoChangeLog/changeSet");
        digester.addSetNext("mongoChangeLog/changeSet", "add");

        digester.addObjectCreate("mongoChangeLog/changeSet/script", Script.class);
        digester.addBeanPropertySetter("mongoChangeLog/changeSet/script", "body");
        digester.addSetNext("mongoChangeLog/changeSet/script", "add");
    }

    @Override
    public boolean supports(Resource file) {
        return true;
    }

    @Override
    public List<ChangeSet> getChangeSets(Resource file) {
        List<ChangeSet> changeSets = new ArrayList<ChangeSet>();

        try {
            logger.info("Parsing XML Change Set File {}", file.getFilename());
            ChangeSetList changeFileSet = (ChangeSetList) digester.parse(file.getInputStream());
            if (changeFileSet == null) {
                logger.warn("Ignoring change file {}, the parser returned null. Please check your formatting.", file.getFilename());
            }
            else {
                for (ChangeSet changeSet : changeFileSet.getList()) {
                    ChangeSetReaderUtil.populateChangeSetResourceInfo(changeSet, file);
                }
                changeSets.addAll(changeFileSet.getList());
            }
        } catch (IOException e) {
            logger.error("IOException", e);
        } catch (org.xml.sax.SAXException e) {
            logger.error("SAXException", e);
        }
        return changeSets;
    }
}
TOP

Related Classes of org.mongeez.reader.XmlChangeSetReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.