package fr.gael.dhus.server.http.webapp.stub.controller.stub_share; import java.util.ArrayList; import java.util.List; public class CollectionData { private String uuid; private String name; private String description; private List<Long> productIds; private List<Long> addedIds; private List<Long> removedIds; public CollectionData () { } public CollectionData (String uuid, String name, String description ) { this.uuid = uuid; this.name = name; this.description = description; } public void setUUID (String uuid) { this.uuid = uuid; } public String getUUID () { return uuid; } public String getName () { return name; } public void setName (String name) { this.name = name; } public String getDescription () { return description; } public void setDescription (String description) { this.description = description; } public List<Long> getProductIds () { return productIds; } public void setProductIds (List<Long> productIds) { this.productIds = productIds; } public void addProduct (Long pid) { checkLists(); if (removedIds.contains (pid)) { removedIds.remove (pid); return; } if (addedIds.contains (pid) || productIds.contains (pid)) { return; } addedIds.add (pid); } public void removeProduct (Long pid) { checkLists(); if (addedIds.contains (pid)) { addedIds.remove (pid); return; } if (removedIds.contains (pid) || !productIds.contains (pid)) { return; } removedIds.add (pid); } public void addProducts (Long[] pid) { for (Long id : pid) { addProduct(id); } } public void removeProducts (Long[] pid) { for (Long id : pid) { removeProduct(id); } } private void checkLists() { if (productIds == null) { this.productIds = new ArrayList<Long> (); } if (addedIds == null) { this.addedIds = new ArrayList<Long> (); } if (removedIds == null) { this.removedIds = new ArrayList<Long> (); } } public List<Long> getAddedIds () { return addedIds; } public void setAddedIds (List<Long> addedIds) { this.addedIds = addedIds; } public List<Long> getRemovedIds () { return removedIds; } public void setRemovedIds (List<Long> removedIds) { this.removedIds = removedIds; } public boolean contains(Long pid) { boolean added = addedIds != null && addedIds.contains (pid); boolean removed = removedIds != null && removedIds.contains (pid); boolean base = productIds != null && productIds.contains (pid); return added || (base && !removed); } @Override public String toString () { return name; } @Override public boolean equals (Object o) { return o instanceof CollectionData && ((CollectionData) o).uuid == this.uuid; } public CollectionData copy () { CollectionData copy = new CollectionData(uuid, name, description); copy.setProductIds (productIds); copy.setAddedIds (addedIds); copy.setRemovedIds (removedIds); return copy; } }