Search in sources :

Example 1 with RefFieldInfo

use of org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo in project jbosstools-hibernate by jbosstools.

the class ResolveAmbiguous method updateEditorRel.

public void updateEditorRel(TableItem item) {
    // Clean up any previous editor control
    Control oldEditorRel = editorRel.getEditor();
    if (oldEditorRel != null) {
        oldEditorRel.dispose();
    }
    CCombo comboRel = new CCombo(table, SWT.NONE);
    comboRel.setEditable(false);
    Color bkgnd = table.getBackground();
    comboRel.setBackground(bkgnd);
    comboRel.add(JdtUiMessages.ResolveAmbiguous_empty);
    String fullyQualifiedName = item.getText(0);
    RefEntityInfo rei = (RefEntityInfo) item.getData();
    Set<RefFieldInfo> setRefEntityInfo = findRelatedRefFieldInfos(fullyQualifiedName, rei);
    Iterator<RefFieldInfo> itTmp = setRefEntityInfo.iterator();
    while (itTmp.hasNext()) {
        RefFieldInfo rfi = itTmp.next();
        comboRel.add(rfi.fieldId);
    }
    if (null != rei.mappedBy) {
        comboRel.setText(rei.mappedBy);
    } else {
        comboRel.setText(JdtUiMessages.ResolveAmbiguous_empty);
    }
    comboRel.addModifyListener(editorRelModifyListener);
    // comboRel.selectAll();
    // comboRel.setFocus();
    editorRel.setEditor(comboRel, item, COLUMN_RELATED);
}
Also used : RefEntityInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefEntityInfo) Control(org.eclipse.swt.widgets.Control) CCombo(org.eclipse.swt.custom.CCombo) Color(org.eclipse.swt.graphics.Color) RefFieldInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo)

Example 2 with RefFieldInfo

use of org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo in project jbosstools-hibernate by jbosstools.

the class ResolveAmbiguous method findRelatedRefFieldInfos.

protected Set<RefFieldInfo> findRelatedRefFieldInfos(String fullyQualifiedName, RefEntityInfo rei) {
    String fullyQualifiedName2 = rei.fullyQualifiedName;
    EntityInfo entryInfo2 = data.getEntities().get(fullyQualifiedName2);
    Set<RefFieldInfo> setRefEntityInfo = entryInfo2.getRefFieldInfoSet(fullyQualifiedName);
    return setRefEntityInfo;
}
Also used : RefEntityInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefEntityInfo) EntityInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.EntityInfo) RefFieldInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo)

Example 3 with RefFieldInfo

use of org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo in project jbosstools-hibernate by jbosstools.

the class ProcessEntityInfo method visit.

