workspace-tree-widget/src/main/java/org/gcube/portlets/user/workspace/client/workspace/GWTWorkspaceItem.java

328 lines
5.4 KiB
Java

/**
*
*/
package org.gcube.portlets.user.workspace.client.workspace;
import java.util.Date;
import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* The Class GWTWorkspaceItem.
*
* @author Federico De Faveri defaveriAtisti.cnr.it
*/
public abstract class GWTWorkspaceItem implements IsSerializable {
protected String id;
protected GWTProperties properties;
protected String name;
protected String owner;
protected Date creationTime;
protected String description;
protected Date lastModificationTime;
protected GWTWorkspaceItemAction lastAction;
protected GWTWorkspaceFolder parent;
protected boolean isLoading = false;
/**
* Instantiates a new GWT workspace item.
*/
protected GWTWorkspaceItem()
{}
/**
* Instantiates a new GWT workspace item.
*
* @param parent the parent
* @param id the id
* @param name the name
* @param description the description
* @param owner the owner
* @param creationTime the creation time
* @param properties the properties
* @param lastModificationTime the last modification time
* @param lastAction the last action
*/
public GWTWorkspaceItem(GWTWorkspaceFolder parent, String id, String name,
String description, String owner, Date creationTime,
GWTProperties properties, Date lastModificationTime, GWTWorkspaceItemAction lastAction) {
this.parent = parent;
this.creationTime = creationTime;
this.id = id;
this.properties = properties;
this.name = name;
this.owner = owner;
this.description = description;
this.lastModificationTime = lastModificationTime;
this.lastAction = lastAction;
}
/**
* Sets the id.
*
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* Gets the id.
*
* @return the id
*/
public String getId(){
return id;
}
/**
* Gets the parent.
*
* @return the parent
*/
public GWTWorkspaceFolder getParent()
{
return parent;
}
/**
* Gets the creation time.
*
* @return the creation time
*/
public Date getCreationTime(){
return creationTime;
}
/**
* Gets the properties.
*
* @return the properties
*/
public GWTProperties getProperties(){
return properties;
}
/**
* Gets the name.
*
* @return the name
*/
public String getName(){
return name;
}
/**
* Gets the owner.
*
* @return the owner
*/
public String getOwner(){
return owner;
}
/**
* Gets the description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Gets the last modification time.
*
* @return the last modification time
*/
public Date getLastModificationTime() {
return lastModificationTime;
}
/**
* Gets the last action.
*
* @return the last action
*/
public GWTWorkspaceItemAction getLastAction() {
return lastAction;
}
/**
* Gets the item description.
*
* @return the item description
*/
public abstract GWTItemDescription getItemDescription();
/**
* Gets the label.
*
* @return the label
*/
public String getLabel()
{
return getItemDescription().getLabel();
}
/**
* Gets the icon class.
*
* @return the icon class
*/
public String getIconClass(){
return getItemDescription().getIconClass();
}
/**
* Gets the type.
*
* @return the type
*/
public abstract GWTWorkspaceItemType getType();
/**
* Gets the children.
*
* @return the children
*/
public abstract List<? extends GWTWorkspaceItem> getChildren();
/**
* Sets the parent.
*
* @param parent the new parent
*/
protected void setParent(GWTWorkspaceFolder parent)
{
this.parent = parent;
}
/**
* Count sub tree children.
*
* @return the int
*/
public int countSubTreeChildren()
{
int total = 0;
for (GWTWorkspaceItem child : getChildren()){
total += 1 + child.countSubTreeChildren();
}
return total;
}
/**
* Count sub tree children.
*
* @param type the type
* @return the int
*/
public int countSubTreeChildren(GWTWorkspaceItemType type)
{
int total = 0;
for (GWTWorkspaceItem child : getChildren()){
total += child.countSubTreeChildren(type);
if (child.getType() == type) total++;
}
return total;
}
/**
* Sets the name.
*
* @param name the new name
*/
protected void setName(String name)
{
this.name = name;
}
/**
* Sets the description.
*
* @param description the new description
*/
protected void setDescription(String description) {
this.description = description;
}
/**
* Checks if is root.
*
* @return true, if is root
*/
public boolean isRoot()
{
return getParent() == null;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Item: "+this.name;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (!(obj instanceof GWTWorkspaceItem)) return false;
return this.id.equals(((GWTWorkspaceItem)obj).getId());
}
/**
* Gets the path.
*
* @return the path
*/
public String getPath()
{
if (isRoot()) return "/"+name;
return getParent().getPath()+"/"+name;
}
/**
* Checks if is ancestor.
*
* @param item the item
* @return true, if is ancestor
*/
public boolean isAncestor(GWTWorkspaceItem item)
{
if (id.equals(item.getId())) return true;
if (isRoot()) return false;
return getParent().isAncestor(item);
}
/**
* Checks if is loading.
*
* @return the isLoading
*/
public boolean isLoading() {
return isLoading;
}
}