/*******************************************************************************
* Copyright (c) 2017 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.windup.ui.internal.rules;
import java.io.File;
import org.jboss.tools.windup.model.domain.ModelService;
import org.jboss.tools.windup.ui.internal.rules.xml.XMLRulesetModelUtil;
import org.jboss.tools.windup.windup.CustomRuleProvider;
import org.jboss.windup.tooling.rules.RuleProvider;
import org.jboss.windup.tooling.rules.RuleProvider.RuleProviderType;
import org.jboss.windup.tooling.rules.RuleProviderRegistry;
public class RulesNode {
protected RuleProviderRegistry ruleProviderRegistry;
public RulesNode (RuleProviderRegistry ruleProviderRegistry) {
this.ruleProviderRegistry = ruleProviderRegistry;
}
public Object[] getChildren() {
if (ruleProviderRegistry == null) {
return new Object[0];
}
return XMLRulesetModelUtil.readSystemRuleProviders(ruleProviderRegistry).stream().toArray(RuleProvider[]::new);
}
public static class SystemRulesNode extends RulesNode {
public SystemRulesNode (RuleProviderRegistry registry) {
super (registry);
}
}
public static class CustomRulesNode extends RulesNode {
private ModelService modelService;
public CustomRulesNode (ModelService modelService) {
super (null);
this.modelService = modelService;
}
@Override
public Object[] getChildren() {
return modelService.getModel().getCustomRuleRepositories().stream().toArray(CustomRuleProvider[]::new);
}
}
public static class RulesetFileNode {
private File file;
private RuleProviderType type;
public RulesetFileNode (File file, RuleProviderType type) {
this.file = file;
this.type = type;
}
public String getName() {
return file.getName();
}
public File getFile() {
return file;
}
public RuleProviderType getRuleProviderType () {
return type;
}
}
}