@SuppressWarnings("unchecked")
public boolean visit(MethodDeclaration node) {
    if (entityInfo == null) {
        return false;
    }
    if (annotationStyle != AnnotStyle.GETTERS) {
        return true;
    }
    if (node.getName().getFullyQualifiedName().compareTo(entityInfo.getName()) == 0 || node.isConstructor()) {
        // this is constructor declaration
        return true;
    }
    // -) is it setter?
    if (// $NON-NLS-1$
    node.getName().getIdentifier().startsWith("set") && node.parameters().size() == 1) {
        // setter - do not process it
        return true;
    }
    // +) is it getter?
    if (!(// $NON-NLS-1$
    node.getName().getIdentifier().startsWith("get") || // $NON-NLS-1$
    node.getName().getIdentifier().startsWith("is")) || node.parameters().size() > 0) {
        // not the getter - do not process it
        return true;
    }
    Type type = node.getReturnType2();
    if (type == null) {
        return true;
    }
    String returnIdentifier = CollectEntityInfo.getReturnIdentifier(node);
    if (type.isSimpleType() || type.isPrimitiveType()) {
        if (entityInfo.isAddGeneratedValueFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            boolean addGeneratedValueMarker = false;
            if (primaryIdName.equals(returnIdentifier)) {
                addGeneratedValueMarker = true;
            }
            if (addGeneratedValueMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_GENERATED_VALUE));
                ListRewrite lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (entityInfo.isAddPrimaryIdFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            boolean addIdMarker = false;
            if (primaryIdName.equals(returnIdentifier)) {
                addIdMarker = true;
            }
            if (addIdMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ID));
                ListRewrite lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) {
            boolean addVersionMarker = false;
            if ("version".equals(returnIdentifier)) {
                // $NON-NLS-1$
                addVersionMarker = true;
            }
            if (addVersionMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION));
                ListRewrite lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
    }
    if (type.isSimpleType() && (AllEntitiesProcessor.columnLength != defaultStrLength)) {
        SimpleType simpleType = (SimpleType) type;
        String typeName = simpleType.getName().getFullyQualifiedName();
        if ("java.lang.String".equals(typeName) || "String".equals(typeName)) {
            // $NON-NLS-1$ //$NON-NLS-2$
            String fieldId = returnIdentifier;
            RefColumnInfo rci = entityInfo.getRefColumnInfo(fieldId);
            if (rci == null || !rci.isExist()) {
                // if there is no @Column annotation - create new @Column annotation
                // with user defined default value length
                NormalAnnotation natd = rewriter.getAST().newNormalAnnotation();
                natd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_COLUMN));
                ListRewrite lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(natd, null);
                MemberValuePair mvp = rewriter.getAST().newMemberValuePair();
                // $NON-NLS-1$
                mvp.setName(rewriter.getAST().newSimpleName("length"));
                NumberLiteral nl = rewriter.getAST().newNumberLiteral(String.valueOf(defaultStrLength));
                mvp.setValue(nl);
                natd.values().add(mvp);
            }
        }
    }
    if (type.isSimpleType() || type.isParameterizedType() || type.isArrayType()) {
        // $NON-NLS-1$
        String fieldId = "";
        RefType refType = RefType.UNDEF;
        boolean annotated = false;
        // $NON-NLS-1$
        String fullyQualifiedName2 = "";
        fieldId = returnIdentifier;
        refType = entityInfo.getFieldIdRelValue(fieldId);
        annotated = entityInfo.getFieldIdAnnotatedValue(fieldId);
        fullyQualifiedName2 = entityInfo.getFieldIdFQNameValue(fieldId);
        Set<RefFieldInfo> setRFI = entityInfo.getRefFieldInfoSet(fullyQualifiedName2);
        if (!annotated && setRFI != null && isSimilarType(type, fullyQualifiedName2)) {
            RefEntityInfo rei = entityInfo.getFieldIdRefEntityInfo(fieldId);
            // either side may be the owning side
            if (setRFI.size() > 1 && refType != RefType.MANY2ONE) {
                if (rei.mappedBy == null || rei.mappedBy == "") {
                    // $NON-NLS-1$
                    addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
                } else {
                    // give to the user information about selected mapping
                    addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
                }
            } else if (refType == RefType.MANY2ONE || refType == RefType.ENUMERATED || rei.mappedBy == null || rei.mappedBy == "") {
                // $NON-NLS-1$
                addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
            } else {
                // in case of bidirectional OneToOne - mark both sides with mappedBy -
                // user should select the right decision
                addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
            }
        }
    }
    return true;
}
Also used : ListRewrite(org.eclipse.jdt.core.dom.rewrite.ListRewrite) RefColumnInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefColumnInfo) RefFieldInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo) RefType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefType) SimpleType(org.eclipse.jdt.core.dom.SimpleType) RefEntityInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefEntityInfo) OwnerType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.OwnerType) SimpleType(org.eclipse.jdt.core.dom.SimpleType) Type(org.eclipse.jdt.core.dom.Type) RefType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefType) FieldGetterType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.EntityInfo.FieldGetterType) ArrayType(org.eclipse.jdt.core.dom.ArrayType) MarkerAnnotation(org.eclipse.jdt.core.dom.MarkerAnnotation) MemberValuePair(org.eclipse.jdt.core.dom.MemberValuePair) NormalAnnotation(org.eclipse.jdt.core.dom.NormalAnnotation) NumberLiteral(org.eclipse.jdt.core.dom.NumberLiteral)

Example 4 with RefFieldInfo

use of org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo in project jbosstools-hibernate by jbosstools.

the class ProcessEntityInfo method visit.

