Search in sources :

Example 1 with Entity

use of com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity in project cubrid-manager by CUBRID.

the class ExportSchemaTask method setDrawData.

private void setDrawData(Model model) {
    int ENTITY_PER_ROW = 5;
    model.setSubjectAreaGroups(new SubjectAreaGroups());
    SubjectArea subjectArea = new SubjectArea();
    model.getSubjectAreaGroups().getSubjectAreaList().add(subjectArea);
    String name = "<Main Subject Area>";
    subjectArea.setId(getUUID());
    subjectArea.setName(name);
    subjectArea.setSubjectAreaProps(new SubjectAreaProps());
    subjectArea.getSubjectAreaProps().setName(new SubjectAreaProps.Name());
    subjectArea.getSubjectAreaProps().getName().setValue(name);
    subjectArea.setStoredDisplayGroups(new StoredDisplayGroups());
    StoredDisplay storedDisplay = new StoredDisplay();
    storedDisplay.setId(getUUID());
    storedDisplay.setName("Display1");
    subjectArea.getStoredDisplayGroups().getStoredDisplay().add(storedDisplay);
    DrawingObjectEntityGroups groups = new DrawingObjectEntityGroups();
    storedDisplay.setDrawingObjectEntityGroups(groups);
    Map<String, String> locationMap = new HashMap<String, String>();
    int idx = 1;
    int row = 1;
    for (Entry<String, Entity> entry : entityMap.entrySet()) {
        if (idx > ENTITY_PER_ROW) {
            idx = 1;
            row++;
        }
        String id = entry.getValue().getId();
        ReferencedEntity entity = new ReferencedEntity();
        entity.setValue(id);
        subjectArea.getSubjectAreaProps().getReferencedEntities().add(entity);
        DrawingObjectEntity dEntity = new DrawingObjectEntity();
        dEntity.setId(getUUID());
        dEntity.setName(entry.getValue().getName());
        dEntity.setDrawingObjectEntityProps(new DrawingObjectEntityProps());
        dEntity.getDrawingObjectEntityProps().setDoEntityHeightAutoResizeable(new DOEntityHeightAutoResizeable());
        dEntity.getDrawingObjectEntityProps().getDoEntityHeightAutoResizeable().setValue(Boolean.TRUE.toString());
        dEntity.getDrawingObjectEntityProps().setDoEntityWidthAutoResizeable(new DOEntityWidthAutoResizeable());
        dEntity.getDrawingObjectEntityProps().getDoEntityWidthAutoResizeable().setValue(Boolean.TRUE.toString());
        dEntity.getDrawingObjectEntityProps().setDoReferenceObject(new DOReferenceObject());
        dEntity.getDrawingObjectEntityProps().getDoReferenceObject().setValue(id);
        dEntity.getDrawingObjectEntityProps().setDolocation(new DOLocation());
        String location = row * 500 + "," + idx * 500;
        dEntity.getDrawingObjectEntityProps().getDolocation().setValue("(" + location + ",0,0)");
        groups.getDrawingObjectEntity().add(dEntity);
        locationMap.put(id, location);
        idx++;
    }
    DrawingObjectRelationshipGroups shipGroups = new DrawingObjectRelationshipGroups();
    storedDisplay.setDrawingObjectRelationshipGroups(shipGroups);
    for (Entry<String, Relationship> entry : relationshipMap.entrySet()) {
        String relId = entry.getKey();
        Relationship relEntity = entry.getValue();
        ReferencedEntity entity = new ReferencedEntity();
        entity.setValue(relId);
        subjectArea.getSubjectAreaProps().getReferencedEntities().add(entity);
        DrawingObjectRelation relation = new DrawingObjectRelation();
        relation.setId(getUUID());
        relation.setName(relEntity.getName());
        shipGroups.getDrawingObjectRelationshipEntity().add(relation);
        relation.setDrawingObjectRelationshipProps(new DrawingObjectRelationshipProps());
        relation.getDrawingObjectRelationshipProps().setDoReferenceObject(new DOReferenceObject());
        relation.getDrawingObjectRelationshipProps().getDoReferenceObject().setValue(relId);
        String pId = relEntity.getRelationshipProps().getRelationshipParentEntity().getValue();
        String cId = relEntity.getRelationshipProps().getRelationshipChildEntity().getValue();
        String pl = locationMap.get(pId);
        String cl = locationMap.get(cId);
        int[] pco = parseLocation(pl);
        int[] cco = parseLocation(cl);
        int ydis = pco[0] - cco[0];
        int xdis = pco[1] - cco[1];
        boolean x = (Math.abs(xdis) > Math.abs(ydis)) ? false : true;
        //			int[] p1 = pco;
        //			int[] p2 = (x) ? new int[] { pco[0], pco[1] - (xdis / 2) }
        //					: new int[] { pco[0] - (ydis / 2), pco[1] };
        //			int[] p3 = (x) ? new int[] { cco[0], cco[1] + (xdis / 2) }
        //					: new int[] { cco[0] + (ydis / 2), cco[1] };
        //			int[] p4 = cco;
        int[] p1 = new int[] { pco[1] + 10, pco[0] + 10 };
        int[] p4 = new int[] { cco[1] + 10, cco[0] + 10 };
        int[] p2 = (x) ? new int[] { p1[0] - (xdis / 2), p1[1] } : new int[] { p1[0], p1[1] - (ydis / 2) };
        int[] p3 = (x) ? new int[] { p4[0] + (xdis / 2), p4[1] } : new int[] { p4[0], p4[1] + (ydis / 2) };
        DORelationshipPath path = new DORelationshipPath();
        path.setValue(arrayToString(p4));
        path = new DORelationshipPath();
        path.setValue(arrayToString(p3));
        relation.getDrawingObjectRelationshipProps().getDoRelationshipPathList().add(path);
        path = new DORelationshipPath();
        path.setValue(arrayToString(p2));
        relation.getDrawingObjectRelationshipProps().getDoRelationshipPathList().add(path);
        path = new DORelationshipPath();
        path.setValue(arrayToString(p1));
        relation.getDrawingObjectRelationshipProps().setDoUserControledPath(new DOUserControledPath());
        relation.getDrawingObjectRelationshipProps().getDoUserControledPath().setValue("true");
    }
}
Also used : SubjectAreaGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Model.SubjectAreaGroups) RelationshipParentEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentEntity) RelationshipChildEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildEntity) ReferencedEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectAreaProps.ReferencedEntity) DrawingObjectEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntity) Entity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity) DrawingObjectRelationshipGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.StoredDisplay.DrawingObjectRelationshipGroups) HashMap(java.util.HashMap) DOUserControledPath(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectRelationshipProps.DOUserControledPath) DOEntityWidthAutoResizeable(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntityProps.DOEntityWidthAutoResizeable) DORelationshipPath(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectRelationshipProps.DORelationshipPath) SubjectAreaProps(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectAreaProps) DrawingObjectRelationshipProps(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectRelationshipProps) SubjectArea(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectArea) StoredDisplay(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.StoredDisplay) DOEntityHeightAutoResizeable(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntityProps.DOEntityHeightAutoResizeable) DrawingObjectEntityProps(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntityProps) DOReferenceObject(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DOReferenceObject) ReferencedEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectAreaProps.ReferencedEntity) DrawingObjectEntityGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.StoredDisplay.DrawingObjectEntityGroups) StoredDisplayGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectArea.StoredDisplayGroups) DOLocation(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntityProps.DOLocation) Constraint(com.cubrid.common.core.common.model.Constraint) DrawingObjectRelation(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectRelation) DrawingObjectEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntity) ParentRelationship(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentRelationship) Relationship(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Relationship)

