2010-11-19 2 views
0

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

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

Теперь, несмотря на прямой печати, мне нужно сохранить содержимое «$> содержание СТАТУС» в базе данных, так что я могу манипулировать теми, то есть печать в родитель-ребенок иерархия.

ответ

0

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

Все зависит от структуры другого источника. Если это классическая иерархия родительского идентификатора, то в мире 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); 
    } 

} 
+0

На самом деле я использую PHP и сообщения моего приложения выборку из Twitter с помощью завитка. Я редактировал код. – XCeptable

+0

У меня есть одна проблема, например, когда мы извлекли данные из внешнего источника, как вы можете видеть в моем заявлении на печать. $ xml - это массив, содержащий все значения, которые нам нужно хранить, поэтому мы не можем рассматривать его как локальный вход, поскольку все значения уже получены из внешнего источника, которые должны быть вставлены в базу данных при запуске запроса. – XCeptable

+0

@XCeptable: Ну, я полагаю, когда вы загружаете каждый твит, который уже знаете, если это родитель или ребенок? Потому что, если вы это сделаете, то это сводится к манипулированию существующим вложенным множеством путем добавления нового узла, и это тривиальная операция. – Saul