Как я могу предоставить данные для моего дерева GWT - PullRequest
0 голосов
/ 12 апреля 2010

Так что мне нужно создать дерево с элементами дерева для моего проекта GWT. Я использую составной шаблон для хранения всей информации, которую мне нужно разместить в дереве.

У пользователя есть корневая папка, которая расширяет иерархию, тогда эта корневая папка имеет список объектов иерархии, которые могут быть файловыми папками или папками. Проблема, которую я имею, строит мое дерево, основанное на этом образце. все эти данные хранятся с использованием hibernate в базе данных mysql

Как бы я мог реализовать это как дерево в 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 ]

1 голос
/ 12 апреля 2010

Все это можно сделать довольно легко с помощью GWT-RPC запросов к вашему серверу и Tree и TreeItem в клиенте.

При запуске (или когда вы хотите отобразить дерево в первый раз), сделайте вызов вашей службе и в обратном вызове добавьте эти элементы в дерево, используя tree.addItem(). От того, насколько легко это будет зависеть, зависит то, как ваша база данных структурирована и как вы передаете информацию клиенту, но это должно помочь вам начать работу.

Другой вариант - использовать GWT-инкубатор FastTree класс, который подходит для отображения больших деревьев и для загрузки данных, например, только когда папка открыта.

0 голосов
/ 05 октября 2010

Вы должны пройти через свою папку / иерархию и найти узел parent , затем добавить этого родителя в один TreeItem t , а затем найти родителей детей и добавьте их к t , теперь для каждого найденного ребенка сделайте то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...