Example 2 with Entity

use of com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity in project cubrid-manager by CUBRID.

the class ExportSchemaTask method execute.

public void execute() {
    // FIXME logic code move to core module
    entityMap.clear();
    relationshipMap.clear();
    entityAttrMap.clear();
    ERwin4 root = new ERwin4();
    Model model = new Model();
    // DEFUALT database type "ODBC" "194"
    model.setTargetServer("194");
    model.setDbmsVersion("3");
    model.setModelProps(new Model.ModelProps());
    model.getModelProps().setDbmsVersion(new DBMSVersion());
    model.getModelProps().getDbmsVersion().setValue("3");
    model.getModelProps().setTargetServer(new TargetServer());
    model.getModelProps().getTargetServer().setValue("194");
    model.setId(getUUID());
    root.setModel(model);
    RelationshipGroups relationShipGroups = new RelationshipGroups();
    model.setRelationshipGroups(relationShipGroups);
    model.setDefaultValueGroups(new DefaultValueGroups());
    EntityGroups groups = new EntityGroups();
    model.setEntityGroups(groups);
    for (Entry<String, SchemaInfo> entry : allSchemaInfos.entrySet()) {
        String physicalTableName = entry.getKey();
        String logicalTableName = physicalTableName;
        if (tablePLMap != null) {
            String logical = tablePLMap.get(physicalTableName);
            logicalTableName = StringUtil.isEmpty(logical) ? physicalTableName : logical;
        }
        SchemaInfo schemaInfo = entry.getValue();
        if (schemaInfo.isSystemClass()) {
            continue;
        }
        Entity entity = new Entity();
        groups.getEntity().add(entity);
        entity.setId(getUUID());
        entity.setName(logicalTableName);
        entityMap.put(physicalTableName, entity);
        entityAttrMap.put(physicalTableName, new HashMap<String, Attribute>());
        EntityPropsList entityPropsList = new EntityPropsList();
        entity.setEntityProps(entityPropsList);
        entityPropsList.setPhysicalName(new EntityPropsList.PhysicalName());
        entityPropsList.getPhysicalName().setValue(physicalTableName);
        Type type = new Type();
        if (schemaInfo.getVirtual().equals(ClassType.NORMAL.getText())) {
            type.setValue(ERXmlModelConstant.ENTITYTYPE_TABLE_STR);
        } else {
            type.setValue(ERXmlModelConstant.ENTITYTYPE_VIEW_STR);
        }
        entityPropsList.setType(type);
        Name nameEntityProps = new Name();
        nameEntityProps.setValue(logicalTableName);
        entityPropsList.setName(nameEntityProps);
        List<DBAttribute> attributes = schemaInfo.getAttributes();
        AttributeGroups attributeGroups = new AttributeGroups();
        entity.setAttributeGroups(attributeGroups);
        Map<String, Attribute> schemaAttrMap = new HashMap<String, Attribute>();
        int attrOrder = 1;
        for (DBAttribute dbAttr : attributes) {
            Attribute attribute = new Attribute();
            attributeGroups.getAttribute().add(attribute);
            attribute.setId(getUUID());
            String logicalAttrName = getLogicalAttrName(physicalTableName, dbAttr.getName());
            if (StringUtil.isEmpty(logicalAttrName)) {
                logicalAttrName = dbAttr.getName();
            }
            attribute.setName(logicalAttrName);
            schemaAttrMap.put(dbAttr.getName(), attribute);
            AttributePropsList attributePropsList = new AttributePropsList();
            attribute.setAttributeProps(attributePropsList);
            attributePropsList.setPhysicalName(new PhysicalName());
            attributePropsList.getPhysicalName().setValue(dbAttr.getName());
            com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Type attrType = new com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Type();
            attributePropsList.setType(attrType);
            if (dbAttr.isNotNull() && dbAttr.isUnique()) {
                attrType.setValue("" + ERXmlModelConstant.ATTRIBUTE_TYPE_PK);
            } else {
                attrType.setValue("100");
            }
            Datatype dataType = new Datatype();
            String typeValue = dbAttr.getType();
            if (!StringUtil.isEmpty(dbAttr.getEnumeration())) {
                typeValue += dbAttr.getEnumeration();
            }
            dataType.setValue(typeValue);
            attributePropsList.setDataType(dataType);
            com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Name propName = new com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Name();
            propName.setValue(logicalAttrName);
            attributePropsList.setName(propName);
            LogicalDataType logicalDataType = new LogicalDataType();
            String logicalAttrType = getLogicalAttrType(physicalTableName, dbAttr.getName());
            if (StringUtil.isEmpty(logicalAttrType)) {
                logicalAttrType = typeValue;
            }
            logicalDataType.setValue(logicalAttrType);
            attributePropsList.setLogicalDataType(logicalDataType);
            if (dbAttr.isNotNull()) {
                NullOption nullOption = new NullOption();
                nullOption.setValue("" + 1);
                attributePropsList.setNullOption(nullOption);
            }
            Order order = new Order();
            attributePropsList.setOrder(order);
            order.setValue("" + attrOrder++);
            if (dbAttr.getDefault() != null) {
                String defaultNameStr = handleSpace(dbAttr.getDefault());
                String defaultName = "default_" + defaultNameStr;
                Default defaultValue = null;
                attributePropsList.setDefaultValue(new AttributePropsList.DefaultValue());
                if (defaultNodeMap.containsKey(defaultName)) {
                    defaultValue = defaultNodeMap.get(defaultName);
                    attributePropsList.getDefaultValue().setValue(defaultValue.getId());
                    continue;
                }
                String defaultId = getUUID();
                DefaultValueGroups defaultValueGroups = model.getDefaultValueGroups();
                attributePropsList.getDefaultValue().setValue(defaultId);
                defaultValue = new Default();
                defaultValue.setId(defaultId);
                defaultValue.setName("default_" + defaultNameStr);
                defaultValueGroups.getDefault().add(defaultValue);
                defaultNodeMap.put(defaultValue.getName(), defaultValue);
                DefaultPropsList defaultPropsList = new DefaultPropsList();
                defaultValue.setDefaultProps(defaultPropsList);
                defaultPropsList.setName(new DefaultPropsList.Name());
                defaultPropsList.getName().setValue(defaultValue.getName());
                defaultPropsList.setServerValue(new ServerValue());
                defaultPropsList.getServerValue().setValue(dbAttr.getDefault());
                defaultPropsList.setLogicalDefaultValue(new LogicalDefaultValue());
                defaultPropsList.getLogicalDefaultValue().setValue(dbAttr.getDefault());
            }
        }
        entityAttrMap.put(physicalTableName, schemaAttrMap);
    }
    List<String> relIds = new ArrayList<String>();
    for (Entry<String, SchemaInfo> entry : allSchemaInfos.entrySet()) {
        Entity entity = entityMap.get(entry.getKey());
        if (entity == null)
            continue;
        SchemaInfo schemaInfo = entry.getValue();
        Map<String, Attribute> schemaAttrMap = entityAttrMap.get(schemaInfo.getClassname());
        KeyGroupGroups keyGroups = new KeyGroupGroups();
        entity.setKeyGroupGroups(keyGroups);
        // counter for index
        int fk = 1;
        int idx = 1;
        int uidx = 1;
        List<Constraint> constraints = schemaInfo.getConstraints();
        for (Constraint constraint : constraints) {
            if (!isValid(constraint)) {
                continue;
            }
            KeyGroup keyGroup = new KeyGroup();
            keyGroups.getKeyGroup().add(keyGroup);
            keyGroup.setId(getUUID());
            keyGroup.setName(constraint.getName());
            KeyGroupPropsList keyGroupPropsList = new KeyGroupPropsList();
            keyGroup.setKeyGroupProps(keyGroupPropsList);
            KeyGroupMemberGroups keyGroupMemberGroups = new KeyGroupMemberGroups();
            keyGroup.setKeyGroupMemberGroups(keyGroupMemberGroups);
            KeyGroupType keyGrouptype = new KeyGroupType();
            keyGroupPropsList.setKeyGroupType(keyGrouptype);
            if (constraint.getType().equals(ConstraintType.PRIMARYKEY.getText())) {
                keyGrouptype.setValue("PK");
                List<String> keyAttr = constraint.getAttributes();
                int order = 1;
                for (String keyName : keyAttr) {
                    KeyGroupMember keyGroupMember = new KeyGroupMember();
                    keyGroupMemberGroups.getKeyGroupMember().add(keyGroupMember);
                    keyGroupMember.setId(getUUID());
                    keyGroupMember.setName("" + order);
                    KeyGroupMemberPropsList propList = new KeyGroupMemberPropsList();
                    keyGroupMember.setKeyGroupMemberProps(propList);
                    KeyGroupPosition position = new KeyGroupPosition();
                    propList.setKeyGroupPosition(position);
                    position.setValue("" + order++);
                    KeyGroupMemberColumn column = new KeyGroupMemberColumn();
                    Attribute attrTemp = schemaAttrMap.get(keyName);
                    column.setValue(attrTemp.getId());
                    propList.setKeyGroupMemberColumn(column);
                }
            } else if (constraint.getType().equals(ConstraintType.FOREIGNKEY.getText())) {
                keyGrouptype.setValue("IF" + fk++);
                String relId = getUUID();
                keyGroupPropsList.setKeyGroupRelationPointer(new KeyGroupRelationPointer());
                keyGroupPropsList.getKeyGroupRelationPointer().setValue(relId);
                relIds.add(relId);
                List<String> keyAttr = constraint.getAttributes();
                String inherit = constraint.getReferencedTable();
                Entity pEntity = entityMap.get(inherit);
                if (pEntity == null) {
                    continue;
                }
                Map<String, Attribute> tempAttrMap = entityAttrMap.get(schemaInfo.getClassname());
                Map<String, Attribute> parentAttrMap = entityAttrMap.get(inherit);
                Relationship relationShip = new Relationship();
                relationShip.setId(relId);
                relationshipMap.put(relId, relationShip);
                relationShip.setName("R/" + fk);
                model.getRelationshipGroups().getRelationship().add(relationShip);
                RelationshipPropsList relationShipPropsList = new RelationshipPropsList();
                relationShip.setRelationshipProps(relationShipPropsList);
                relationShipPropsList.setName(new RelationshipPropsList.Name());
                relationShipPropsList.getName().setValue(relationShip.getName());
                // type == 7 : non-identify fk
                relationShipPropsList.setType(new RelationshipPropsList.Type());
                relationShipPropsList.getType().setValue("2");
                relationShipPropsList.setRelationshipNoNulls(new RelationshipNoNulls());
                relationShipPropsList.getRelationshipNoNulls().setValue("101");
                relationShipPropsList.setRelationshipSequence(new RelationshipSequence());
                relationShipPropsList.getRelationshipSequence().setValue("1");
                relationShipPropsList.setRelationshipParentInsertRule(new RelationshipParentInsertRule());
                relationShipPropsList.getRelationshipParentInsertRule().setValue("0");
                relationShipPropsList.setRelationshipParentUpdateRule(new RelationshipParentUpdateRule());
                relationShipPropsList.setRelationshipParentDeleteRule(new RelationshipParentDeleteRule());
                relationShipPropsList.setRelationshipChildInsertRule(new RelationshipChildInsertRule());
                relationShipPropsList.getRelationshipChildInsertRule().setValue("0");
                relationShipPropsList.setRelationshipChildUpdateRule(new RelationshipChildUpdateRule());
                relationShipPropsList.getRelationshipChildUpdateRule().setValue("0");
                relationShipPropsList.setRelationshipChildDeleteRule(new RelationshipChildDeleteRule());
                relationShipPropsList.getRelationshipChildDeleteRule().setValue("0");
                List<String> rules = constraint.getRules();
                for (String rule : rules) {
                    if (rule.indexOf("ON UPDATE") != -1) {
                        int tmp = rule.replace("ON UPDATE ", "").hashCode();
                        RelationshipParentUpdateRule updateRule = relationShipPropsList.getRelationshipParentUpdateRule();
                        if (tmp == "CASCADE".hashCode()) {
                            updateRule.setValue("10001");
                        } else if (tmp == "NO ACTION".hashCode()) {
                            updateRule.setValue("9998");
                        } else if (tmp == "RESTRICT".hashCode()) {
                            updateRule.setValue("10000");
                        }
                    } else if (rule.indexOf("ON DELETE") != -1) {
                        int tmp = rule.replace("ON DELETE ", "").hashCode();
                        RelationshipParentDeleteRule deleteRule = relationShipPropsList.getRelationshipParentDeleteRule();
                        if (tmp == "CASCADE".hashCode()) {
                            deleteRule.setValue("10005");
                        } else if (tmp == "NO ACTION".hashCode()) {
                            deleteRule.setValue("9999");
                        } else if (tmp == "RESTRICT".hashCode()) {
                            deleteRule.setValue("10004");
                        }
                    }
                }
                relationShipPropsList.setRelationshipParentEntity(new RelationshipParentEntity());
                relationShipPropsList.getRelationshipParentEntity().setValue(pEntity.getId());
                relationShipPropsList.setRelationshipChildEntity(new RelationshipChildEntity());
                relationShipPropsList.getRelationshipChildEntity().setValue(entityMap.get(schemaInfo.getClassname()).getId());
                LinkedList<String> pkAttr = new LinkedList<String>();
                SchemaInfo parentTable = allSchemaInfos.get(inherit);
                for (Constraint con : parentTable.getConstraints()) {
                    if (con.getType().equals(ConstraintType.PRIMARYKEY.getText())) {
                        pkAttr.addAll(con.getAttributes());
                        break;
                    }
                }
                int order = 1;
                for (String keyName : keyAttr) {
                    KeyGroupMember keyGroupMember = new KeyGroupMember();
                    keyGroupMemberGroups.getKeyGroupMember().add(keyGroupMember);
                    keyGroupMember.setId(getUUID());
                    keyGroupMember.setName("" + order);
                    KeyGroupMemberPropsList propList = new KeyGroupMemberPropsList();
                    keyGroupMember.setKeyGroupMemberProps(propList);
                    KeyGroupPosition position = new KeyGroupPosition();
                    propList.setKeyGroupPosition(position);
                    position.setValue("" + order++);
                    KeyGroupMemberColumn column = new KeyGroupMemberColumn();
                    String parentPkAttr = pkAttr.remove();
                    Attribute attrTemp = tempAttrMap.get(keyName);
                    column.setValue(attrTemp.getId());
                    propList.setKeyGroupMemberColumn(column);
                    // Attribute parent part
                    Attribute schemaAttr = schemaAttrMap.get(keyName);
                    AttributePropsList schemaPropList = schemaAttr.getAttributeProps();
                    Attribute parentPkAttrNode = parentAttrMap.get(parentPkAttr);
                    ParentAttribute pAttribute = new ParentAttribute();
                    pAttribute.setValue(parentPkAttrNode.getId());
                    schemaPropList.setParentAttribute(pAttribute);
                    schemaAttr.getAttributeProps().setParentRelationship(new ParentRelationship());
                    schemaAttr.getAttributeProps().getParentRelationship().setValue(relId);
                }
            } else if (constraint.getType().equals(ConstraintType.INDEX.getText()) || constraint.getType().equals(ConstraintType.REVERSEINDEX.getText())) {
                keyGrouptype.setValue("IE" + idx++);
                List<String> keyAttr = constraint.getAttributes();
                int order = 1;
                for (String keyName : keyAttr) {
                    KeyGroupMember keyGroupMember = new KeyGroupMember();
                    keyGroupMemberGroups.getKeyGroupMember().add(keyGroupMember);
                    keyGroupMember.setId(getUUID());
                    keyGroupMember.setName("" + order);
                    KeyGroupMemberPropsList propList = new KeyGroupMemberPropsList();
                    keyGroupMember.setKeyGroupMemberProps(propList);
                    for (String rule : constraint.getRules()) {
                        if (rule.toLowerCase().startsWith(keyName.toLowerCase())) {
                            if (rule.toLowerCase().indexOf(" desc") != -1) {
                                propList.setKeyGroupSortOrder(new KeyGroupSortOrder());
                                propList.getKeyGroupSortOrder().setValue("DESC");
                            }
                        }
                    }
                    KeyGroupPosition position = new KeyGroupPosition();
                    propList.setKeyGroupPosition(position);
                    position.setValue("" + order++);
                    KeyGroupMemberColumn column = new KeyGroupMemberColumn();
                    Attribute attrTemp = schemaAttrMap.get(keyName);
                    column.setValue(attrTemp.getId());
                    propList.setKeyGroupMemberColumn(column);
                }
            } else if (constraint.getType().equals(ConstraintType.UNIQUE.getText()) || constraint.getType().equals(ConstraintType.REVERSEUNIQUE.getText())) {
                keyGrouptype.setValue("AK" + uidx++);
                List<String> keyAttr = constraint.getAttributes();
                int order = 1;
                for (String keyName : keyAttr) {
                    KeyGroupMember keyGroupMember = new KeyGroupMember();
                    keyGroupMemberGroups.getKeyGroupMember().add(keyGroupMember);
                    keyGroupMember.setId(getUUID());
                    keyGroupMember.setName("" + order);
                    KeyGroupMemberPropsList propList = new KeyGroupMemberPropsList();
                    keyGroupMember.setKeyGroupMemberProps(propList);
                    KeyGroupPosition position = new KeyGroupPosition();
                    propList.setKeyGroupPosition(position);
                    position.setValue("" + order++);
                    KeyGroupMemberColumn column = new KeyGroupMemberColumn();
                    Attribute attrTemp = schemaAttrMap.get(keyName);
                    column.setValue(attrTemp.getId());
                    propList.setKeyGroupMemberColumn(column);
                    KeyGroupSortOrder sortOrder = new KeyGroupSortOrder();
                    propList.setKeyGroupSortOrder(sortOrder);
                    for (String rule : constraint.getRules()) {
                        if (rule.toLowerCase().startsWith(keyName.toLowerCase())) {
                            String orderStr = rule.replace(keyName.toLowerCase(), "").replaceAll(" ", "");
                            sortOrder.setValue(orderStr);
                        }
                    }
                }
            }
        }
    }
    setDrawData(model);
    FileOutputStream fout = null;
    try {
        File f = new File(filename);
        if (!f.exists()) {
            try {
                f.createNewFile();
            } catch (IOException e) {
                CommonUITool.openErrorBox(Messages.bind(Messages.errCreateFile, filename));
                return;
            }
        }
        fout = new FileOutputStream(f);
        marshaller.marshal(root, fout);
        fout.close();
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        isSuccess = false;
    } finally {
        try {
            if (fout != null) {
                fout.flush();
                fout.close();
            }
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
    isSuccess = true;
}
Also used : RelationshipParentEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentEntity) RelationshipChildEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildEntity) ReferencedEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.SubjectAreaProps.ReferencedEntity) DrawingObjectEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntity) Entity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity) KeyGroupMember(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMember) RelationshipChildInsertRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildInsertRule) HashMap(java.util.HashMap) Constraint(com.cubrid.common.core.common.model.Constraint) ArrayList(java.util.ArrayList) NullOption(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.NullOption) LogicalDataType(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.LogicalDataType) Name(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.EntityPropsList.Name) PhysicalName(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.PhysicalName) Datatype(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Datatype) AttributeGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity.AttributeGroups) RelationshipChildEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildEntity) LogicalDefaultValue(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList.LogicalDefaultValue) KeyGroupMemberPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList) RelationshipPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList) AttributePropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) KeyGroupPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupPropsList) EntityPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.EntityPropsList) DefaultPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList) SchemaInfo(com.cubrid.common.core.common.model.SchemaInfo) KeyGroupSortOrder(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList.KeyGroupSortOrder) Order(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Order) KeyGroupMemberColumn(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList.KeyGroupMemberColumn) KeyGroupPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupPropsList) LinkedList(java.util.LinkedList) RelationshipSequence(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipSequence) KeyGroupMemberGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroup.KeyGroupMemberGroups) RelationshipParentUpdateRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentUpdateRule) FileOutputStream(java.io.FileOutputStream) RelationshipChildDeleteRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildDeleteRule) DrawingObjectRelationshipGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.StoredDisplay.DrawingObjectRelationshipGroups) RelationshipGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Model.RelationshipGroups) Map(java.util.Map) HashMap(java.util.HashMap) ParentAttribute(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentAttribute) File(java.io.File) RelationshipNoNulls(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipNoNulls) AttributePropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList) PhysicalName(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.PhysicalName) KeyGroupGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity.KeyGroupGroups) Attribute(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Attribute) DBAttribute(com.cubrid.common.core.common.model.DBAttribute) ParentAttribute(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentAttribute) RelationshipChildUpdateRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipChildUpdateRule) DrawingObjectEntityGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.StoredDisplay.DrawingObjectEntityGroups) EntityGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Model.EntityGroups) KeyGroupMemberPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList) KeyGroupType(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupPropsList.KeyGroupType) DefaultValueGroups(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Model.DefaultValueGroups) DBAttribute(com.cubrid.common.core.common.model.DBAttribute) DefaultPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList) KeyGroupSortOrder(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList.KeyGroupSortOrder) RelationshipParentInsertRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentInsertRule) KeyGroupPosition(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupMemberPropsList.KeyGroupPosition) ServerValue(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList.ServerValue) KeyGroup(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroup) DBMSVersion(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DBMSVersion) TargetServer(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.TargetServer) RelationshipParentDeleteRule(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentDeleteRule) IOException(java.io.IOException) Default(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Default) Constraint(com.cubrid.common.core.common.model.Constraint) JAXBException(javax.xml.bind.JAXBException) IOException(java.io.IOException) KeyGroupRelationPointer(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupPropsList.KeyGroupRelationPointer) RelationshipPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList) ClassType(com.cubrid.cubridmanager.core.utils.ModelUtil.ClassType) ConstraintType(com.cubrid.common.core.common.model.Constraint.ConstraintType) LogicalDataType(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.LogicalDataType) KeyGroupType(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.KeyGroupPropsList.KeyGroupType) Type(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.EntityPropsList.Type) RelationshipParentEntity(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.RelationshipPropsList.RelationshipParentEntity) ParentRelationship(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentRelationship) ParentRelationship(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentRelationship) Relationship(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Relationship) Model(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Model) ERwin4(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.ERwin4) EntityPropsList(com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.EntityPropsList)

Aggregations

Constraint (com.cubrid.common.core.common.model.Constraint)2 ParentRelationship (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentRelationship)2 DrawingObjectEntity (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DrawingObjectEntity)2 Entity (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Entity)2 ConstraintType (com.cubrid.common.core.common.model.Constraint.ConstraintType)1 DBAttribute (com.cubrid.common.core.common.model.DBAttribute)1 SchemaInfo (com.cubrid.common.core.common.model.SchemaInfo)1 Attribute (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Attribute)1 AttributePropsList (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList)1 Datatype (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Datatype)1 LogicalDataType (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.LogicalDataType)1 NullOption (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.NullOption)1 Order (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.Order)1 ParentAttribute (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.ParentAttribute)1 PhysicalName (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.AttributePropsList.PhysicalName)1 DBMSVersion (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DBMSVersion)1 DOReferenceObject (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DOReferenceObject)1 Default (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.Default)1 DefaultPropsList (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList)1 LogicalDefaultValue (com.cubrid.common.ui.cubrid.database.erwin.xmlmodel.DefaultPropsList.LogicalDefaultValue)1