
org.robovm.ibxcode.pbxproj.PBXGroup Maven / Gradle / Ivy
package org.robovm.ibxcode.pbxproj;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PBXGroup extends PBXNode{
private final Listchildren = new ArrayList<>();
private final Map childrenGroups = new HashMap<>();
private final Map childrenFiles = new HashMap<>();
private final Type groupType;
/** possible group types */
public enum Type {
GROUP("PBXGroup"),
VARIANT_GROUP("PBXVariantGroup");
private String value;
Type(String s) {
value = s;
}
}
public PBXGroup(PBXProject project, String name) {
super(project, name);
groupType = Type.GROUP;
}
public PBXGroup(PBXProject project, String name, Type type) {
super(project, name);
groupType = type;
}
public T addChild(T child) {
this.children.add(child);
if (child instanceof PBXGroup)
childrenGroups.put(child.getName(), (PBXGroup) child);
if (child instanceof PBXFile)
childrenFiles.put(child.getName(), (PBXFile) child);
return child;
}
public List getChildren() {
return children ;
}
public List getSortedChildren(Comparator super PBXNode> comparator) {
List sortedList = new ArrayList<>();
sortedList.addAll(children);
Collections.sort(sortedList, comparator);
return sortedList;
}
public PBXFile getChildFile(String name) {
return childrenFiles.get(name);
}
public PBXGroup getChildGroup(String name) {
return childrenGroups.get(name);
}
public Type getGroupType() {
return groupType;
}
@Override
public void dump(PrintStreamTab ps) {
dump(ps, null);
}
public void dump(PrintStreamTab ps, Comparator super PBXNode> comparator) {
ps.println(this.uuidWithComment() + " = {");
PrintStreamTab groupPs = new PrintStreamTab(ps);
groupPs.println("isa = " + groupType.value + ";");
groupPs.println("children = (");
PrintStreamTab childPs = new PrintStreamTab(groupPs);
List sortedNodes = comparator != null ? getSortedChildren(comparator) : children;
for (PBXNode node : sortedNodes)
childPs.println(node.uuidWithComment() + ",");
groupPs.println(");");
groupPs.println("name = \"" + this.getName() + "\";");
groupPs.println("sourceTree = \"\";");
ps.println("};");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy