package org.signalml.app.method.ep.view.tags;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* This class represents a group of tag style names.
* (This functionality is needed for evoked potentials
* averaging.)
*
* @author Piotr Szachewicz
*/
@XStreamAlias("tagStyleGroup")
public class TagStyleGroup {
private List<String> tagStyleNames = new ArrayList<String>();
public TagStyleGroup() {
}
public TagStyleGroup(String tagName) {
addTagStyle(tagName);
}
public void addTagStyle(String tagStyle) {
if (!contains(tagStyle)) {
tagStyleNames.add(tagStyle);
}
}
protected boolean contains(String tagStyle) {
for (String addedTagStyle: tagStyleNames) {
if (addedTagStyle.equals(tagStyle))
return true;
}
return false;
}
public List<String> getTagStyleNames() {
return tagStyleNames;
}
public int getNumberOfTagStyles() {
return tagStyleNames.size();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof TagStyleGroup))
return false;
TagStyleGroup otherGroup = (TagStyleGroup) obj;
if (otherGroup.getNumberOfTagStyles() != getNumberOfTagStyles())
return false;
for (int i = 0; i < otherGroup.getNumberOfTagStyles(); i++) {
if (!otherGroup.getTagStyleNames().get(i).equals(getTagStyleNames().get(i)))
return false;
}
return true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < tagStyleNames.size(); i++) {
sb.append(tagStyleNames.get(i));
if (i < tagStyleNames.size()-1)
sb.append(" & ");
}
return sb.toString();
}
}