package com.psddev.cms.tool.search; import com.psddev.cms.db.Content; import com.psddev.cms.tool.SearchResultField; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.ObjectType; import com.psddev.dari.db.Query; import com.psddev.dari.db.State; import java.io.IOException; public class ReferenceCountField implements SearchResultField { @Override public String getDisplayName() { return "# Of References"; } @Override public boolean isSupported(ObjectType type) { return Content.Static.isSearchableType(type); } @Override public String createDataCellText(Object item) { return String.valueOf(getReferencesCount(item)); } @Override public void writeTableDataCellHtml(ToolPageContext page, Object item) throws IOException { page.writeStart("td"); page.writeHtml(String.format("%,d", getReferencesCount(item))); page.writeEnd(); } private long getReferencesCount(Object item) { return Query .fromAll() .where("* matches ?", State.getInstance(item).getId()) .count(); } }