package io.cattle.platform.configitem.request;
import io.cattle.platform.configitem.model.Client;
import io.cattle.platform.eventing.model.Event;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlTransient;
import com.google.common.util.concurrent.ListenableFuture;
public class ConfigUpdateRequest {
boolean migration = false;
boolean deferredTrigger = false;
Client client;
List<ConfigUpdateItem> items = new ArrayList<ConfigUpdateItem>();
Map<String, Object> attributes = new HashMap<String, Object>();
ListenableFuture<? extends Event> updateFuture;
/**
* Do not use this constructor, only here for JSON marshalling
*/
public ConfigUpdateRequest() {
}
public ConfigUpdateRequest(Client client) {
this.client = client;
}
public static ConfigUpdateRequest forResource(Class<?> type, Long resourceId) {
return new ConfigUpdateRequest(new Client(type, resourceId));
}
public ConfigUpdateItem addItem(String name) {
ConfigUpdateItem item = new ConfigUpdateItem(name);
items.add(item);
return item;
}
public List<ConfigUpdateItem> getItems() {
return items;
}
public void setItems(List<ConfigUpdateItem> items) {
this.items = items;
}
public boolean isDeferredTrigger() {
return deferredTrigger;
}
public void setDeferredTrigger(boolean deferredTrigger) {
this.deferredTrigger = deferredTrigger;
}
public ConfigUpdateRequest withDeferredTrigger(boolean deferredTrigger) {
this.deferredTrigger = deferredTrigger;
return this;
}
public Client getClient() {
return client;
}
public boolean isMigration() {
return migration;
}
public void setMigration(boolean migration) {
this.migration = migration;
}
public ConfigUpdateRequest withMigration(boolean migration) {
this.migration = migration;
return this;
}
public Map<String, Object> getAttributes() {
return attributes;
}
public void setAttributes(Map<String, Object> attributes) {
this.attributes = attributes;
}
@XmlTransient
public ListenableFuture<? extends Event> getUpdateFuture() {
return updateFuture;
}
public void setUpdateFuture(ListenableFuture<? extends Event> updateFuture) {
this.updateFuture = updateFuture;
}
@Override
public String toString() {
StringBuilder message = new StringBuilder("update [");
boolean first = true;
for (ConfigUpdateItem item : items) {
if (!first) {
message.append(", ");
}
first = false;
message.append(item.getName());
}
message.append("] on [").append(client).append("]");
return message.toString();
}
}