* @param version
* @return
* @throws Exception
*/
private Element buildInfoElem(ServiceContext context, String id, String version) throws Exception {
Metadata metadata = _metadataRepository.findOne(id);
final MetadataDataInfo dataInfo = metadata.getDataInfo();
String schema = dataInfo.getSchemaId();
String createDate = dataInfo.getCreateDate().getDateAndTime();
String changeDate = dataInfo.getChangeDate().getDateAndTime();
String source = metadata.getSourceInfo().getSourceId();
String isTemplate = dataInfo.getType().codeString;
String title = dataInfo.getTitle();
String uuid = metadata.getUuid();
String isHarvested = "" + Constants.toYN_EnabledChar(metadata.getHarvestInfo().isHarvested());
String harvestUuid = metadata.getHarvestInfo().getUuid();
String popularity = "" + dataInfo.getPopularity();
String rating = "" + dataInfo.getRating();
String owner = "" + metadata.getSourceInfo().getOwner();
String displayOrder = "" + dataInfo.getDisplayOrder();
Element info = new Element(Edit.RootChild.INFO, Edit.NAMESPACE);
addElement(info, Edit.Info.Elem.ID, id);
addElement(info, Edit.Info.Elem.SCHEMA, schema);
addElement(info, Edit.Info.Elem.CREATE_DATE, createDate);
addElement(info, Edit.Info.Elem.CHANGE_DATE, changeDate);
addElement(info, Edit.Info.Elem.IS_TEMPLATE, isTemplate);
addElement(info, Edit.Info.Elem.TITLE, title);
addElement(info, Edit.Info.Elem.SOURCE, source);
addElement(info, Edit.Info.Elem.UUID, uuid);
addElement(info, Edit.Info.Elem.IS_HARVESTED, isHarvested);
addElement(info, Edit.Info.Elem.POPULARITY, popularity);
addElement(info, Edit.Info.Elem.RATING, rating);
addElement(info, Edit.Info.Elem.DISPLAY_ORDER, displayOrder);
if (metadata.getHarvestInfo().isHarvested()) {
HarvestInfoProvider infoProvider = _applicationContext.getBean(HarvestInfoProvider.class);
if (infoProvider != null) {
info.addContent(infoProvider.getHarvestInfo(harvestUuid, id, uuid));
}
}
if (version != null) {
addElement(info, Edit.Info.Elem.VERSION, version);
}
Map<String, Element> map = Maps.newHashMap();
map.put(id, info);
buildPrivilegesMetadataInfo(context, map);
// add owner name
User user = _applicationContext.getBean(UserRepository.class).findOne(owner);
if (user != null) {
String ownerName = user.getName();
addElement(info, Edit.Info.Elem.OWNERNAME, ownerName);
}
for (MetadataCategory category : metadata.getCategories()) {
addElement(info, Edit.Info.Elem.CATEGORY, category.getName());
}
// add subtemplates
/* -- don't add as we need to investigate indexing for the fields