Search in sources :

Example 1 with KiePMMLFactoryModel

use of org.kie.pmml.commons.model.KiePMMLFactoryModel in project drools by kiegroup.

the class PMMLCompilerImpl method getKiePMMLModelsWithSources.

@Override
public List<KiePMMLModel> getKiePMMLModelsWithSources(final String factoryClassName, final String packageName, final InputStream inputStream, final String fileName, final HasClassLoader hasClassloader) {
    logger.trace("getModels {} {}", inputStream, hasClassloader);
    try {
        PMML commonPMMLModel = KiePMMLUtil.load(inputStream, fileName);
        Set<String> expectedClasses = commonPMMLModel.getModels().stream().map(model -> {
            String modelPackageName = getSanitizedPackageName(String.format(PACKAGE_CLASS_TEMPLATE, packageName, model.getModelName()));
            return modelPackageName + "." + getSanitizedClassName(model.getModelName());
        }).collect(Collectors.toSet());
        final List<KiePMMLModel> toReturn = getModelsWithSources(packageName, commonPMMLModel, hasClassloader);
        final Set<String> generatedClasses = new HashSet<>();
        Map<String, Boolean> expectedClassModelTypeMap = expectedClasses.stream().collect(Collectors.toMap(expectedClass -> expectedClass, expectedClass -> {
            HasSourcesMap retrieved = getHasSourceMap(toReturn, expectedClass);
            generatedClasses.addAll(retrieved.getSourcesMap().keySet());
            return retrieved.isInterpreted();
        }));
        if (!generatedClasses.containsAll(expectedClasses)) {
            expectedClasses.removeAll(generatedClasses);
            String missingClasses = String.join(", ", expectedClasses);
            throw new KiePMMLException("Expected generated class " + missingClasses + " not found");
        }
        Map<String, String> factorySourceMap = getFactorySourceCode(factoryClassName, packageName, expectedClassModelTypeMap);
        KiePMMLFactoryModel kiePMMLFactoryModel = new KiePMMLFactoryModel(factoryClassName, packageName, factorySourceMap);
        toReturn.add(kiePMMLFactoryModel);
        return toReturn;
    } catch (KiePMMLInternalException e) {
        throw new KiePMMLException("KiePMMLInternalException", e);
    } catch (KiePMMLException e) {
        throw e;
    } catch (Exception e) {
        throw new ExternalException("ExternalException", e);
    }
}
Also used : HasClassLoader(org.kie.pmml.commons.model.HasClassLoader) LoggerFactory(org.slf4j.LoggerFactory) ExternalException(org.kie.pmml.api.exceptions.ExternalException) HashSet(java.util.HashSet) KiePMMLUtil(org.kie.pmml.compiler.commons.utils.KiePMMLUtil) KiePMMLFactoryModel(org.kie.pmml.commons.model.KiePMMLFactoryModel) KiePMMLInternalException(org.kie.pmml.api.exceptions.KiePMMLInternalException) Map(java.util.Map) KiePMMLModel(org.kie.pmml.commons.model.KiePMMLModel) KiePMMLModelUtils.getSanitizedPackageName(org.kie.pmml.commons.utils.KiePMMLModelUtils.getSanitizedPackageName) KiePMMLModelRetriever.getFromCommonDataAndTransformationDictionaryAndModel(org.kie.pmml.compiler.commons.implementations.KiePMMLModelRetriever.getFromCommonDataAndTransformationDictionaryAndModel) PMML(org.dmg.pmml.PMML) Logger(org.slf4j.Logger) Set(java.util.Set) KiePMMLModelRetriever.getFromCommonDataAndTransformationDictionaryAndModelWithSources(org.kie.pmml.compiler.commons.implementations.KiePMMLModelRetriever.getFromCommonDataAndTransformationDictionaryAndModelWithSources) Collectors(java.util.stream.Collectors) List(java.util.List) KiePMMLFactoryFactory.getFactorySourceCode(org.kie.pmml.compiler.commons.factories.KiePMMLFactoryFactory.getFactorySourceCode) HasSourcesMap(org.kie.pmml.commons.model.HasSourcesMap) CommonCompilationDTO(org.kie.pmml.compiler.api.dto.CommonCompilationDTO) Optional(java.util.Optional) PACKAGE_CLASS_TEMPLATE(org.kie.pmml.commons.Constants.PACKAGE_CLASS_TEMPLATE) KiePMMLException(org.kie.pmml.api.exceptions.KiePMMLException) KiePMMLModelUtils.getSanitizedClassName(org.kie.pmml.commons.utils.KiePMMLModelUtils.getSanitizedClassName) InputStream(java.io.InputStream) ExternalException(org.kie.pmml.api.exceptions.ExternalException) ExternalException(org.kie.pmml.api.exceptions.ExternalException) KiePMMLInternalException(org.kie.pmml.api.exceptions.KiePMMLInternalException) KiePMMLException(org.kie.pmml.api.exceptions.KiePMMLException) KiePMMLFactoryModel(org.kie.pmml.commons.model.KiePMMLFactoryModel) KiePMMLModel(org.kie.pmml.commons.model.KiePMMLModel) PMML(org.dmg.pmml.PMML) KiePMMLException(org.kie.pmml.api.exceptions.KiePMMLException) KiePMMLInternalException(org.kie.pmml.api.exceptions.KiePMMLInternalException) HasSourcesMap(org.kie.pmml.commons.model.HasSourcesMap) HashSet(java.util.HashSet)

Aggregations

InputStream (java.io.InputStream)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 PMML (org.dmg.pmml.PMML)1 ExternalException (org.kie.pmml.api.exceptions.ExternalException)1 KiePMMLException (org.kie.pmml.api.exceptions.KiePMMLException)1 KiePMMLInternalException (org.kie.pmml.api.exceptions.KiePMMLInternalException)1 PACKAGE_CLASS_TEMPLATE (org.kie.pmml.commons.Constants.PACKAGE_CLASS_TEMPLATE)1 HasClassLoader (org.kie.pmml.commons.model.HasClassLoader)1 HasSourcesMap (org.kie.pmml.commons.model.HasSourcesMap)1 KiePMMLFactoryModel (org.kie.pmml.commons.model.KiePMMLFactoryModel)1 KiePMMLModel (org.kie.pmml.commons.model.KiePMMLModel)1 KiePMMLModelUtils.getSanitizedClassName (org.kie.pmml.commons.utils.KiePMMLModelUtils.getSanitizedClassName)1 KiePMMLModelUtils.getSanitizedPackageName (org.kie.pmml.commons.utils.KiePMMLModelUtils.getSanitizedPackageName)1 CommonCompilationDTO (org.kie.pmml.compiler.api.dto.CommonCompilationDTO)1 KiePMMLFactoryFactory.getFactorySourceCode (org.kie.pmml.compiler.commons.factories.KiePMMLFactoryFactory.getFactorySourceCode)1