public static List<ImageAttribute> attributesForImageAndMode( Project project, DatabaseImage image, Boolean dataMode) { if (dataMode == null) { List<ImageAttribute> attributes = ImageAttribute.find("byProjectAndImage", project, image).fetch(); return attributes; } else { List<ImageAttribute> attributes = ImageAttribute.find("byProjectAndImageAndData", project, image, dataMode).fetch(); return attributes; } }
public static List<ImageAttribute> compileAttributesForImage( Project project, DatabaseImage image, Template template, boolean dataMode, boolean includeEmptyTemplateAttributes) { List<TemplateAttribute> templateAttributes = template == null ? null : template.attributes; List<ImageAttribute> attributes = image.attributes; // Add attributes from the template List<ImageAttribute> returnAttributes = new LinkedList<ImageAttribute>(); if (templateAttributes != null) { for (TemplateAttribute templateAttribute : templateAttributes) { boolean found = false; for (ImageAttribute attribute : attributes) { if ((attribute.data || !dataMode) && attribute.attribute.equals(templateAttribute.name)) { found = true; attribute.templated = true; attribute.hidden = templateAttribute.hidden; returnAttributes.add(attribute); } } if (!found && includeEmptyTemplateAttributes) { returnAttributes.add( new ImageAttribute( project, image, templateAttribute.name, null, dataMode, 0, true, templateAttribute.hidden)); } } } for (ImageAttribute attribute : attributes) { if (!attribute.templated) returnAttributes.add(attribute); } Iterator<ImageAttribute> it = returnAttributes.iterator(); while (it.hasNext()) { ImageAttribute attr = it.next(); // only show data mode attributes in datamode if (dataMode && !attr.data) it.remove(); } return returnAttributes; }