//<start id="ne-setup"/>
public List<ObjectType> getCreatableTypes(Session session,
String rootTypeId) {
List<ObjectType> result = new ArrayList<ObjectType>();
ObjectType rootType = null;
try {
rootType = session.getTypeDefinition(rootTypeId); //<co id="ch8_gct_1" />
}
catch (CmisObjectNotFoundException e) {
return result; //<co id="ch8_gct_1_1" />
}
boolean isCreatable =
(rootType.isCreatable() == null ? true :
rootType.isCreatable().booleanValue()); //<co id="ch8_gct_1_2" />
if (isCreatable) {
result.add(rootType); //<co id="ch8_gct_2" />
}
List<Tree<ObjectType>> types =
session.getTypeDescendants(rootTypeId, -1, false); //<co id="ch8_gct_3" />
addType(types, result); //<co id="ch8_gct_4" />
return result;
}
private void addType(List<Tree<ObjectType>> types,
List<ObjectType> resultList) {
for (Tree<ObjectType> tt : types) {
if (tt.getItem() != null) {
boolean isCreatable =
(tt.getItem().isCreatable() == null ? true :
tt.getItem().isCreatable().booleanValue());
if (isCreatable) {
resultList.add(tt.getItem());
}
addType(tt.getChildren(), resultList);
}
}
}
//<end id="ne-setup"/>