/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.vdb;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* @author blafond
*
*/
public class AllowedLanguages extends VdbUnit implements Iterable<String> {
private Set<String> languages = new LinkedHashSet<String>();
/**
*
*/
public AllowedLanguages() {
super();
}
/**
* @param inputString
*/
public AllowedLanguages(String inputString) {
this();
addAllowedLanguage(inputString);
}
/**
* @param values
*/
public AllowedLanguages(String[] values) {
this();
addAllowedLanguages(values);
}
/**
* @param vdb
*/
public AllowedLanguages(Vdb vdb) {
this();
setVdb(vdb);
}
/**
* @return output string
*/
public String getOutputString() {
StringBuilder sb = new StringBuilder();
int count = 0;
int max = languages.size();
for( String lang : languages ) {
sb.append(lang);
count++;
if( count < max ) sb.append(COMMA + SPACE);
}
return sb.toString();
}
/**
* @return array of allowed languages
*/
public String[] getAllowedLanguageValues() {
return languages.toArray(new String[languages.size()]);
}
/**
* @param value containing new language
*/
public void addAllowedLanguage(String value) {
if( value.contains(COMMA)) {
loadFromString(value);
} else {
setChanged(languages.add(value));
}
}
/**
* @param value containing new language
*/
public void removeAllowedLanguage(String value) {
setChanged(languages.remove(value));
}
/**
* @param values
*/
public void addAllowedLanguages(String[] values) {
boolean changed = false;
for( String value : values ) {
boolean result = this.languages.add(value);
if( result ) changed = true;
}
setChanged(changed);
}
private boolean loadFromString(String commaSeparatedValues) {
String[] values = commaSeparatedValues.split(COMMA);
boolean changed = false;
for( String value : values ) {
boolean result = this.languages.add(value.trim());
if( result ) changed = true;
}
return changed;
}
/**
* @return is empty
*/
public boolean isEmpty() {
return languages.isEmpty();
}
/**
* @return size
*/
public int size() {
return languages.size();
}
@Override
public Iterator<String> iterator() {
return languages.iterator();
}
@Override
public AllowedLanguages clone() {
AllowedLanguages clone = new AllowedLanguages();
for (String language : languages)
clone.addAllowedLanguage(language);
cloneVdbObject(clone);
return clone;
}
}