package org.ovirt.engine.ui.webadmin.plugin.entity;
import java.util.List;
import org.ovirt.engine.ui.uicommonweb.models.tags.TagModel;
import org.ovirt.engine.ui.webadmin.plugin.jsni.JsMutableObjectWithProperties;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
public final class TagObject extends JsMutableObjectWithProperties {
protected TagObject() {}
/**
* Generate a Javascript TagObject from a GWT TagModel object, including the child nodes.
* @param model The GWT model
* @return A Javascript TagObject representing the information in from the parameter model.
*/
public static TagObject from(TagModel model) {
return from(model, true);
}
private static TagObject from(TagModel model, boolean includeChildren) {
TagObject result = JavaScriptObject.createObject().cast();
result.setValueAsString("description", model.getDescription().getEntity()); //$NON-NLS-1$
result.setValueAsString("name", model.getName().getEntity()); //$NON-NLS-1$
result.setValueAsBoolean("selected", model.getSelection()); //$NON-NLS-1$
if (includeChildren) {
JsArray<TagObject> children = JavaScriptObject.createArray().cast();
for (TagModel child : model.getChildren()) {
children.push(TagObject.from(child, true));
}
result.setValueAsJavaScriptObject("children", children); //$NON-NLS-1$
}
return result;
}
/**
* Generate a JsArray of TagObjects that contains only the ACTIVE selected Tags from the tree.
* @param model The ROOT node of the Tag tree.
* @return A JsArray of active TagObjects.
*/
public static JsArray<TagObject> activeTagArray(List<TagModel> activeTags) {
JsArray<TagObject> result = JavaScriptObject.createArray().cast();
for (TagModel activeTag: activeTags) {
result.push(from(activeTag, false));
}
return result;
}
}