package comeon.ui.preferences.wikis;
import com.google.common.base.Strings;
import comeon.model.User;
import comeon.model.Wiki;
import comeon.ui.preferences.Model;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public final class WikiModel implements Model {
private final PropertyChangeSupport pcs;
private String name;
private String url;
private String login;
private String password;
private String displayName;
private Boolean active;
public enum Properties {
NAME, URL, LOGIN, PASSWORD, DISPLAY_NAME, ACTIVE
}
public WikiModel() {
this.pcs = new PropertyChangeSupport(this);
this.active = Boolean.FALSE;
}
public WikiModel(final Wiki wiki, final Boolean active) {
this();
this.name = wiki.getName();
this.url = wiki.getUrl();
this.login = wiki.getUser().getLogin();
this.password = wiki.getUser().getPassword();
this.displayName = wiki.getUser().getDisplayName();
this.active = active;
}
@Override
public void addPropertyChangeListener(final PropertyChangeListener pcl) {
this.pcs.addPropertyChangeListener(pcl);
}
@Override
public void removePropertyChangeListener(final PropertyChangeListener pcl) {
this.pcs.removePropertyChangeListener(pcl);
}
public String getName() {
return name;
}
public void setName(final String name) {
final String oldName = this.name;
this.name = name;
pcs.firePropertyChange(Properties.NAME.name(), oldName, name);
}
public String getUrl() {
return url;
}
public void setUrl(final String url) {
final String oldUrl = this.url;
this.url = url;
pcs.firePropertyChange(Properties.URL.name(), oldUrl, url);
}
public String getLogin() {
return login;
}
public void setLogin(final String login) {
final String oldLogin = this.login;
this.login = login;
pcs.firePropertyChange(Properties.LOGIN.name(), oldLogin, login);
}
public String getPassword() {
return password;
}
public void setPassword(final String password) {
final String oldPassword = this.password;
this.password = password;
pcs.firePropertyChange(Properties.PASSWORD.name(), oldPassword, password);
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(final String displayName) {
final String oldDisplayName = this.displayName;
this.displayName = displayName;
pcs.firePropertyChange(Properties.DISPLAY_NAME.name(), oldDisplayName, displayName);
}
public Boolean getActive() {
return active;
}
public void setActive(final Boolean active) {
final Boolean oldActive = this.active;
this.active = active;
pcs.firePropertyChange(Properties.ACTIVE.name(), oldActive, active);
}
public Wiki asWiki() {
return new Wiki(name, url, new User(login, password, displayName));
}
public static WikiModel getPrototype() {
final WikiModel prototype = new WikiModel();
prototype.name = Strings.repeat("x", 32);
prototype.displayName = Strings.repeat("xxxxxx ", 3);
prototype.active = Boolean.TRUE;
return prototype;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}