private TypeDesc processGroup()

in src/com/intellij/idea/plugin/hybris/system/type/model/generator/XSDModelLoader.java [467:519]


    private TypeDesc processGroup(
        final XSModelGroup modelGroup,
        final List<XSModel> models,
        final Map<String, TypeDesc> jtMap,
        final Map<String, NamespaceDesc> nsdMap
    ) {
        XSModelGroupDefinition def = null;
        for (XSModel xsModel : models) {
            final XSNamedMap map = xsModel.getComponents(XSConstants.MODEL_GROUP_DEFINITION);
            for (int i = 0; i < map.getLength(); i++) {
                final XSModelGroupDefinition mg = (XSModelGroupDefinition) map.item(i);
                final XSModelGroup xsModelGroup = mg.getModelGroup();
                if (xsModelGroup == modelGroup || xsModelGroup.toString().equals(modelGroup.toString())) {
                    def = mg;
                    break;
                }
            }
        }
        if (def == null) {
            return null;
        }
        if (!nsdMap.containsKey(def.getNamespace())) {
            Util.log("Namespace desc not found for: " + def);
        }
        final String typeName = toJavaTypeName(def, nsdMap);
        final String typeQName = model.toJavaQualifiedTypeName(def, nsdMap, false);
        TypeDesc td = jtMap.get(typeQName);
        if (td != null) {
            if (td.type == TypeDesc.TypeEnum.GROUP_INTERFACE) {
                return td;
            } else {
                Util.logerr("type-group conflict: " + typeName);
                return null;
            }
        } else {
            td = new TypeDesc(def.getName(), def.getNamespace(), typeName, TypeDesc.TypeEnum.GROUP_INTERFACE);
        }

        final XSAnnotation ann = def.getAnnotation();
        td.documentation = parseAnnotationString(
            "Type " + def.getNamespace() + ':' + def.getName() + " documentation",
            ann == null ? null : ann.getAnnotationString()
        );
        td.type = TypeDesc.TypeEnum.GROUP_INTERFACE;
        final LinkedList<PEntry> plist = new LinkedList<>();
        for (int i = 0; i < def.getModelGroup().getParticles().getLength(); i++) {
            final XSParticle p = (XSParticle) def.getModelGroup().getParticles().item(i);
            plist.add(new PEntry(p, false));
        }
        processParticles(def, plist, nsdMap, jtMap, td, models, null, null);
        jtMap.put(typeQName, td);
        return td;
    }