@SuppressWarnings("unchecked")
public boolean visit(FieldDeclaration node) {
    if (entityInfo == null) {
        return false;
    }
    if (annotationStyle != AnnotStyle.FIELDS) {
        return true;
    }
    Type type = node.getType();
    if (type == null) {
        return true;
    }
    if (type.isSimpleType() || type.isPrimitiveType()) {
        if (entityInfo.isAddGeneratedValueFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addGeneratedValueMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if (primaryIdName.equals(name)) {
                    addGeneratedValueMarker = true;
                    break;
                }
            }
            if (addGeneratedValueMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_GENERATED_VALUE));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (entityInfo.isAddPrimaryIdFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addIdMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if (primaryIdName.equals(name)) {
                    addIdMarker = true;
                    break;
                }
            }
            if (addIdMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ID));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) {
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addVersionMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if ("version".equals(name)) {
                    // $NON-NLS-1$
                    addVersionMarker = true;
                    break;
                }
            }
            if (addVersionMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
    }
    if (type.isSimpleType() && (AllEntitiesProcessor.columnLength != defaultStrLength)) {
        SimpleType simpleType = (SimpleType) type;
        String typeName = simpleType.getName().getFullyQualifiedName();
        if ("java.lang.String".equals(typeName) || "String".equals(typeName)) {
            // $NON-NLS-1$ //$NON-NLS-2$
            String fieldId = null;
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                fieldId = var.getName().getIdentifier();
                if (fieldId != null) {
                    break;
                }
            }
            RefColumnInfo rci = entityInfo.getRefColumnInfo(fieldId);
            if (rci == null || !rci.isExist()) {
                // if there is no @Column annotation - create new @Column annotation
                // with user defined default value length
                NormalAnnotation natd = rewriter.getAST().newNormalAnnotation();
                natd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_COLUMN));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(natd, null);
                MemberValuePair mvp = rewriter.getAST().newMemberValuePair();
                // $NON-NLS-1$
                mvp.setName(rewriter.getAST().newSimpleName("length"));
                NumberLiteral nl = rewriter.getAST().newNumberLiteral(String.valueOf(defaultStrLength));
                mvp.setValue(nl);
                natd.values().add(mvp);
            }
        }
    }
    if (type.isSimpleType() || type.isParameterizedType() || type.isArrayType()) {
        Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
        // $NON-NLS-1$
        String fieldId = "";
        RefType refType = RefType.UNDEF;
        boolean annotated = false;
        // $NON-NLS-1$
        String fullyQualifiedName2 = "";
        while (itVarNames.hasNext()) {
            VariableDeclarationFragment var = itVarNames.next();
            String name = var.getName().getIdentifier();
            fieldId = name;
            refType = entityInfo.getFieldIdRelValue(fieldId);
            annotated = entityInfo.getFieldIdAnnotatedValue(fieldId);
            fullyQualifiedName2 = entityInfo.getFieldIdFQNameValue(fieldId);
            if (refType != RefType.UNDEF) {
                break;
            }
        }
        Set<RefFieldInfo> setRFI = entityInfo.getRefFieldInfoSet(fullyQualifiedName2);
        if (!annotated && setRFI != null && isSimilarType(type, fullyQualifiedName2)) {
            RefEntityInfo rei = entityInfo.getFieldIdRefEntityInfo(fieldId);
            // either side may be the owning side
            if (setRFI.size() > 1 && refType != RefType.MANY2ONE) {
                if (rei.mappedBy == null || rei.mappedBy == "") {
                    // $NON-NLS-1$
                    addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
                } else {
                    // give to the user information about selected mapping
                    addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
                }
            } else if (refType == RefType.MANY2ONE || refType == RefType.ENUMERATED || rei.mappedBy == null || rei.mappedBy == "") {
                // $NON-NLS-1$
                addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
            } else {
                // in case of bidirectional OneToOne - mark both sides with mappedBy -
                // user should select the right decision
                addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
            }
        }
    }
    return true;
}
Also used : ListRewrite(org.eclipse.jdt.core.dom.rewrite.ListRewrite) RefColumnInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefColumnInfo) RefFieldInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo) RefType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefType) SimpleType(org.eclipse.jdt.core.dom.SimpleType) RefEntityInfo(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefEntityInfo) OwnerType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.OwnerType) SimpleType(org.eclipse.jdt.core.dom.SimpleType) Type(org.eclipse.jdt.core.dom.Type) RefType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefType) FieldGetterType(org.hibernate.eclipse.jdt.ui.internal.jpa.common.EntityInfo.FieldGetterType) ArrayType(org.eclipse.jdt.core.dom.ArrayType) MarkerAnnotation(org.eclipse.jdt.core.dom.MarkerAnnotation) MemberValuePair(org.eclipse.jdt.core.dom.MemberValuePair) VariableDeclarationFragment(org.eclipse.jdt.core.dom.VariableDeclarationFragment) NormalAnnotation(org.eclipse.jdt.core.dom.NormalAnnotation) NumberLiteral(org.eclipse.jdt.core.dom.NumberLiteral)

Aggregations

RefEntityInfo (org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefEntityInfo)4 RefFieldInfo (org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefFieldInfo)4 ArrayType (org.eclipse.jdt.core.dom.ArrayType)2 MarkerAnnotation (org.eclipse.jdt.core.dom.MarkerAnnotation)2 MemberValuePair (org.eclipse.jdt.core.dom.MemberValuePair)2 NormalAnnotation (org.eclipse.jdt.core.dom.NormalAnnotation)2 NumberLiteral (org.eclipse.jdt.core.dom.NumberLiteral)2 SimpleType (org.eclipse.jdt.core.dom.SimpleType)2 Type (org.eclipse.jdt.core.dom.Type)2 ListRewrite (org.eclipse.jdt.core.dom.rewrite.ListRewrite)2 FieldGetterType (org.hibernate.eclipse.jdt.ui.internal.jpa.common.EntityInfo.FieldGetterType)2 OwnerType (org.hibernate.eclipse.jdt.ui.internal.jpa.common.OwnerType)2 RefColumnInfo (org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefColumnInfo)2 RefType (org.hibernate.eclipse.jdt.ui.internal.jpa.common.RefType)2 VariableDeclarationFragment (org.eclipse.jdt.core.dom.VariableDeclarationFragment)1 CCombo (org.eclipse.swt.custom.CCombo)1 Color (org.eclipse.swt.graphics.Color)1 Control (org.eclipse.swt.widgets.Control)1 EntityInfo (org.hibernate.eclipse.jdt.ui.internal.jpa.common.EntityInfo)1