
com.almworks.jira.structure.api2g.attribute.ItemSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of structure-api Show documentation
Show all versions of structure-api Show documentation
Public API for the Structure Plugin for JIRA
package com.almworks.jira.structure.api2g.attribute;
import com.almworks.jira.structure.api2g.item.ItemIdentity;
import java.util.*;
public abstract class ItemSet {
public static final ItemSet EMPTY = of();
// must be serializable and understandable by the widget - so we protect it from extensions
private ItemSet() {}
public static ItemSet of(ItemIdentity ... ids) {
return new SpecificItems(new HashSet<>(Arrays.asList(ids)));
}
public abstract boolean contains(ItemIdentity id);
public abstract ItemSet add(ItemIdentity trailItem);
public abstract void accept(Visitor visitor);
public abstract boolean isEmpty();
public static final class SpecificItems extends ItemSet {
private final Set myItems;
public SpecificItems(Set items) {
myItems = Collections.synchronizedSet(Collections.unmodifiableSet(items));
}
public boolean contains(ItemIdentity id) {
return myItems.contains(id);
}
public Set getItems() {
return myItems;
}
public ItemSet add(ItemIdentity trailItem) {
Set ids = new HashSet<>(myItems);
ids.add(trailItem);
return new SpecificItems(ids);
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
@Override
public boolean isEmpty() {
return myItems.isEmpty();
}
}
public static final class AllItemsOfType extends ItemSet {
private final String myItemType;
public AllItemsOfType(String itemType) {
myItemType = itemType;
}
public String getItemType() {
return myItemType;
}
public boolean contains(ItemIdentity id) {
return id != null && id.getItemType().equals(myItemType);
}
public ItemSet add(ItemIdentity trailItem) {
throw new UnsupportedOperationException(); // todo composite set?
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
@Override
public boolean isEmpty() {
return false;
}
}
public interface Visitor {
void visit(SpecificItems set);
void visit(AllItemsOfType set);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy