r150 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence magalie-services/src/main/java/com/franciaflex/magalie/services/service
Author: bleny Date: 2013-05-13 18:55:20 +0200 (Mon, 13 May 2013) New Revision: 150 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: refactor using Iterables to prevent multiples copies Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-05-13 16:54:10 UTC (rev 149) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-05-13 16:55:20 UTC (rev 150) @@ -115,7 +115,6 @@ return Ordering.from(locationWithHighestQuantityFirst()).reverse(); } - public static Comparator<StoredArticle> accessibleLocationFirstComparator(MagalieUser magalieUser) { return new AccessibleLocationFirst(magalieUser); } @@ -128,6 +127,14 @@ return new GetLocationFunction(); } + protected static class NotEmptyPredicate implements Predicate<StoredArticle> { + + @Override + public boolean apply(StoredArticle input) { + return input.getQuantity() > 0.; + } + } + public static Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate(MagalieUser magalieUser) { Predicate<StoredArticle> predicate = Predicates.compose( Locations.accessibleLocationPredicate(magalieUser), @@ -142,4 +149,8 @@ public static Predicate<StoredArticle> articleNotStoredInLocationReportedInError(Collection<Location> allLocationsInError) { return Predicates.compose(Locations.locationIsNotReportedInError(allLocationsInError), getLocationFunction()); } + + public static Predicate<StoredArticle> notEmpty() { + return new NotEmptyPredicate(); + } } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-05-13 16:54:10 UTC (rev 149) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-05-13 16:55:20 UTC (rev 150) @@ -54,7 +54,6 @@ import org.apache.commons.logging.LogFactory; import java.util.Date; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -87,7 +86,7 @@ log.info("will process article request" + bookArticleRequest); } - List<StoredArticle> storedArticles = getStoredArticles(bookArticleRequest.getBuilding(), article); + Iterable<StoredArticle> storedArticles = getStoredArticles(bookArticleRequest.getBuilding(), article); Set<StoredArticle> sortedStoredArticles = sortStoredArticlesByPriority(storedArticles); @@ -255,7 +254,7 @@ } - protected Set<StoredArticle> sortStoredArticlesByPriority(List<StoredArticle> storedArticles) { + protected Set<StoredArticle> sortStoredArticlesByPriority(Iterable<StoredArticle> storedArticles) { Ordering<StoredArticle> orderingByPriority = Ordering.compound( @@ -269,7 +268,7 @@ Set<StoredArticle> storedArticlesByPriority = Sets.newTreeSet(orderingByPriority); - storedArticlesByPriority.addAll(storedArticles); + Iterables.addAll(storedArticlesByPriority, storedArticles); return storedArticlesByPriority; @@ -294,7 +293,7 @@ // we suppose the order concerns movement in the same building Building building = Iterables.get(locationsInOrder, 0).getWarehouse().getBuilding(); - List<StoredArticle> storedArticles = getStoredArticles(building, article); + Iterable<StoredArticle> storedArticles = getStoredArticles(building, article); for (StoredArticle storedArticle : storedArticles) { @@ -319,13 +318,13 @@ } - protected List<StoredArticle> getStoredArticles(Building building, Article article) { + protected Iterable<StoredArticle> getStoredArticles(Building building, Article article) { MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); StoredArticleDao storedArticleDao = persistenceContext.getStoredArticleDao(); - List<StoredArticle> storedArticles = storedArticleDao.findAllForArticleInBuilding(article, building); + Iterable<StoredArticle> storedArticles = storedArticleDao.findAllForArticleInBuilding(article, building); ImmutableMap<Location, StoredArticle> storedArticlesByLocation = Maps.uniqueIndex( @@ -366,36 +365,17 @@ } - LinkedList<StoredArticle> toRemove = Lists.newLinkedList(); + // don't mention location if stored quantity is 0. - for (StoredArticle storedArticle : storedArticles) { + storedArticles = Iterables.filter(storedArticles, StoredArticles.notEmpty()); - double actualQuantity = storedArticle.getQuantity(); + // exclude storageMovements on a location reported in error - if ( ! (actualQuantity > 0.)) { - - // location is empty, do not include it as a location where you can take an article - toRemove.add(storedArticle); - - } - - } - - storedArticles.removeAll(toRemove); - - // exclude storageMovements reported in error - LocationErrorsService locationErrorsService = serviceContext.newService(LocationErrorsService.class); List<Location> allLocationsInError = locationErrorsService.getAllLocationsInError(article); - storedArticles = - Lists.newArrayList( - Iterables.filter( - storedArticles, - StoredArticles.articleNotStoredInLocationReportedInError(allLocationsInError) - ) - ); + storedArticles = Iterables.filter(storedArticles, StoredArticles.articleNotStoredInLocationReportedInError(allLocationsInError)); return storedArticles; Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-05-13 16:54:10 UTC (rev 149) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-05-13 16:55:20 UTC (rev 150) @@ -122,7 +122,7 @@ ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class); - List<StoredArticle> storedArticles = + Iterable<StoredArticle> storedArticles = articleStorageService.getStoredArticles(building, article); Ordering<StoredArticle> comparator = Ordering.compound( @@ -133,7 +133,7 @@ Set<StoredArticle> sortedStoredArticles = Sets.newTreeSet(comparator); - sortedStoredArticles.addAll(storedArticles); + Iterables.addAll(sortedStoredArticles, storedArticles); Set<Location> result = Sets.newLinkedHashSet();
participants (1)
-
bleny@users.forge.codelutin.com