blob: cc1b220e0d3472e6dc156806a985aff28d61ac2e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.uima.taeconfigurator.model;
import org.apache.uima.resource.metadata.ConfigurationGroup;
import org.apache.uima.resource.metadata.ConfigurationParameter;
import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
import org.apache.uima.taeconfigurator.InternalErrorCDE;
import org.apache.uima.taeconfigurator.editors.ui.AbstractSection;
import org.apache.uima.taeconfigurator.editors.ui.AbstractSectionParm;
/**
* Instances of this class model the 3 varients of configuration parameter sets.
*
*/
public class ConfigGroup {
private ConfigurationParameterDeclarations cpd;
private int kind;
private ConfigurationGroup namedCg = null;
public final static int NOT_IN_ANY_GROUP = 1;
public final static int COMMON = 2;
public final static int NAMED_GROUP = 4;
public ConfigGroup(ConfigurationParameterDeclarations aCpd, int aKind) {
cpd = aCpd;
kind = aKind;
fixupCpd();
}
public ConfigGroup(ConfigurationParameterDeclarations aCpd, ConfigurationGroup aNamedCg) {
cpd = aCpd;
kind = NAMED_GROUP;
namedCg = aNamedCg;
fixupCpd();
}
private void fixupCpd() {
if (null == cpd.getConfigurationParameters())
cpd.setConfigurationParameters(AbstractSection.configurationParameterArray0);
if (null == cpd.getCommonParameters())
cpd.setCommonParameters(AbstractSection.configurationParameterArray0);
if (null == cpd.getConfigurationGroups())
cpd.setConfigurationGroups(AbstractSection.configurationGroupArray0);
ConfigurationGroup[] cgs = cpd.getConfigurationGroups();
for (int i = 0; i < cgs.length; i++) {
if (null == cgs[i].getConfigurationParameters())
cgs[i].setConfigurationParameters(AbstractSection.configurationParameterArray0);
}
}
public ConfigurationParameter[] getConfigParms() {
switch (kind) {
case NOT_IN_ANY_GROUP:
return cpd.getConfigurationParameters();
case COMMON:
return cpd.getCommonParameters();
case NAMED_GROUP:
return namedCg.getConfigurationParameters();
default:
throw new InternalErrorCDE("invalid state");
}
}
public String getName() {
switch (kind) {
case NOT_IN_ANY_GROUP:
return AbstractSectionParm.NOT_IN_ANY_GROUP;
case COMMON:
return AbstractSectionParm.COMMON_GROUP;
case NAMED_GROUP:
return AbstractSectionParm.groupNameArrayToString(namedCg.getNames());
default:
throw new InternalErrorCDE("invalid state");
}
}
public String[] getNameArray() {
switch (kind) {
case NOT_IN_ANY_GROUP:
return new String[] { AbstractSectionParm.NOT_IN_ANY_GROUP };
case COMMON:
return new String[] { AbstractSectionParm.COMMON_GROUP };
case NAMED_GROUP:
return namedCg.getNames();
default:
throw new InternalErrorCDE("invalid state");
}
}
public void setNameArray(String[] names) {
if (kind != NAMED_GROUP)
throw new InternalErrorCDE("invalid call");
namedCg.setNames(names);
}
public int getKind() {
return kind;
}
public ConfigurationParameterDeclarations getCPD() {
return cpd;
}
}