Package org.drools.guvnor.server.builder

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

package org.drools.guvnor.server.builder;

import org.drools.guvnor.client.common.AssetFormats;
import org.drools.lang.dsl.DSLMappingParseException;
import org.drools.lang.dsl.DSLTokenizedMappingFile;
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepositoryException;

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

public class DSLLoader {

    public static List<DSLTokenizedMappingFile> loadDSLMappingFiles(PackageItem packageItem) {
        return loadDSLMappingFiles(packageItem, new BRMSPackageBuilder.DSLErrorEvent() {
            public void recordError(AssetItem asset,
                                    String message) {
                // ignore at this point...
            }
        });
    }

    public static List<DSLTokenizedMappingFile> loadDSLMappingFiles(PackageItem packageItem,
                                                                    BRMSPackageBuilder.DSLErrorEvent dslErrorEvent) {
        return loadDSLMappingFiles(packageItem.listAssetsWithVersionsSpecifiedByDependenciesByFormat(AssetFormats.DSL), dslErrorEvent);
    }

    static List<DSLTokenizedMappingFile> loadDSLMappingFiles(Iterator<AssetItem> assetItemIterator, BRMSPackageBuilder.DSLErrorEvent dslErrorEvent) {
        List<DSLTokenizedMappingFile> result = new ArrayList<DSLTokenizedMappingFile>();

        while (assetItemIterator.hasNext()) {
            addAsset(dslErrorEvent, result, assetItemIterator.next());
        }

        return result;
    }

    private static void addAsset(BRMSPackageBuilder.DSLErrorEvent dslErrorEvent,
                                 List<DSLTokenizedMappingFile> result,
                                 AssetItem assetItem) {
        if (!assetItem.getDisabled()) {
            DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
            try {
                if (file.parseAndLoad(new StringReader(assetItem.getContent()))) {
                    result.add(file);
                } else {
                    logErrors(dslErrorEvent, assetItem, file);
                }

            } catch (IOException e) {
                throw new RulesRepositoryException(e);
            }
        }
    }

    private static void logErrors(BRMSPackageBuilder.DSLErrorEvent dslErrorEvent, AssetItem assetItem, DSLTokenizedMappingFile file) {
        for (Object o : file.getErrors()) {
         
          if(o instanceof DSLMappingParseException){
              DSLMappingParseException dslMappingParseException = (DSLMappingParseException) o;
              dslErrorEvent.recordError(assetItem, "Line " + dslMappingParseException.getLine() + " : " + dslMappingParseException.getMessage());
          }else if(o instanceof Exception){
            Exception excp = (Exception)o;
            dslErrorEvent.recordError(assetItem, "Exception "+ excp.getClass()+" "+ excp.getMessage()+" "+excp.getCause());
          }else{
            dslErrorEvent.recordError(assetItem, "Uncategorized error "+o);
          }
        }
    }
}
TOP

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

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.