/*
* Copyright 2012 SFB 632.
*
* Licensed 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 annis.libgui;
import annis.gui.FontConfig;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* Hold information about the configuration of a specific (sub-) instance of ANNIS.
*
* Each physical installation (speak deployment) of ANNIS is able to have several
* instances which behave differently. This is meant to provide a more specialized
* presentation for different projects while still using only one ANNIS installation.
*
* @author Thomas Krause <krauseto@hu-berlin.de>
*/
@XmlRootElement
public class InstanceConfig implements Serializable
{
private String instanceName;
private String instanceDisplayName;
private String defaultQueryBuilder;
private List<CorpusSet> corpusSets;
private String defaultCorpusSet;
private FontConfig font;
private FontConfig frequencyFont;
private String keyboardLayout;
private boolean loginOnStart;
public InstanceConfig()
{
instanceName = "";
instanceDisplayName = "";
defaultQueryBuilder = "";
corpusSets = new LinkedList<>();
defaultCorpusSet = "";
loginOnStart = false;
}
/**
* Get the internal short name of this instance.
* @return
*/
@XmlTransient
public String getInstanceName()
{
return instanceName;
}
/**
* @param instanceName
* @see #getInstanceName()
*/
public void setInstanceName(String instanceName)
{
this.instanceName = instanceName;
}
/**
* Get the external display name (used e.g. in the user interface) of this instance.
* @return
*/
@XmlElement(name="display-name")
public String getInstanceDisplayName()
{
return instanceDisplayName;
}
/**
* @param instanceDisplayName
* @see #getInstanceDisplayName()
*/
public void setInstanceDisplayName(String instanceDisplayName)
{
this.instanceDisplayName = instanceDisplayName;
}
/**
* Get the short name of the query builder that should be selected by default.
* @return
*/
@XmlElement(name="default-querybuilder")
public String getDefaultQueryBuilder()
{
return defaultQueryBuilder;
}
/**
* @param defaultQueryBuilder
* @see #getDefaultQueryBuilder()
*/
public void setDefaultQueryBuilder(String defaultQueryBuilder)
{
this.defaultQueryBuilder = defaultQueryBuilder;
}
/**
* Get the corpus sets that are pre-defined by the instance.
* @return
*/
@XmlElementWrapper(name="corpus-sets")
public List<CorpusSet> getCorpusSets()
{
return corpusSets;
}
/**
* @param corpusSets
* @see #getCorpusSets()
*/
public void setCorpusSets(List<CorpusSet> corpusSets)
{
this.corpusSets = corpusSets;
}
/**
* Get the name of the corpus set that should be activated by default.
* @return
*/
@XmlElement(name="default-corpusset")
public String getDefaultCorpusSet()
{
return defaultCorpusSet;
}
/**
* @param defaultCorpusSet
* @see #getDefaultCorpusSet()
*/
public void setDefaultCorpusSet(String defaultCorpusSet)
{
this.defaultCorpusSet = defaultCorpusSet;
}
/**
* Get the special font used by this instance.
* @return
*/
@XmlElement(name="font")
public FontConfig getFont()
{
return font;
}
/**
* @see #getFont()
* @param font
*/
public void setFont(FontConfig font)
{
this.font = font;
}
/**
* Default keyboard layout used for the virtual keyboard.
*
* Do not set {@code null} to disable virtual keyboards.
* @return
*/
@XmlElement(name = "keyboard-layout")
public String getKeyboardLayout()
{
return keyboardLayout;
}
/**
* @see #getKeyboardLayout()
* @param keyboardLayout
*/
public void setKeyboardLayout(String keyboardLayout)
{
this.keyboardLayout = keyboardLayout;
}
/**
* Get a special font config that should be used in the frequency chart.
* Might return {@code null}, in this case you should use the default font
* from {@link #getFont() }.
* @return
*/
@XmlElement(name = "frequency-font")
public FontConfig getFrequencyFont()
{
return frequencyFont;
}
/**
* @see #getFrequencyFont()
* @param frequencyFont
*/
public void setFrequencyFont(FontConfig frequencyFont)
{
this.frequencyFont = frequencyFont;
}
/**
* If true the login window is shown at each startup automatically.
* @return
*/
@XmlElement(name = "login-on-start")
public boolean isLoginOnStart()
{
return loginOnStart;
}
/**
* @see #isLoginOnStart()
* @param loginOnStart
*/
public void setLoginOnStart(boolean loginOnStart)
{
this.loginOnStart = loginOnStart;
}
}