我如何向我的gwt树提供数据

时间:2010-04-12 12:04:28

标签: java gwt tree

所以我需要为我的gwt项目创建一个带树项的树。我正在使用复合模式来存储我需要放在树中的所有信息。

用户有一个扩展层次结构的根文件夹,然后该根文件夹有一个层次结构对象列表,可以是FileLocations或Folders。麻烦我正在基于这种模式构建我的树。这些数据都是在mysql数据库中使用hibernate存储的

我如何能够在gwt中将其实现为树。

我创建的树项也必须引用回到对象,这样我才能重命名或移动它。

@Entity
@Table(name ="HIERARCHY")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(
name = "HIERARCHY_TYPE", discriminatorType = DiscriminatorType.STRING)      
public abstract class  Hierarchy implements Serializable {

 @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "hierarchy_id", updatable = false, nullable = false)
private int hId;



@Entity
@DiscriminatorValue("F")
public class Folder extends Hierarchy  {

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "FOLDER_JOIN_FILELOCATION", joinColumns = { 
    @JoinColumn(name = "folder_id") }, inverseJoinColumns = { 
    @JoinColumn(name = "file_information_id") })
private List<Hierarchy> children = new ArrayList<Hierarchy>() ;
@Column(name = "folder_name")
private String folderName;

@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name="FOLDER_JOIN_FOLDER",
    joinColumns = @JoinColumn(name="parent_folder_id"),
    inverseJoinColumns = @JoinColumn(name="folder_ID")
 ) 
private Hierarchy parent;




@Entity
@DiscriminatorValue("FI")
public class FileInformation extends Hierarchy  {


@Column (name = "location")
private String location;

@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
 @JoinTable(name="FILEINFORMATION_JOIN_FOLDER",
    joinColumns = @JoinColumn(name="filelocation_id"),
    inverseJoinColumns = @JoinColumn(name="folder_ID")
)  
private Hierarchy parent;

现在我想基于这个结构构建树。如果我的逻辑错了,你可以指出我正确的方向

Tree tree = new Tree();

现在,对于文件夹中的每个文件夹或文件信息,我想创建一个树项?该树项还必须引用回对象本身

2 个答案:

答案 0 :(得分:1)

使用GWT-RPC requests到服务器以及客户端中的TreeTreeItem类,这一切都可以轻松完成。

在启动时(或者当您想第一次显示树时),请调用您的服务,并在回调中使用tree.addItem()将这些项添加到树中。这很容易取决于数据库的结构以及如何将信息传递给客户端,但这应该可以帮助您入门。

另一种选择是使用GWT-incubatorFastTree类,这对于显示大树很有用,并且仅用于在打开文件夹时加载数据。

答案 1 :(得分:0)

您必须遍历您的文件夹/层次结构并找到节点,然后将此父节点添加到一个TreeItem t ,然后找到父节点 children,并将它们添加到 t ,现在为每个找到的孩子做同样的事情。