1 24 package org.riotfamily.components.export; 25 26 import java.util.ArrayList ; 27 import java.util.Collection ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.Set ; 31 32 import org.riotfamily.components.Component; 33 import org.riotfamily.components.ComponentList; 34 import org.riotfamily.components.ComponentRepository; 35 import org.riotfamily.components.ComponentVersion; 36 import org.riotfamily.components.VersionContainer; 37 38 39 45 public class SimpleListBuilder { 46 47 private ComponentRepository componentRepository; 48 49 55 public SimpleListBuilder() { 56 } 57 58 63 public SimpleListBuilder(ComponentRepository componentRepository) { 64 this.componentRepository = componentRepository; 65 } 66 67 72 public SimpleComponentList buildSimpleList(ComponentList list, 73 boolean preview) { 74 75 SimpleComponentList simpleList = new SimpleComponentList(); 76 simpleList.setLocation(list.getLocation()); 77 List containers = preview 78 ? list.getLiveContainers() 79 : list.getLiveContainers(); 80 81 simpleList.setComponents(buildSimpleComponents(containers, preview)); 82 return simpleList; 83 } 84 85 private List buildSimpleComponents(List containers, boolean preview) { 86 ArrayList result = new ArrayList (); 87 Iterator it = containers.iterator(); 88 while (it.hasNext()) { 89 VersionContainer container = (VersionContainer) it.next(); 90 ComponentVersion version = preview 91 ? container.getLatestVersion() 92 : container.getLiveVersion(); 93 94 result.add(buildSimpleComponent(version, preview)); 95 } 96 return result; 97 } 98 99 private SimpleComponent buildSimpleComponent(ComponentVersion version, 100 boolean preview) { 101 102 SimpleComponent simpleComponent = new SimpleComponent(); 103 simpleComponent.setType(version.getType()); 104 simpleComponent.setStringProperties(version.getProperties()); 105 if (componentRepository != null) { 106 Component component = componentRepository.getComponent(version); 107 simpleComponent.setProperties(component.buildModel(version)); 108 } 109 Set childLists = version.getContainer().getChildLists(); 110 if (childLists != null && !childLists.isEmpty()) { 111 simpleComponent.setChildLists(buildSimpleLists(childLists, preview)); 112 } 113 return simpleComponent; 114 } 115 116 private List buildSimpleLists(Collection lists, boolean preview) { 117 ArrayList result = new ArrayList (); 118 Iterator it = lists.iterator(); 119 while (it.hasNext()) { 120 ComponentList list = (ComponentList) it.next(); 121 result.add(buildSimpleList(list, preview)); 122 } 123 return result; 124 } 125 } 126 | Popular Tags |