Как мы вставляем значения 'lft' и 'rgt' для модели с вложенным множеством для данных, которые мы получаем из другого источника? - PullRequest
0 голосов
/ 19 ноября 2010

Мне нужно управлять некоторыми иерархическими данными для моего веб-приложения.Данные состоят из сообщений четырех типов.Я решил использовать модель вложенного списка, потому что в данных может быть произвольное количество дочерних узлов.Данные, которые мне нужно хранить, поступают из внешнего источника, как мне добавить значения в поля 'lft' и 'rgt' для их вставки в mySQL.
EDITED Вот какЯ отображаю сообщения (временную шкалу), которые мое приложение выбирает из Twitter, используя curl.

foreach ($xml->entry as $status) {
       echo'<li>'.$status->content.'</li>';
   }

Теперь, несмотря на прямую печать, мне нужно сохранить содержимое '$ status-> content' в базе данных, чтобы я мог манипулировать ими, то есть печатать в иерархии родитель-потомок.

1 Ответ

0 голосов
/ 19 ноября 2010

Одна из возможностей - написать рекурсивную функцию или процедуру, которая просматривает набор данных для импорта.

Все зависит от структуры другого источника.Если это классическая иерархия родительских идентификаторов, то в мире Java вы можете сделать что-то в духе:

public class Importer {

    public static db = new Database();

    public static void processOtherSource(ArrayList<Object> data, int lft) {
        int siblings = 0;
        for (Object element : data) {
            int children = 0;
            if (element.getClass().getName().equals("ArrayList")) {
                children = Importer.processOtherSource(element, lft+1, rgt);
            }
            int rgt = lft + children * 2 + 1;
            Importer.db.insert(element, lft, rgt);
            siblings++;
        }
        return siblings;
    }

    public void main(String[] args) {
        Importer.processOtherSource(dataToImport, 1);
    }

}
...