/**
*
*/
package org.js.model.feature.ptnet.sedaj.util;
import hub.top.editor.ptnetLoLA.PtNet;
import org.js.model.feature.FeatureModel;
import org.js.model.feature.Group;
/**
* Utility class for {@link FeatureModel}.
* Used by the transformation from {@link FeatureModel} to {@link PtNet}.
* @author Tim Winkelmann
*
*/
public class FMUtil {
/**
* Checks the for different group relations and returns the {@link GroupDefinition} of the {@link Group}.
* @param group the {@link Group} which group relation will be checked
* @return the {@link GroupDefinition} of the {@link Group}
*/
public static GroupDefinition getGroupDefinition(Group group){
if (group.getMinCardinality() == group.getMaxCardinality() && group.getChildFeatures().size() == group.getMaxCardinality()) {
return GroupDefinition.mandatory;
}
if (group.getMinCardinality() == 0 && group.getChildFeatures().size() == group.getMaxCardinality()) {
return GroupDefinition.optional;
}
if (group.getMinCardinality() == 1 && group.getMaxCardinality() == 1) {
return GroupDefinition.alternativ;
}
if (group.getMinCardinality() == 1 && group.getChildFeatures().size() == group.getMaxCardinality()) {
return GroupDefinition.inclusivOr;
}
if (group.getMinCardinality() == 0 && group.getMaxCardinality() == 1) {
return GroupDefinition.exclusivOptional;
}
return GroupDefinition.general;
}
}