package atujplag.util;
import jplagWsClient.jplagClient.Option;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class LanguageSetting {
private String name;
private String suffixes;
private int minMatchLen;
private String clusterType;
private boolean readSubdirs;
private String storeMatches;
private Element elem;
/**
* Adds a new language element with the given name "name" to the
* document's root element. Unset attributes stay as default values
*/
public LanguageSetting(Document doc, String name) {
this.name = name;
elem = doc.createElement("language");
elem.setAttribute("name",name);
elem.setAttribute("storeMatches","20");
storeMatches = "20";
clusterType = "";
suffixes = "";
doc.getDocumentElement().appendChild(elem);
}
public LanguageSetting(Element elem) {
this.elem = elem;
name = elem.getAttribute("name");
if(name.length()==0) name = "Illegal language name";
suffixes = elem.getAttribute("suffixes"); //$NON-NLS-1$
minMatchLen = parseElemInt("minMatchLen"); //$NON-NLS-1$
clusterType = elem.getAttribute("clusterType"); //$NON-NLS-1$
readSubdirs = parseElemBoolean("readSubdirs"); //$NON-NLS-1$
storeMatches = elem.getAttribute("storeMatches"); //$NON-NLS-1$
}
/**
* Constructs an element-less LanguageSetting object out of a Option object.
* The set methods may not be used for the resulting object!
*/
public LanguageSetting(Option opt) {
elem = null;
name = opt.getLanguage();
String[] suffixArray = opt.getSuffixes();
StringBuffer strbuf = new StringBuffer();
for(int i=0;i<suffixArray.length;i++) {
strbuf.append(suffixArray[i]);
if(i!=suffixArray.length-1) strbuf.append(',');
}
this.suffixes = strbuf.toString();
minMatchLen = opt.getMinimumMatchLength();
clusterType = opt.getClustertype();
readSubdirs = opt.isReadSubdirs();
storeMatches = opt.getStoreMatches();
}
/**
* Constructs an element-less LanguageSetting object using the specified
* parameters. "storeMatches" will be initialised to "20" and clusterType
* to "". To be used for applying default settings
*/
public LanguageSetting(String name, String[] suffixArray, int minMatchLen) {
this.elem = null;
this.name = name;
this.minMatchLen = minMatchLen;
storeMatches = "20";
clusterType = "";
StringBuffer strbuf = new StringBuffer();
for(int i=0;i<suffixArray.length;i++) {
strbuf.append(suffixArray[i]);
if(i!=suffixArray.length-1) strbuf.append(',');
}
this.suffixes = strbuf.toString();
}
private void setElemString(String name, String str) {
elem.setAttribute(name, (str == null) ? "" : str); //$NON-NLS-1$
}
private void setElemInt(String name, int val) {
setElemString(name, val + ""); //$NON-NLS-1$
}
private int parseElemInt(String name) {
try {
return Integer.parseInt(elem.getAttribute(name));
}
catch(NumberFormatException ex) {
System.out.println("LanguageSetting: Attribute \""+name+"\" is not "
+ "a number!");
return 0;
}
}
private boolean parseElemBoolean(String name) {
return elem.getAttribute(name).equals("true"); //$NON-NLS-1$
}
public String getClusterType() {
return clusterType;
}
public void setClusterType(String clusterType) {
this.clusterType = clusterType;
setElemString("clusterType", clusterType); //$NON-NLS-1$
}
public int getMinMatchLen() {
return minMatchLen;
}
public void setMinMatchLen(int minMatchLen) {
this.minMatchLen = minMatchLen;
setElemInt("minMatchLen", minMatchLen); //$NON-NLS-1$
}
public String getName() {
return name;
}
public boolean isReadSubdirs() {
return readSubdirs;
}
public void setReadSubdirs(boolean readSubdirs) {
this.readSubdirs = readSubdirs;
setElemString("readSubdirs", (readSubdirs?"true":"false")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
public String getStoreMatches() {
return storeMatches;
}
public void setStoreMatches(String storeMatches) {
this.storeMatches = storeMatches;
setElemString("storeMatches", storeMatches); //$NON-NLS-1$
}
public String getSuffixes() {
return suffixes;
}
public void setSuffixes(String[] suffArray) {
StringBuffer strbuf = new StringBuffer();
for(int i=0;i<suffArray.length;i++) {
strbuf.append(suffArray[i]);
if(i!=suffArray.length-1) strbuf.append(',');
}
suffixes = strbuf.toString();
setElemString("suffixes", suffixes);
}
}