List of usage examples for org.apache.commons.collections CollectionUtils filter
public static void filter(Collection collection, Predicate predicate)
From source file:controllers.admin.UserManager.java
/** * Find a user using either a UID or a mail address.<br/> * The option is provided as a parameter of the form. *///from w w w. j a v a 2s .c o m public Result findUser() { Form<UserSeachFormData> boundForm = userSearchForm.bindFromRequest(); if (boundForm.hasErrors()) { return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } UserSeachFormData searchFormData = boundForm.get(); // Reject if search by UID but no uid if (searchFormData.searchType.equals(UID_SEARCH_OPTION) && (searchFormData.uid == null || searchFormData.uid.trim().equals("") || searchFormData.uid.indexOf('*') != -1)) { boundForm.reject("uid", Msg.get("error.required")); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } // Reject if search by UID but no uid if (searchFormData.searchType.equals(MAIL_SEARCH_OPTION) && (searchFormData.mail == null || searchFormData.mail.trim().equals("") || searchFormData.mail.indexOf('*') != -1)) { boundForm.reject("mail", Msg.get("error.required")); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } // Reject if search by full name but no full name if (searchFormData.searchType.equals(FULLNAME_SEARCH_OPTION) && (searchFormData.fullName == null || searchFormData.fullName.trim().equals(""))) { boundForm.reject("fullName", Msg.get("error.required")); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } IUserAccount foundUser = null; if (searchFormData.searchType.equals(UID_SEARCH_OPTION)) { // Search by uid try { if (log.isDebugEnabled()) { log.debug("Search user by uid with " + searchFormData.uid); } IUserAccount userAccount = getAccountManagerPlugin().getUserAccountFromUid(searchFormData.uid); if (userAccount == null || userAccount.isMarkedForDeletion() || !userAccount.isDisplayed()) { boundForm.reject("uid", Msg.get("admin.user_manager.search.not_found", searchFormData.uid)); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } foundUser = userAccount; } catch (AccountManagementException e) { return ControllersUtils.logAndReturnUnexpectedError(e, log, getConfiguration(), getI18nMessagesPlugin()); } } if (searchFormData.searchType.equals(MAIL_SEARCH_OPTION)) { // Search by e-mail try { if (log.isDebugEnabled()) { log.debug("Search user by mail with " + searchFormData.mail); } IUserAccount userAccount = getAccountManagerPlugin().getUserAccountFromEmail(searchFormData.mail); if (userAccount == null || userAccount.isMarkedForDeletion() || !userAccount.isDisplayed()) { boundForm.reject("mail", Msg.get("admin.user_manager.search.not_found", searchFormData.mail)); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } foundUser = userAccount; } catch (AccountManagementException e) { return ControllersUtils.logAndReturnUnexpectedError(e, log, getConfiguration(), getI18nMessagesPlugin()); } } if (searchFormData.searchType.equals(FULLNAME_SEARCH_OPTION)) { // Search by last name try { if (log.isDebugEnabled()) { log.debug("Search user by name with " + searchFormData.fullName); } List<IUserAccount> userAccounts = getAccountManagerPlugin() .getUserAccountsFromName(searchFormData.fullName); if (userAccounts == null || userAccounts.size() == 0) { boundForm.reject("fullName", Msg.get("admin.user_manager.search.not_found", searchFormData.fullName)); return badRequest(views.html.admin.usermanager.usermanager_search.render(boundForm)); } if (userAccounts.size() > 1) { // Filter the accounts marked for deletion CollectionUtils.filter(userAccounts, new Predicate() { @Override public boolean evaluate(Object userAccountAsObject) { IUserAccount userAccount = (IUserAccount) userAccountAsObject; try { return !userAccount.isMarkedForDeletion() && userAccount.isDisplayed(); } catch (AccountManagementException e) { return false; } } }); Table<IUserAccount> foundUserAccountsTable = tableTemplate.fill(userAccounts); // Multiple user found, display the selection list return ok( views.html.admin.usermanager.usermanager_search_results.render(foundUserAccountsTable)); } foundUser = userAccounts.get(0); // Only one user } catch (AccountManagementException e) { return ControllersUtils.logAndReturnUnexpectedError(e, log, getConfiguration(), getI18nMessagesPlugin()); } } return ok(views.html.admin.usermanager.usermanager_display .render(getAccountManagerPlugin().isAuthenticationRepositoryMasterMode(), foundUser)); }
From source file:com.ebay.cloud.cms.entmgr.entity.impl.EntityMergeTest.java
@SuppressWarnings("unchecked") @Test/*from www .ja v a 2s . co m*/ public void testTargetPullMergeEntityOnField() { EntityContext context = newEntityContext(); MetaClass metaClass = raptorMetaService.getMetaClass(APPLICATION_SERVICE); IEntity qEntity = new JsonEntity(metaClass); qEntity.setBranchId(MAIN_BRANCH); final String applicationId = "4fbb314fc681caf13e283a76"; final String services = "services"; qEntity.setId(applicationId); IEntity foundEntity = entityService.get(qEntity, context); IEntity givenEntity = new JsonEntity(metaClass); givenEntity.setId(applicationId); givenEntity.setBranchId(MAIN_BRANCH); final String name = "name"; // an confusion for other givenEntity.setFieldValues(name, foundEntity.getFieldValues(name)); // case 1 empty given { assertFalse(targetFieldPullMerger.mergeEntityOnField(givenEntity, services, foundEntity)); } // case 2 all to be removed { givenEntity.setFieldValues(services, foundEntity.getFieldValues(services)); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, services, foundEntity)); assertTrue(givenEntity.hasField(services)); assertEquals(0, givenEntity.getFieldValues(services).size()); } // case 3 something unkown MetaClass serviceMeta = raptorMetaService.getMetaClass(SERVICE_INSTANCE); IEntity unknown = new JsonEntity(serviceMeta); unknown.setId("random-id"); givenEntity.setFieldValues(services, Arrays.asList(unknown)); assertFalse(targetFieldPullMerger.mergeEntityOnField(givenEntity, services, foundEntity)); // case 4 some yes some thing not final List<IEntity> subList = (List<IEntity>) foundEntity.getFieldValues(services).subList(0, 3); givenEntity.setFieldValues(services, subList); givenEntity.addFieldValue(services, unknown); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, services, foundEntity)); assertEquals(foundEntity.getFieldValues(services).size() - subList.size(), givenEntity.getFieldValues(services).size()); // should assert the ids List<?> mergedValues = givenEntity.getFieldValues(services); CollectionUtils.filter(mergedValues, new Predicate() { @Override public boolean evaluate(Object object) { IEntity entity = (IEntity) object; for (IEntity e : subList) { if (e.getId().equals(entity.getId())) { return false; } } return true; } }); assertEquals(mergedValues.size(), givenEntity.getFieldValues(services).size()); // case 5 : normal non-many field { givenEntity.removeField(name); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, name, foundEntity)); givenEntity.setFieldValues(name, foundEntity.getFieldValues(name)); // it works as just pull assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, name, foundEntity)); givenEntity.addFieldValue(name, "new-name"); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, name, foundEntity)); } // case 6 : normal array field { final String manifest = "activeManifestRef"; givenEntity.removeField(manifest); assertFalse(targetFieldPullMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); givenEntity.setFieldValues(manifest, foundEntity.getFieldValues(manifest)); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); givenEntity.addFieldValue(manifest, "new-name"); assertFalse(targetFieldPullMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); givenEntity.setFieldValues(manifest, Arrays.asList("new-name")); assertFalse(targetFieldPullMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); } // case 7 : cardinality = one reference { qEntity = new JsonEntity(serviceMeta); qEntity.setBranchId(MAIN_BRANCH); final String serviceId = "4fbb314fc681caf13e283a7c"; final String compute = "runsOn"; qEntity.setId(serviceId); foundEntity = entityService.get(qEntity, context); givenEntity = new JsonEntity(serviceMeta); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); givenEntity.setFieldValues(compute, foundEntity.getFieldValues(compute)); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); assertFalse(givenEntity.hasField(compute)); MetaClass computeMeta = raptorMetaService.getMetaClass(COMPUTE); JsonEntity computeEntity = new JsonEntity(computeMeta); computeEntity.setId("unknown-id"); givenEntity.setFieldValues(compute, Arrays.asList(computeEntity)); assertTrue(targetFieldPullMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); } }
From source file:hr.fer.zemris.vhdllab.platform.manager.workspace.DefaultWorkspaceManager.java
@Override public Set<File> getFilesForProject(Project project, Predicate filter, Transformer transformer) { Set<File> files = new HashSet<File>(getFilesForProject(project)); CollectionUtils.filter(files, filter); CollectionUtils.transform(files, transformer); return files; }
From source file:com.projity.pm.graphic.spreadsheet.common.CommonSpreadSheet.java
public List getSelectedDeletableRows() { ArrayList list = getSelectedNodes(); CollectionUtils.filter(list, new Predicate() { public boolean evaluate(Object arg0) { return isNodeDeletable((Node) arg0); }// w ww .ja va 2 s . c om }); return list; }
From source file:com.projity.pm.graphic.spreadsheet.common.CommonSpreadSheet.java
public List getSelectedCuttableRows(List nodes) { CollectionUtils.filter(nodes, new Predicate() { public boolean evaluate(Object arg0) { return isNodeCuttable((Node) arg0); }//from w w w.j a v a 2s .co m }); return nodes; }
From source file:com.perceptive.epm.perkolcentral.bl.ExcelReportBL.java
public FileInputStream generateLicenseReport(File file) throws ExceptionWrapper { try {//www .j av a 2 s. c o m FileInputStream inp = new FileInputStream(file); //InputStream inp = new FileInputStream("workbook.xlsx"); Workbook wb = WorkbookFactory.create(inp); HashMap<String, ArrayList<String>> licenseInfoKeyedByLicenseName = licensesBL.getLicenseRelatedInfo(); //Create The Summary Sheet Sheet sheetSummary = wb.getSheetAt(1); int iSummaryRowCounter = 1; for (String licenseType : licenseInfoKeyedByLicenseName.keySet()) { Row row = sheetSummary.getRow(iSummaryRowCounter); if (row == null) row = sheetSummary.createRow(iSummaryRowCounter); Cell cell = row.getCell(0); if (cell == null) cell = row.createCell(0); setCellBorder(wb, cell); cell.setCellValue(licenseType); row = sheetSummary.getRow(iSummaryRowCounter); if (row == null) row = sheetSummary.createRow(iSummaryRowCounter); cell = row.getCell(1); if (cell == null) cell = row.createCell(1); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(0))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); row = sheetSummary.getRow(iSummaryRowCounter); if (row == null) row = sheetSummary.createRow(iSummaryRowCounter); cell = row.getCell(2); if (cell == null) cell = row.createCell(2); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(1))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); row = sheetSummary.getRow(iSummaryRowCounter); if (row == null) row = sheetSummary.createRow(iSummaryRowCounter); cell = row.getCell(3); if (cell == null) cell = row.createCell(3); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(0)) - Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(1))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); iSummaryRowCounter = iSummaryRowCounter + 1; } int iSheetCounter = 1; for (String licenseType : licenseInfoKeyedByLicenseName.keySet()) { Sheet sheet = wb.cloneSheet(0); wb.setSheetName(wb.getSheetIndex(sheet), licenseType); CellReference cellReference = new CellReference("B1"); Row row = sheet.getRow(cellReference.getRow()); Cell cell = row.getCell(cellReference.getCol()); if (cell == null) cell = row.createCell(cellReference.getCol()); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(0))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); cellReference = new CellReference("B2"); row = sheet.getRow(cellReference.getRow()); cell = row.getCell(cellReference.getCol()); if (cell == null) cell = row.createCell(cellReference.getCol()); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(1))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); cellReference = new CellReference("B3"); row = sheet.getRow(cellReference.getRow()); cell = row.getCell(cellReference.getCol()); if (cell == null) cell = row.createCell(cellReference.getCol()); setCellBorder(wb, cell); cell.setCellValue(Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(0)) - Double.parseDouble(licenseInfoKeyedByLicenseName.get(licenseType).get(1))); cell.setCellType(Cell.CELL_TYPE_NUMERIC); ArrayList<EmployeeBO> allEmployees = new ArrayList<EmployeeBO>( employeeBL.getAllEmployees().values()); final String selectedLicenseTypeName = licenseType; CollectionUtils.filter(allEmployees, new Predicate() { @Override public boolean evaluate(Object o) { EmployeeBO emp = (EmployeeBO) o; if (CollectionUtils.exists(emp.getLicenses(), new Predicate() { @Override public boolean evaluate(Object o) { return ((LicenseBO) o).getLicenseTypeName() .equalsIgnoreCase(selectedLicenseTypeName); //To change body of implemented methods use File | Settings | File Templates. } })) return true; else return false; } }); int iRowCounter = 5; for (EmployeeBO employeeBO : allEmployees) { row = sheet.getRow(iRowCounter); if (row == null) row = sheet.createRow(iRowCounter); cell = row.getCell(0); if (cell == null) cell = row.createCell(0); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getEmployeeId()); cell = row.getCell(1); if (cell == null) cell = row.createCell(1); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getEmployeeUid()); cell = row.getCell(2); if (cell == null) cell = row.createCell(2); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getEmployeeName()); cell = row.getCell(3); if (cell == null) cell = row.createCell(3); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getEmail()); cell = row.getCell(4); if (cell == null) cell = row.createCell(4); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getManager()); cell = row.getCell(5); if (cell == null) cell = row.createCell(5); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getMobileNumber()); cell = row.getCell(6); if (cell == null) cell = row.createCell(6); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getExtensionNum()); cell = row.getCell(7); if (cell == null) cell = row.createCell(7); setCellBorder(wb, cell); cell.setCellValue(employeeBO.getWorkspace()); iRowCounter = iRowCounter + 1; } } iSheetCounter = iSheetCounter + 1; wb.removeSheetAt(0); FileOutputStream fileOut = new FileOutputStream(file); wb.write(fileOut); fileOut.close(); return new FileInputStream(file); } catch (Exception ex) { throw new ExceptionWrapper(ex); } }
From source file:com.perceptive.epm.perkolcentral.action.ajax.EmployeeDetailsAction.java
public String executeEmployeesByTeamAjax() throws ExceptionWrapper { try {/*from w ww . j a va 2s . com*/ LoggingHelpUtil.printDebug("Page " + getPage() + " Rows " + getRows() + " Sorting Order " + getSord() + " Index Row :" + getSidx()); LoggingHelpUtil.printDebug("Search :" + searchField + " " + searchOper + " " + searchString); // Calcalate until rows ware selected int to = (rows * page); // Calculate the first row to read int from = to - rows; LinkedHashMap<Long, EmployeeBO> employeeLinkedHashMap = new LinkedHashMap<Long, EmployeeBO>(); employeeLinkedHashMap = employeeBL.getAllEmployees(); ArrayList<EmployeeBO> allEmployees = new ArrayList<EmployeeBO>(employeeLinkedHashMap.values()); CollectionUtils.filter(allEmployees, new Predicate() { @Override public boolean evaluate(Object o) { EmployeeBO emp = (EmployeeBO) o; if (CollectionUtils.exists(emp.getGroups(), new Predicate() { @Override public boolean evaluate(Object o) { return ((GroupBO) o).getGroupId().equalsIgnoreCase(selectedGroupId); //To change body of implemented methods use File | Settings | File Templates. } })) return true; else return false; } }); //// Handle Order By if (sidx != null && !sidx.equals("")) { Collections.sort(allEmployees, new Comparator<EmployeeBO>() { public int compare(EmployeeBO e1, EmployeeBO e2) { if (sidx.equalsIgnoreCase("employeeName")) return sord.equalsIgnoreCase("asc") ? e1.getEmployeeName().compareTo(e2.getEmployeeName()) : e2.getEmployeeName().compareTo(e1.getEmployeeName()); else if (sidx.equalsIgnoreCase("jobTitle")) return sord.equalsIgnoreCase("asc") ? e1.getJobTitle().compareTo(e2.getJobTitle()) : e2.getJobTitle().compareTo(e1.getJobTitle()); else if (sidx.equalsIgnoreCase("manager")) return sord.equalsIgnoreCase("asc") ? e1.getManager().compareTo(e2.getManager()) : e2.getManager().compareTo(e1.getManager()); else return sord.equalsIgnoreCase("asc") ? e1.getEmployeeName().compareTo(e2.getEmployeeName()) : e2.getEmployeeName().compareTo(e1.getEmployeeName()); } }); } // records = allEmployees.size(); total = (int) Math.ceil((double) records / (double) rows); gridModel = new ArrayList<EmployeeBO>(); to = to > records ? records : to; for (int iCounter = from; iCounter < to; iCounter++) { EmployeeBO employeeBO = allEmployees.get(iCounter); //new EmployeeBO((Employee) employeeLinkedHashMap.values().toArray()[iCounter]); gridModel.add(employeeBO); } } catch (Exception ex) { throw new ExceptionWrapper(ex); } return SUCCESS; }
From source file:com.perceptive.epm.perkolcentral.action.ajax.EmployeeDetailsAction.java
public String executeEmployeesByLicenseAjax() throws ExceptionWrapper { try {//w w w . j a v a 2 s . c o m LoggingHelpUtil.printDebug("Page " + getPage() + " Rows " + getRows() + " Sorting Order " + getSord() + " Index Row :" + getSidx()); LoggingHelpUtil.printDebug("Search :" + searchField + " " + searchOper + " " + searchString); // Calcalate until rows ware selected int to = (rows * page); // Calculate the first row to read int from = to - rows; LinkedHashMap<Long, EmployeeBO> employeeLinkedHashMap = new LinkedHashMap<Long, EmployeeBO>(); employeeLinkedHashMap = employeeBL.getAllEmployees(); ArrayList<EmployeeBO> allEmployees = new ArrayList<EmployeeBO>(employeeLinkedHashMap.values()); CollectionUtils.filter(allEmployees, new Predicate() { @Override public boolean evaluate(Object o) { EmployeeBO emp = (EmployeeBO) o; if (CollectionUtils.exists(emp.getLicenses(), new Predicate() { @Override public boolean evaluate(Object o) { return ((LicenseBO) o).getLicenseTypeName().equalsIgnoreCase(selectedLicenseTypeName); //To change body of implemented methods use File | Settings | File Templates. } })) return true; else return false; } }); //// Handle Order By if (sidx != null && !sidx.equals("")) { Collections.sort(allEmployees, new Comparator<EmployeeBO>() { public int compare(EmployeeBO e1, EmployeeBO e2) { if (sidx.equalsIgnoreCase("employeeName")) return sord.equalsIgnoreCase("asc") ? e1.getEmployeeName().compareTo(e2.getEmployeeName()) : e2.getEmployeeName().compareTo(e1.getEmployeeName()); else if (sidx.equalsIgnoreCase("jobTitle")) return sord.equalsIgnoreCase("asc") ? e1.getJobTitle().compareTo(e2.getJobTitle()) : e2.getJobTitle().compareTo(e1.getJobTitle()); else return sord.equalsIgnoreCase("asc") ? e1.getEmployeeName().compareTo(e2.getEmployeeName()) : e2.getEmployeeName().compareTo(e1.getEmployeeName()); } }); } // records = allEmployees.size(); total = (int) Math.ceil((double) records / (double) rows); gridModel = new ArrayList<EmployeeBO>(); to = to > records ? records : to; for (int iCounter = from; iCounter < to; iCounter++) { EmployeeBO employeeBO = allEmployees.get(iCounter); //new EmployeeBO((Employee) employeeLinkedHashMap.values().toArray()[iCounter]); gridModel.add(employeeBO); } } catch (Exception ex) { throw new ExceptionWrapper(ex); } return SUCCESS; }
From source file:com.whirlycott.cache.CacheDecorator.java
/** * Expires Items in need of expiration.//from www . ja v a 2 s . co m */ protected void expireItems() { // Sort the entries in the cache. final List entries = new LinkedList(new ConcurrentHashMap(managedCache).entrySet()); CollectionUtils.filter(entries, new ExpirationTimePredicate(currentTime)); final Object[] args = { new Integer(entries.size()) }; log.debug(Messages.getCompoundString("CacheDecorator.expiration_count", args)); //$NON-NLS-1$ for (final Iterator i = entries.iterator(); i.hasNext();) { final Map.Entry entry = (Entry) i.next(); if (entry != null) { // log.trace("Removing: " + entry.getKey()); managedCache.remove(entry.getKey()); } } }
From source file:com.ebay.cloud.cms.entmgr.entity.impl.EntityMergeTest.java
@SuppressWarnings("unchecked") @Test//from w w w. ja v a2s . c om public void testTargetPushMergeEntityOnField() { EntityContext context = newEntityContext(); MetaClass metaClass = raptorMetaService.getMetaClass(APPLICATION_SERVICE); IEntity qEntity = new JsonEntity(metaClass); qEntity.setBranchId(MAIN_BRANCH); final String applicationId = "4fbb314fc681caf13e283a76"; final String services = "services"; qEntity.setId(applicationId); IEntity foundEntity = entityService.get(qEntity, context); IEntity givenEntity = new JsonEntity(metaClass); givenEntity.setId(applicationId); givenEntity.setBranchId(MAIN_BRANCH); final String name = "name"; // an confusion for other givenEntity.setFieldValues(name, foundEntity.getFieldValues(name)); { // case 1 empty given { assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, services, foundEntity)); } // case 2 same to the existing { givenEntity.setFieldValues(services, foundEntity.getFieldValues(services)); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, services, foundEntity)); } // case 3 something unkown MetaClass serviceMeta = raptorMetaService.getMetaClass(SERVICE_INSTANCE); IEntity unknown = new JsonEntity(serviceMeta); unknown.setId("random-id"); givenEntity.setFieldValues(services, Arrays.asList(unknown)); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, services, foundEntity)); assertEquals(foundEntity.getFieldValues(services).size() + 1, givenEntity.getFieldValues(services).size()); // case 4 some yes some thing not final List<IEntity> subList = (List<IEntity>) foundEntity.getFieldValues(services).subList(0, 3); givenEntity.setFieldValues(services, subList); givenEntity.addFieldValue(services, unknown); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, services, foundEntity)); assertEquals(foundEntity.getFieldValues(services).size() + 1, givenEntity.getFieldValues(services).size()); // should assert the ids final List<IEntity> foundValues = (List<IEntity>) foundEntity.getFieldValues(services); List<?> mergedValues = givenEntity.getFieldValues(services); CollectionUtils.filter(mergedValues, new Predicate() { @Override public boolean evaluate(Object object) { IEntity entity = (IEntity) object; for (IEntity e : foundValues) { if (e.getId().equals(entity.getId())) { return true; } } return false; } }); // unkown is removed assertEquals(mergedValues.size() + 1, givenEntity.getFieldValues(services).size()); } // case 5 : normal non-many field final String expected = "new-name"; { givenEntity.removeField(name); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, name, foundEntity)); givenEntity.setFieldValues(name, foundEntity.getFieldValues(name)); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, name, foundEntity)); givenEntity.addFieldValue(name, expected); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, name, foundEntity)); assertEquals(1, givenEntity.getFieldValues(name).size()); assertEquals(expected, givenEntity.getFieldValues(name).get(0)); } // case 6 : normal array field { final String manifest = "activeManifestRef"; givenEntity.removeField(manifest); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); givenEntity.setFieldValues(manifest, foundEntity.getFieldValues(manifest)); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); givenEntity.addFieldValue(manifest, expected); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); assertEquals(foundEntity.getFieldValues(manifest).size() + 1, givenEntity.getFieldValues(manifest).size()); assertTrue(givenEntity.getFieldValues(manifest).contains(expected)); givenEntity.setFieldValues(manifest, Arrays.asList(expected)); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, manifest, foundEntity)); assertEquals(foundEntity.getFieldValues(manifest).size() + 1, givenEntity.getFieldValues(manifest).size()); assertTrue(givenEntity.getFieldValues(manifest).contains(expected)); } // case 7 : cardinality = one reference { MetaClass serviceMeta = raptorMetaService.getMetaClass(SERVICE_INSTANCE); qEntity = new JsonEntity(serviceMeta); qEntity.setBranchId(MAIN_BRANCH); final String serviceId = "4fbb314fc681caf13e283a7c"; final String compute = "runsOn"; qEntity.setId(serviceId); foundEntity = entityService.get(qEntity, context); assertEquals(1, foundEntity.getFieldValues(compute).size()); givenEntity = new JsonEntity(serviceMeta); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); // provide only the same with existing givenEntity.setFieldValues(compute, foundEntity.getFieldValues(compute)); assertFalse(targetFieldPushMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); // add another one. MetaClass computeMeta = raptorMetaService.getMetaClass(COMPUTE); JsonEntity computeEntity = new JsonEntity(computeMeta); computeEntity.setId("unknown-id"); givenEntity.setFieldValues(compute, Arrays.asList(computeEntity)); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); assertEquals(1, givenEntity.getFieldValues(compute).size()); assertEquals(computeEntity.getId(), ((IEntity) givenEntity.getFieldValues(compute).get(0)).getId()); // change found entity!! foundEntity.removeField(compute); givenEntity.setFieldValues(compute, Arrays.asList(computeEntity)); assertTrue(targetFieldPushMerger.mergeEntityOnField(givenEntity, compute, foundEntity)); assertEquals(1, givenEntity.getFieldValues(compute).size()); assertEquals(computeEntity.getId(), ((IEntity) givenEntity.getFieldValues(compute).get(0)).getId()); } }