Package org.drools.guvnor.server.builder

Source Code of org.drools.guvnor.server.builder.PackageDRLAssembler

/*
* Copyright 2011 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.guvnor.server.builder;

import org.drools.guvnor.client.common.AssetFormats;
import org.drools.guvnor.server.contenthandler.ContentHandler;
import org.drools.guvnor.server.contenthandler.ContentManager;
import org.drools.guvnor.server.contenthandler.IRuleAsset;
import org.drools.guvnor.server.util.DroolsHeader;
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;

import java.util.Iterator;

public class PackageDRLAssembler extends AssemblerBase {

    private StringBuilder src;

    public PackageDRLAssembler(PackageItem packageItem) {
        super(packageItem);
    }

    public String getDRL() {
        src = new StringBuilder();

        loadHeader();
        loadDSLFiles();
        loadDeclaredTypes();
        loadFunctions();
        loadRuleAssets();

        return src.toString();
    }

    private void loadHeader() {
        src.append("package ").append(this.packageItem.getName()).append("\n");
        src.append(DroolsHeader.getDroolsHeader(this.packageItem)).append("\n\n");
    }

    private void loadDeclaredTypes() {
        Iterator<AssetItem> assetItemIterator = getAssetItemIterator(AssetFormats.DRL_MODEL);
        while (assetItemIterator.hasNext()) {
            addAsset(assetItemIterator.next());
        }
    }

    private void loadFunctions() {
        Iterator<AssetItem> assetItemIterator = getAssetItemIterator(AssetFormats.FUNCTION);
        while (assetItemIterator.hasNext()) {
            addAsset(assetItemIterator.next());
        }
    }

    private void loadRuleAssets() {
        Iterator<AssetItem> assetItemIterator = getAllAssets();
        while (assetItemIterator.hasNext()) {
            addRuleAsset(assetItemIterator.next());
        }
    }

    private void addRuleAsset(AssetItem asset) {
        if (!asset.isArchived() && !asset.getDisabled()) {
            ContentHandler handler = ContentManager.getHandler(asset.getFormat());
            if (handler.isRuleAsset()) {
                IRuleAsset ruleAsset = (IRuleAsset) handler;
                ruleAsset.assembleDRL(builder,
                        asset,
                        src);
            }
            src.append("\n\n");
        }
    }

    private void addAsset(AssetItem assetItem) {
        if (!assetItem.isArchived() && !assetItem.getDisabled()) {
            src.append(assetItem.getContent()).append("\n\n");
        }
    }

}
TOP

Related Classes of org.drools.guvnor.server.builder.PackageDRLAssembler

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.