1 19 package org.netbeans.modules.javacore.parser; 20 21 import org.netbeans.modules.javacore.jmiimpl.javamodel.AnnotationTypeImpl; 22 23 27 class AnnotationTypeInfoMeasure implements Measure { 28 public static final AnnotationTypeInfoMeasure INSTANCE = new AnnotationTypeInfoMeasure(); 29 30 private static final int NAME_WEIGHT = 70; 31 private static final int MEMBERS_WEIGHT = 30; 32 33 34 private AnnotationTypeInfoMeasure() { 35 } 36 37 42 public int getDistance(Object refObject, Object ast) { 43 AnnotationTypeImpl refInfo = (AnnotationTypeImpl) refObject; 44 45 if (ast instanceof AnnotationTypeInfo) { 46 AnnotationTypeInfo astInfo = (AnnotationTypeInfo) ast; 47 int result = 0; 48 49 result += StringMeasure.INSTANCE.getDistance(refInfo.getName(), astInfo.name) * NAME_WEIGHT; 50 if (refInfo.isPersisted()) { 51 String [] refMemberNames = InfoUtil.getElementNames(refInfo.getFeatures()); 52 String [] astMemberNames = InfoUtil.getElementNames(astInfo.features); 53 result += new ArrayMeasure(StringMeasure.INSTANCE).getDistance(refMemberNames, astMemberNames) * MEMBERS_WEIGHT; 54 } 55 result = result / 100; 56 return result > INFINITE_DISTANCE ? INFINITE_DISTANCE : result; 57 } 58 return INFINITE_DISTANCE; 59 } 60 } 61 | Popular Tags |