Package org.drools.repository.migration

Source Code of org.drools.repository.migration.MigrateDroolsPackage

/*
* Copyright 2010 JBoss Inc
*
* 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.drools.repository.migration;

import javax.jcr.Node;
import javax.jcr.RepositoryException;

import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
import org.drools.repository.PackageIterator;
import org.drools.repository.RulesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* This is a one time class which will be used to migrate package header info for drools.
* Only needed for drools version 4 repositories.
*/
public class MigrateDroolsPackage {

    private final Logger log = LoggerFactory.getLogger(this.getClass());
    public boolean needsMigration(RulesRepository repo) throws RepositoryException {
        Node root = repo.getSession().getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME);
        return !root.hasNode("drools.package.migrated");
    }

    public void migrate(RulesRepository repo) throws RepositoryException {
        log.info("AUTO MIGRATION: Performing drools.package migration...");
        PackageIterator pkgs = repo.listPackages();
        boolean performed = false;
        while(pkgs.hasNext()) {
            performed = true;
            PackageItem pkg = (PackageItem) pkgs.next();
            migratePackage(pkg);

            String[] snaps = repo.listPackageSnapshots(pkg.getName());
            if (snaps != null) {
                for (int i = 0; i < snaps.length; i++) {
                    PackageItem snap = repo.loadPackageSnapshot(pkg.getName(), snaps[i]);
                    migratePackage(snap);
                }
            }
        }



        if (performed) {
            repo.getSession().getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME).addNode("drools.package.migrated", "nt:folder");
            repo.save();
            log.info("AUTO MIGRATION: drools.package migration completed.");
        }
    }

    private void migratePackage(PackageItem pkg) {
        if (!pkg.containsAsset("drools")) {
            AssetItem asset = pkg.addAsset("drools", "");
            asset.updateFormat("package");
            asset.updateContent(pkg.getStringProperty(PackageItem.HEADER_PROPERTY_NAME));
            asset.checkin("");
        }
    }


}
TOP

Related Classes of org.drools.repository.migration.MigrateDroolsPackage

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.