List of usage examples for com.liferay.portal.kernel.bean BeanPropertiesUtil copyProperties
public static void copyProperties(Object source, Object target)
From source file:com.rcs.liferay.service.hook.CustomAssetEntryServiceImpl.java
License:Open Source License
@Override public List<AssetEntry> getEntries(AssetEntryQuery entryQuery) throws PortalException, SystemException { List<AssetEntry> entriesList = new ArrayList<AssetEntry>(); CustomAssetEntryQuery caeq = new CustomAssetEntryQuery(entryQuery); BeanPropertiesUtil.copyProperties(entryQuery, caeq); int end = entryQuery.getEnd(); int start = entryQuery.getStart(); if (caeq.isCustomQuery()) { entryQuery.setStart(0);//from w w w .j a v a 2 s . co m entryQuery.setEnd(QueryUtil.ALL_POS); } List<AssetEntry> entries = super.getEntries(entryQuery); if (caeq.isCustomQuery()) { log.info("It is a custom query.."); for (AssetEntry ae : entries) { entriesList.add(ae); } /////////// // Start filtering /////////// List<AssetEntry> toRemove = new ArrayList<AssetEntry>(); for (AssetEntry assetEntry : entriesList) { if (caeq.getCustomFilterFieldName1() != null && !caeq.getCustomFilterFieldName1().trim().isEmpty()) { CustomAssetEntryFilter assetFilter = new CustomAssetEntryFilter(); assetFilter.setField(caeq.getCustomFilterFieldName1()); assetFilter .setFormat(CustomAssetEntryFilter.getFieldTypeByName(caeq.getCustomFilterFieldType1())); assetFilter.setOperator(caeq.getCustomFilterComparator1()); assetFilter.setValue(caeq.getCustomFilterValue1()); assetFilter.setAssetEntry(assetEntry); if (!assetFilter.validate()) { toRemove.add(assetEntry); continue; } } if (caeq.getCustomFilterFieldName2() != null && !caeq.getCustomFilterFieldName2().trim().isEmpty()) { CustomAssetEntryFilter assetFilter = new CustomAssetEntryFilter(); assetFilter.setField(caeq.getCustomFilterFieldName2()); assetFilter .setFormat(CustomAssetEntryFilter.getFieldTypeByName(caeq.getCustomFilterFieldType2())); assetFilter.setOperator(caeq.getCustomFilterComparator2()); assetFilter.setValue(caeq.getCustomFilterValue2()); assetFilter.setAssetEntry(assetEntry); if (!assetFilter.validate()) { toRemove.add(assetEntry); } } } entriesList.removeAll(toRemove); // Will check the first element to know if we need to sort by custom field or by structure value if (entriesList != null && entriesList.size() > 0) { /////////// // Start sorting /////////// AssetEntry assetEntry = entriesList.get(0); long classPK = assetEntry.getClassPK(); // get the JournalArticle ja = JournalArticleLocalServiceUtil.getLatestArticle(classPK); // check for custom field ExpandoBridge eb = ja.getExpandoBridge(); if (eb.hasAttribute(caeq.getCustomFieldOrder())) { // Sort by custom field CustomFieldAssetEntryComparator comparator = new CustomFieldAssetEntryComparator( caeq.getCustomFieldOrder(), CustomAssetEntryFilter.getFieldTypeByName(caeq.getCustomFieldType())); // sorting asc Collections.sort(entriesList, comparator); } else { // Sort by structure StructureFieldAssetEntryComparator comparator = new StructureFieldAssetEntryComparator( caeq.getCustomFieldOrder(), CustomAssetEntryFilter.getFieldTypeByName(caeq.getCustomFieldType())); //sorting asc Collections.sort(entriesList, comparator); } if ("DESC".equalsIgnoreCase(caeq.getCustomFieldOrderType())) { Collections.reverse(entriesList); } return entriesList.subList(start, (entriesList.size() < end) ? entriesList.size() : end); } } else { log.info("It isn't a custom query.."); return entries; } return entriesList; }