private String generateIndexAnnotation(IndexInspector index) { AnnotationBuilder ap = new AnnotationBuilder(); ap.append('@').append(IQIndex.class.getSimpleName()); ap.append('('); ap.resetCount(); if (!StringUtils.isNullOrEmpty(index.name)) { ap.addParameter("name", index.name); } if (!index.type.equals(IndexType.STANDARD)) { ap.addEnum("type", index.type); } if (ap.getCount() > 0) { // multiple fields specified ap.addParameter("value", index.columns); } else { // default value ap.addParameter(null, index.columns); } ap.append(')'); return ap.toString(); }
/** * Generates the specified index annotation. * * @param ap */ String generateIndexAnnotations() { if (indexes == null || indexes.size() == 0) { // no matching indexes return null; } AnnotationBuilder ap = new AnnotationBuilder(); if (indexes.size() == 1) { // single index IndexInspector index = indexes.values().toArray(new IndexInspector[1])[0]; ap.append(generateIndexAnnotation(index)); ap.append(eol); } else { // multiple indexes ap.append('@').append(IQIndexes.class.getSimpleName()); ap.append("({"); ap.resetCount(); for (IndexInspector index : indexes.values()) { ap.appendExceptFirst(", "); ap.append(generateIndexAnnotation(index)); } ap.append("})").append(eol); } return ap.toString(); }