Author: bleny Date: 2013-03-26 11:18:13 +0100 (Tue, 26 Mar 2013) New Revision: 40 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: renaming packages and some classes Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java Removed: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaStoredArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,73 +0,0 @@ -package com.franciaflex.magalie; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import org.apache.commons.lang3.SystemUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.cfg.Environment; -import org.hibernate.ejb.AvailableSettings; - -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import java.io.File; -import java.util.Collections; -import java.util.Map; - -public class JpaUtil { - - private static final Log log = LogFactory.getLog(JpaUtil.class); - - private JpaUtil() {} - - protected static final ImmutableMap<String, String> JPA_H2_CONFIG = - ImmutableMap.of( - AvailableSettings.JDBC_DRIVER, org.h2.Driver.class.getName(), - AvailableSettings.JDBC_USER, "sa", - AvailableSettings.JDBC_PASSWORD, "", - Environment.DIALECT, org.hibernate.dialect.H2Dialect.class.getName(), - Environment.HBM2DDL_AUTO, "create" - ); - - public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context) { - - EntityManagerFactory tempEntityManagerFactory = - createTempEntityManagerFactory( - persistenceUnitName, - context, Collections.<String, String>emptyMap()); - - return tempEntityManagerFactory; - - } - - public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context, Map<String, String> jpaParameters) { - - Map<String, String> allJpaParameters = Maps.newHashMap(); - - allJpaParameters.putAll(jpaParameters); - - allJpaParameters.putAll(JPA_H2_CONFIG); - - File tempDirFile = SystemUtils.getJavaIoTmpDir(); - - File databaseFile = new File(tempDirFile, context); - - String h2dataPath = databaseFile.getAbsolutePath() + File.separator + "h2data"; - - String jdbcUrl = "jdbc:h2:file:" + h2dataPath; - - allJpaParameters.put(AvailableSettings.JDBC_URL, jdbcUrl); - - if (log.isTraceEnabled()) { - log.trace("will store H2 data in " + h2dataPath); - log.trace("jdbc url is\n" + jdbcUrl); - log.trace("allJpaParameters = " + allJpaParameters); - } - - EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, allJpaParameters); - - return entityManagerFactory; - - } - -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,41 +0,0 @@ -package com.franciaflex.magalie; - -import com.google.common.collect.Maps; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.util.config.ApplicationConfig; -import org.nuiton.util.config.ArgumentsParserException; - -import java.util.Map; -import java.util.Properties; - -public class MagalieApplicationConfig { - - private static final Log log = LogFactory.getLog(MagalieApplicationConfig.class); - - protected ApplicationConfig applicationConfig; - - public MagalieApplicationConfig() { - applicationConfig = new ApplicationConfig(); - applicationConfig.loadDefaultOptions(MagalieConfigOption.values()); - applicationConfig.setConfigFileName("magalie.properties"); - try { - applicationConfig.parse(); - } catch (ArgumentsParserException e) { - throw new MagalieTechnicalException(e); - } - if (log.isDebugEnabled()) { - log.debug("parsed options in config file" + applicationConfig.getOptions()); - } - } - - public Map<String, String> getJpaParameters() { - Map<String, String> jpaParameters = Maps.newHashMap(); - Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate"); - jpaParameters.putAll((Map) hibernateProperties); - Properties jpaProperties = applicationConfig.getOptionStartsWith("javax.persistence"); - jpaParameters.putAll((Map) jpaProperties); - return jpaParameters; - } - -} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,41 @@ +package com.franciaflex.magalie; + +import com.google.common.collect.Maps; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.config.ApplicationConfig; +import org.nuiton.util.config.ArgumentsParserException; + +import java.util.Map; +import java.util.Properties; + +public class MagalieApplicationConfig { + + private static final Log log = LogFactory.getLog(MagalieApplicationConfig.class); + + protected ApplicationConfig applicationConfig; + + public MagalieApplicationConfig() { + applicationConfig = new ApplicationConfig(); + applicationConfig.loadDefaultOptions(MagalieConfigOption.values()); + applicationConfig.setConfigFileName("magalie.properties"); + try { + applicationConfig.parse(); + } catch (ArgumentsParserException e) { + throw new MagalieTechnicalException(e); + } + if (log.isDebugEnabled()) { + log.debug("parsed options in config file" + applicationConfig.getOptions()); + } + } + + public Map<String, String> getJpaParameters() { + Map<String, String> jpaParameters = Maps.newHashMap(); + Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate"); + jpaParameters.putAll((Map) hibernateProperties); + Properties jpaProperties = applicationConfig.getOptionStartsWith("javax.persistence"); + jpaParameters.putAll((Map) jpaProperties); + return jpaParameters; + } + +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,90 +0,0 @@ -package com.franciaflex.magalie; - -import org.nuiton.util.config.ConfigOptionDef; - -/** - * @author bleny - */ -public enum MagalieConfigOption implements ConfigOptionDef { - - SMTP_HOST( - "smtp.host", - "Nom d'hôte du serveur SMTP", - "", String.class), - - SMTP_PORT( - "smtp.port", - "Le port du serveur SMTP", - "25", Integer.class), - - SMTP_FROM( - "smtp.from", - "L'adresse d'expéditeur pour les mails de notifications", - "", String.class), - - DEV_MODE( - "devMode", - "Mode développement, court-circuite l'envoi de mail", - "true", Boolean.class), - - ; - - protected final String key; - protected final String description; - protected final Class<?> type; - protected String defaultValue; - - private MagalieConfigOption(String key, String description, - String defaultValue, Class<?> type) { - this.key = key; - this.description = description; - this.defaultValue = defaultValue; - this.type = type; - } - - @Override - public String getKey() { - return key; - } - - @Override - public Class<?> getType() { - return type; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getDefaultValue() { - return defaultValue; - } - - @Override - public boolean isTransient() { - return false; - } - - @Override - public boolean isFinal() { - return false; - } - - @Override - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - @Override - public void setTransient(boolean isTransient) { - // Nothing to do - } - - @Override - public void setFinal(boolean isFinal) { - // Nothing to do - } - -} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,90 @@ +package com.franciaflex.magalie; + +import org.nuiton.util.config.ConfigOptionDef; + +/** + * @author bleny + */ +public enum MagalieConfigOption implements ConfigOptionDef { + + SMTP_HOST( + "smtp.host", + "Nom d'hôte du serveur SMTP", + "", String.class), + + SMTP_PORT( + "smtp.port", + "Le port du serveur SMTP", + "25", Integer.class), + + SMTP_FROM( + "smtp.from", + "L'adresse d'expéditeur pour les mails de notifications", + "", String.class), + + DEV_MODE( + "devMode", + "Mode développement, court-circuite l'envoi de mail", + "true", Boolean.class), + + ; + + protected final String key; + protected final String description; + protected final Class<?> type; + protected String defaultValue; + + private MagalieConfigOption(String key, String description, + String defaultValue, Class<?> type) { + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + this.type = type; + } + + @Override + public String getKey() { + return key; + } + + @Override + public Class<?> getType() { + return type; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public boolean isTransient() { + return false; + } + + @Override + public boolean isFinal() { + return false; + } + + @Override + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + @Override + public void setTransient(boolean isTransient) { + // Nothing to do + } + + @Override + public void setFinal(boolean isFinal) { + // Nothing to do + } + +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,19 +0,0 @@ -package com.franciaflex.magalie; - -public class MagalieTechnicalException extends RuntimeException { - - public MagalieTechnicalException() { - } - - public MagalieTechnicalException(String message) { - super(message); - } - - public MagalieTechnicalException(String message, Throwable cause) { - super(message, cause); - } - - public MagalieTechnicalException(Throwable cause) { - super(cause); - } -} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,19 @@ +package com.franciaflex.magalie; + +public class MagalieTechnicalException extends RuntimeException { + + public MagalieTechnicalException() { + } + + public MagalieTechnicalException(String message) { + super(message); + } + + public MagalieTechnicalException(String message, Throwable cause) { + super(message, cause); + } + + public MagalieTechnicalException(Throwable cause) { + super(cause); + } +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,69 +0,0 @@ -package com.franciaflex.magalie; - -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.Site; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; - -import java.util.Collection; -import java.util.Comparator; - -public class Sites { - - protected static class SiteRequireDriverLicensePredicate implements Predicate<Site> { - - @Override - public boolean apply(Site site) { - return site.isDriverLicenseRequired(); - } - } - - protected static class AccessibleSitePredicate implements Predicate<Site> { - - protected MagalieUser magalieUser; - - public AccessibleSitePredicate(MagalieUser magalieUser) { - this.magalieUser = magalieUser; - } - - @Override - public boolean apply(Site site) { - boolean isSiteAccessible = magalieUser.isDriverLicenseOwner() - || ! site.isDriverLicenseRequired(); - return isSiteAccessible; - } - - } - - protected static class SiteRequiringDriverLicenseFirstComparator implements Comparator<Site> { - - @Override - public int compare(Site site1, Site site2) { - boolean site1RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site1); - boolean site2RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site2); - if (site1RequireDriverLicense && ! site2RequireDriverLicense) { - return -1; - } else if ( ! site1RequireDriverLicense && site2RequireDriverLicense) { - return +1; - } else { - return 0; - } - } - } - - public static Predicate<Site> accessibleSitePredicate(MagalieUser magalieUser) { - return new AccessibleSitePredicate(magalieUser); - } - - public static Predicate<Site> siteRequireDriverLicensePredicate() { - return new SiteRequireDriverLicensePredicate(); - } - - public static Comparator<Site> siteRequiringDriverLicenseFirstComparator() { - return new SiteRequiringDriverLicenseFirstComparator(); - } - - public static Predicate<Site> siteIsNotReportedInError(Collection<Site> allSitesInError) { - return Predicates.not(Predicates.in(allSitesInError)); - } -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,38 +0,0 @@ -package com.franciaflex.magalie; - -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.StorageMovement; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; - -public class StorageMovements { - - protected static class GetArticleFunction implements Function<StorageMovement, Article> { - - @Override - public Article apply(StorageMovement storageMovement) { - return storageMovement.getArticle(); - } - } - - protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> { - - @Override - public boolean apply(StorageMovement storageMovement) { - return storageMovement.isConfirmed(); - } - } - - public static Function<StorageMovement, Article> getArticleFunction() { - return new GetArticleFunction(); - } - - public static Predicate<StorageMovement> storageMovementIsConfirmed() { - return new StorageMovementIsConfirmedPredicate(); - } - - public static Predicate<StorageMovement> storageMovementIsNotConfirmed() { - return Predicates.not(storageMovementIsConfirmed()); - } -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,125 +0,0 @@ -package com.franciaflex.magalie; - -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.Site; -import com.franciaflex.magalie.entity.StoredArticle; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.Ordering; - -import java.util.Collection; -import java.util.Comparator; - -public class StoredArticles { - - protected static class FixedSiteForArticleFirst implements Comparator<StoredArticle> { - - protected Article article; - - public FixedSiteForArticleFirst(Article article) { - this.article = article; - } - - @Override - public int compare(StoredArticle o1, StoredArticle o2) { - if (o1.getSite().equals(article.getFixedSite())) { - return -1; - } else if (o2.getSite().equals(article.getFixedSite())) { - return +1; - } - return 0; - } - - } - - protected static class SiteWithHighestQuantityFirst implements Comparator<StoredArticle> { - - @Override - public int compare(StoredArticle o1, StoredArticle o2) { - return Double.compare(o1.getQuantity(), o2.getQuantity()); - } - - } - - protected static class AccessibleSiteFirst implements Comparator<StoredArticle> { - - protected Predicate<StoredArticle> articleStoredInAccessibleSitePredicate; - - public AccessibleSiteFirst(MagalieUser magalieUser) { - articleStoredInAccessibleSitePredicate = - articleStoredInAccessibleSitePredicate(magalieUser); - } - - @Override - public int compare(StoredArticle o1, StoredArticle o2) { - boolean isSite1Accessible = articleStoredInAccessibleSitePredicate.apply(o1); - boolean isSite2Accessible = articleStoredInAccessibleSitePredicate.apply(o2); - if (isSite1Accessible && ! isSite2Accessible) { - return -1; - } else if ( ! isSite1Accessible && isSite2Accessible) { - return 1; - } else { - return 0; - } - } - - } - - protected static class GetSiteFunction implements Function<StoredArticle, Site> { - - @Override - public Site apply(StoredArticle storedArticle) { - return storedArticle.getSite(); - } - } - - protected static class ArticleStoredInSitesRequiringDriverLicenseFirstComparator implements Comparator<StoredArticle> { - - @Override - public int compare(StoredArticle o1, StoredArticle o2) { - return Sites.siteRequiringDriverLicenseFirstComparator().compare(o1.getSite(), o2.getSite()); - } - } - - public static Comparator<StoredArticle> siteWithHighestQuantityFirst() { - return new SiteWithHighestQuantityFirst(); - } - - public static Comparator<StoredArticle> siteWithLowestQuantityFirstComparator() { - return Ordering.from(new SiteWithHighestQuantityFirst()).reverse(); - } - - - public static Comparator<StoredArticle> accessibleSiteFirstComparator(MagalieUser magalieUser) { - return new AccessibleSiteFirst(magalieUser); - } - - public static Comparator<StoredArticle> fixedSiteForArticleFirstComparator(Article article) { - return new FixedSiteForArticleFirst(article); - } - - public static Comparator<StoredArticle> fixedSiteForArticleLastComparator(Article article) { - return Ordering.from(new FixedSiteForArticleFirst(article)).reverse(); - } - - public static Function<StoredArticle, Site> getSiteFunction() { - return new GetSiteFunction(); - } - - public static Predicate<StoredArticle> articleStoredInAccessibleSitePredicate(MagalieUser magalieUser) { - Predicate<StoredArticle> predicate = Predicates.compose( - Sites.accessibleSitePredicate(magalieUser), - getSiteFunction()); - return predicate; - } - - public static Comparator<StoredArticle> articleStoredInSitesRequiringDriverLicenseFirstComparator() { - return new ArticleStoredInSitesRequiringDriverLicenseFirstComparator(); - } - - public static Predicate<StoredArticle> articleNotStoredInSiteReportedInError(Collection<Site> allSitesInError) { - return Predicates.compose(Sites.siteIsNotReportedInError(allSitesInError), getSiteFunction()); - } -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,73 @@ +package com.franciaflex.magalie.persistence; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import org.apache.commons.lang3.SystemUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.cfg.Environment; +import org.hibernate.ejb.AvailableSettings; + +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import java.io.File; +import java.util.Collections; +import java.util.Map; + +public class JpaUtil { + + private static final Log log = LogFactory.getLog(JpaUtil.class); + + private JpaUtil() {} + + protected static final ImmutableMap<String, String> JPA_H2_CONFIG = + ImmutableMap.of( + AvailableSettings.JDBC_DRIVER, org.h2.Driver.class.getName(), + AvailableSettings.JDBC_USER, "sa", + AvailableSettings.JDBC_PASSWORD, "", + Environment.DIALECT, org.hibernate.dialect.H2Dialect.class.getName(), + Environment.HBM2DDL_AUTO, "create" + ); + + public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context) { + + EntityManagerFactory tempEntityManagerFactory = + createTempEntityManagerFactory( + persistenceUnitName, + context, Collections.<String, String>emptyMap()); + + return tempEntityManagerFactory; + + } + + public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context, Map<String, String> jpaParameters) { + + Map<String, String> allJpaParameters = Maps.newHashMap(); + + allJpaParameters.putAll(jpaParameters); + + allJpaParameters.putAll(JPA_H2_CONFIG); + + File tempDirFile = SystemUtils.getJavaIoTmpDir(); + + File databaseFile = new File(tempDirFile, context); + + String h2dataPath = databaseFile.getAbsolutePath() + File.separator + "h2data"; + + String jdbcUrl = "jdbc:h2:file:" + h2dataPath; + + allJpaParameters.put(AvailableSettings.JDBC_URL, jdbcUrl); + + if (log.isTraceEnabled()) { + log.trace("will store H2 data in " + h2dataPath); + log.trace("jdbc url is\n" + jdbcUrl); + log.trace("allJpaParameters = " + allJpaParameters); + } + + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, allJpaParameters); + + return entityManagerFactory; + + } + +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,69 @@ +package com.franciaflex.magalie.persistence; + +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Site; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; + +import java.util.Collection; +import java.util.Comparator; + +public class Sites { + + protected static class SiteRequireDriverLicensePredicate implements Predicate<Site> { + + @Override + public boolean apply(Site site) { + return site.isDriverLicenseRequired(); + } + } + + protected static class AccessibleSitePredicate implements Predicate<Site> { + + protected MagalieUser magalieUser; + + public AccessibleSitePredicate(MagalieUser magalieUser) { + this.magalieUser = magalieUser; + } + + @Override + public boolean apply(Site site) { + boolean isSiteAccessible = magalieUser.isDriverLicenseOwner() + || ! site.isDriverLicenseRequired(); + return isSiteAccessible; + } + + } + + protected static class SiteRequiringDriverLicenseFirstComparator implements Comparator<Site> { + + @Override + public int compare(Site site1, Site site2) { + boolean site1RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site1); + boolean site2RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site2); + if (site1RequireDriverLicense && ! site2RequireDriverLicense) { + return -1; + } else if ( ! site1RequireDriverLicense && site2RequireDriverLicense) { + return +1; + } else { + return 0; + } + } + } + + public static Predicate<Site> accessibleSitePredicate(MagalieUser magalieUser) { + return new AccessibleSitePredicate(magalieUser); + } + + public static Predicate<Site> siteRequireDriverLicensePredicate() { + return new SiteRequireDriverLicensePredicate(); + } + + public static Comparator<Site> siteRequiringDriverLicenseFirstComparator() { + return new SiteRequiringDriverLicenseFirstComparator(); + } + + public static Predicate<Site> siteIsNotReportedInError(Collection<Site> allSitesInError) { + return Predicates.not(Predicates.in(allSitesInError)); + } +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java (from rev 38, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,38 @@ +package com.franciaflex.magalie.persistence; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; + +public class StorageMovements { + + protected static class GetArticleFunction implements Function<StorageMovement, Article> { + + @Override + public Article apply(StorageMovement storageMovement) { + return storageMovement.getArticle(); + } + } + + protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> { + + @Override + public boolean apply(StorageMovement storageMovement) { + return storageMovement.isConfirmed(); + } + } + + public static Function<StorageMovement, Article> getArticleFunction() { + return new GetArticleFunction(); + } + + public static Predicate<StorageMovement> storageMovementIsConfirmed() { + return new StorageMovementIsConfirmedPredicate(); + } + + public static Predicate<StorageMovement> storageMovementIsNotConfirmed() { + return Predicates.not(storageMovementIsConfirmed()); + } +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,125 @@ +package com.franciaflex.magalie.persistence; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.StoredArticle; +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Ordering; + +import java.util.Collection; +import java.util.Comparator; + +public class StoredArticles { + + protected static class FixedSiteForArticleFirst implements Comparator<StoredArticle> { + + protected Article article; + + public FixedSiteForArticleFirst(Article article) { + this.article = article; + } + + @Override + public int compare(StoredArticle o1, StoredArticle o2) { + if (o1.getSite().equals(article.getFixedSite())) { + return -1; + } else if (o2.getSite().equals(article.getFixedSite())) { + return +1; + } + return 0; + } + + } + + protected static class SiteWithHighestQuantityFirst implements Comparator<StoredArticle> { + + @Override + public int compare(StoredArticle o1, StoredArticle o2) { + return Double.compare(o1.getQuantity(), o2.getQuantity()); + } + + } + + protected static class AccessibleSiteFirst implements Comparator<StoredArticle> { + + protected Predicate<StoredArticle> articleStoredInAccessibleSitePredicate; + + public AccessibleSiteFirst(MagalieUser magalieUser) { + articleStoredInAccessibleSitePredicate = + articleStoredInAccessibleSitePredicate(magalieUser); + } + + @Override + public int compare(StoredArticle o1, StoredArticle o2) { + boolean isSite1Accessible = articleStoredInAccessibleSitePredicate.apply(o1); + boolean isSite2Accessible = articleStoredInAccessibleSitePredicate.apply(o2); + if (isSite1Accessible && ! isSite2Accessible) { + return -1; + } else if ( ! isSite1Accessible && isSite2Accessible) { + return 1; + } else { + return 0; + } + } + + } + + protected static class GetSiteFunction implements Function<StoredArticle, Site> { + + @Override + public Site apply(StoredArticle storedArticle) { + return storedArticle.getSite(); + } + } + + protected static class ArticleStoredInSitesRequiringDriverLicenseFirstComparator implements Comparator<StoredArticle> { + + @Override + public int compare(StoredArticle o1, StoredArticle o2) { + return Sites.siteRequiringDriverLicenseFirstComparator().compare(o1.getSite(), o2.getSite()); + } + } + + public static Comparator<StoredArticle> siteWithHighestQuantityFirst() { + return new SiteWithHighestQuantityFirst(); + } + + public static Comparator<StoredArticle> siteWithLowestQuantityFirstComparator() { + return Ordering.from(new SiteWithHighestQuantityFirst()).reverse(); + } + + + public static Comparator<StoredArticle> accessibleSiteFirstComparator(MagalieUser magalieUser) { + return new AccessibleSiteFirst(magalieUser); + } + + public static Comparator<StoredArticle> fixedSiteForArticleFirstComparator(Article article) { + return new FixedSiteForArticleFirst(article); + } + + public static Comparator<StoredArticle> fixedSiteForArticleLastComparator(Article article) { + return Ordering.from(new FixedSiteForArticleFirst(article)).reverse(); + } + + public static Function<StoredArticle, Site> getSiteFunction() { + return new GetSiteFunction(); + } + + public static Predicate<StoredArticle> articleStoredInAccessibleSitePredicate(MagalieUser magalieUser) { + Predicate<StoredArticle> predicate = Predicates.compose( + Sites.accessibleSitePredicate(magalieUser), + getSiteFunction()); + return predicate; + } + + public static Comparator<StoredArticle> articleStoredInSitesRequiringDriverLicenseFirstComparator() { + return new ArticleStoredInSitesRequiringDriverLicenseFirstComparator(); + } + + public static Predicate<StoredArticle> articleNotStoredInSiteReportedInError(Collection<Site> allSitesInError) { + return Predicates.compose(Sites.siteIsNotReportedInError(allSitesInError), getSiteFunction()); + } +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,10 +0,0 @@ -package com.franciaflex.magalie.dao; - -import com.franciaflex.magalie.entity.Article; - -/** - * @author bleny - */ -public interface ArticleDao extends Dao<Article> { - -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,12 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.Article; + +/** + * @author bleny + */ +public interface ArticleDao extends Dao<Article> { + + Article findByCode(String articleCode); + +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,18 +0,0 @@ -package com.franciaflex.magalie.dao; - -import com.franciaflex.magalie.entity.AbstractJpaEntity; - -public interface Dao<E extends AbstractJpaEntity> { - - E findById(String id); - - void persist(E entity); - - E merge(E entity); - - void remove(E entity); - - boolean contains(E entity); - - void commit(); -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java (from rev 32, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,17 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.AbstractEntity; + +public interface Dao<E extends AbstractEntity> { + + E findById(String id); + + void persist(E entity); + + E merge(E entity); + + void remove(E entity); + + boolean contains(E entity); + +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,10 +0,0 @@ -package com.franciaflex.magalie.dao; - -import com.franciaflex.magalie.entity.MagalieUser; - -/** - * @author bleny - */ -public interface MagalieUserDao extends Dao<MagalieUser> { - -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java (from rev 37, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,16 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.MagalieUser; + +import java.util.List; + +/** + * @author bleny + */ +public interface MagalieUserDao extends Dao<MagalieUser> { + + MagalieUser findByLogin(String login); + + List<MagalieUser> findAll(); + +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,6 +1,6 @@ -package com.franciaflex.magalie.dao; +package com.franciaflex.magalie.persistence.dao; -import com.franciaflex.magalie.entity.RequestedArticle; +import com.franciaflex.magalie.persistence.entity.RequestedArticle; /** * @author bleny Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java (from rev 39, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,19 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.SiteError; + +import java.util.List; + +/** + * @author bleny + */ +public interface SiteErrorDao extends Dao<SiteError> { + + SiteError findBySite(Site site); + + List<Site> getAllSitesInError(); + + List<SiteError> findAll(); + +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java (from rev 38, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,17 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StorageMovement; + +import java.util.List; + +/** + * @author bleny + */ +public interface StorageMovementDao extends Dao<StorageMovement> { + + List<StorageMovement> findAllByArticle(Article article); + + List<StorageMovement> findAll(); + +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,7 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; + +public interface StorageMovementOrderDao extends Dao<StorageMovementOrder> { + +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,10 +1,9 @@ -package com.franciaflex.magalie.dao; +package com.franciaflex.magalie.persistence.dao; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.StoredArticle; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StoredArticle; import java.util.List; -import java.util.Set; public interface StoredArticleDao extends Dao<StoredArticle> { Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,48 +0,0 @@ -package com.franciaflex.magalie.dao.jpa; - -import com.franciaflex.magalie.dao.Dao; -import com.franciaflex.magalie.entity.AbstractJpaEntity; - -import javax.persistence.EntityManager; - -public abstract class AbstractJpaDao<E extends AbstractJpaEntity> implements Dao<E> { - - protected EntityManager entityManager; - - public AbstractJpaDao(EntityManager entityManager) { - this.entityManager = entityManager; - } - - protected abstract Class<E> getEntityClass(); - - @Override - public E findById(String id) { - E entity = entityManager.find(getEntityClass(), id); - return entity; - } - - @Override - public void persist(E entity) { - entityManager.persist(entity); - } - - @Override - public E merge(E entity) { - return entityManager.merge(entity); - } - - @Override - public void remove(E entity) { - entityManager.remove(entity); - } - - @Override - public boolean contains(E entity) { - return entityManager.contains(entity); - } - - @Override - public void commit() { - entityManager.getTransaction().commit(); - } -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,48 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.Dao; +import com.franciaflex.magalie.persistence.entity.AbstractEntity; + +import javax.persistence.EntityManager; +import javax.persistence.EntityTransaction; + +public abstract class AbstractJpaDao<E extends AbstractEntity> implements Dao<E> { + + protected EntityManager entityManager; + + public AbstractJpaDao(EntityManager entityManager) { + this.entityManager = entityManager; + } + + protected abstract Class<E> getEntityClass(); + + @Override + public E findById(String id) { + E entity = entityManager.find(getEntityClass(), id); + return entity; + } + + @Override + public void persist(E entity) { + EntityTransaction transaction = entityManager.getTransaction(); + transaction.begin(); + entityManager.persist(entity); + transaction.commit(); + } + + @Override + public E merge(E entity) { + return entityManager.merge(entity); + } + + @Override + public void remove(E entity) { + entityManager.remove(entity); + } + + @Override + public boolean contains(E entity) { + return entityManager.contains(entity); + } + +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,32 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.google.common.collect.Iterables; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +public class ArticleJpaDao extends AbstractJpaDao<Article> implements ArticleDao { + + public ArticleJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<Article> getEntityClass() { + return Article.class; + } + + @Override + public Article findByCode(String articleCode) { + Query query = entityManager.createQuery("from article a where a.code = :code"); + query.setParameter("code", articleCode); + Article article = (Article) + Iterables.getOnlyElement( + query.getResultList(), + null + ); + return article; + } +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,18 +0,0 @@ -package com.franciaflex.magalie.dao.jpa; - -import com.franciaflex.magalie.dao.ArticleDao; -import com.franciaflex.magalie.entity.Article; - -import javax.persistence.EntityManager; - -public class JpaArticleDao extends AbstractJpaDao<Article> implements ArticleDao { - - public JpaArticleDao(EntityManager entityManager) { - super(entityManager); - } - - @Override - protected Class<Article> getEntityClass() { - return Article.class; - } -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,18 +0,0 @@ -package com.franciaflex.magalie.dao.jpa; - -import com.franciaflex.magalie.dao.MagalieUserDao; -import com.franciaflex.magalie.entity.MagalieUser; - -import javax.persistence.EntityManager; - -public class JpaMagalieUserDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao { - - public JpaMagalieUserDao(EntityManager entityManager) { - super(entityManager); - } - - @Override - protected Class<MagalieUser> getEntityClass() { - return MagalieUser.class; - } -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,18 +0,0 @@ -package com.franciaflex.magalie.dao.jpa; - -import com.franciaflex.magalie.dao.RequestedArticleDao; -import com.franciaflex.magalie.entity.RequestedArticle; - -import javax.persistence.EntityManager; - -public class JpaRequestedArticleDao extends AbstractJpaDao<RequestedArticle> implements RequestedArticleDao { - - public JpaRequestedArticleDao(EntityManager entityManager) { - super(entityManager); - } - - @Override - protected Class<RequestedArticle> getEntityClass() { - return RequestedArticle.class; - } -} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaStoredArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaStoredArticleDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,29 +0,0 @@ -package com.franciaflex.magalie.dao.jpa; - -import com.franciaflex.magalie.dao.StoredArticleDao; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.StoredArticle; - -import javax.persistence.EntityManager; -import javax.persistence.Query; -import java.util.List; - -public class JpaStoredArticleDao extends AbstractJpaDao<StoredArticle> implements StoredArticleDao { - - public JpaStoredArticleDao(EntityManager entityManager) { - super(entityManager); - } - - @Override - protected Class<StoredArticle> getEntityClass() { - return StoredArticle.class; - } - - @Override - public List<StoredArticle> findAllForArticle(Article article) { - Query query = entityManager.createQuery("from StoredArticle sa where sa.article = :article"); - query.setParameter("article", article); - List resultList = query.getResultList(); - return resultList; - } -} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,37 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.google.common.collect.Iterables; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +public class MagalieUserJpaDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao { + + public MagalieUserJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<MagalieUser> getEntityClass() { + return MagalieUser.class; + } + + @Override + public MagalieUser findByLogin(String login) { + Query query = entityManager.createQuery("from magalieUser mu where mu.login = login"); + query.setParameter("login", login); + List<MagalieUser> resultList = query.getResultList(); + MagalieUser onlyElement = Iterables.getOnlyElement(resultList, null); + return onlyElement; + } + + @Override + public List<MagalieUser> findAll() { + Query query = entityManager.createQuery("from MagalieUser mu order by mu.login"); + List<MagalieUser> resultList = query.getResultList(); + return resultList; + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,18 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.entity.RequestedArticle; + +import javax.persistence.EntityManager; + +public class RequestedArticleJpaDao extends AbstractJpaDao<RequestedArticle> implements RequestedArticleDao { + + public RequestedArticleJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<RequestedArticle> getEntityClass() { + return RequestedArticle.class; + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,47 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.SiteError; +import com.google.common.collect.Iterables; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +public class SiteErrorJpaDao extends AbstractJpaDao<SiteError> implements SiteErrorDao { + + public SiteErrorJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<SiteError> getEntityClass() { + return SiteError.class; + } + + @Override + public SiteError findBySite(Site site) { + Query query = entityManager.createQuery("from SiteError se where se.site = :site"); + query.setParameter("site", site); + SiteError siteError = (SiteError) + Iterables.getOnlyElement( + query.getResultList(), + null); + return siteError; + } + + @Override + public List<Site> getAllSitesInError() { + Query query = entityManager.createQuery("select se.site from SiteError se"); + List<Site> allSitesInError = query.getResultList(); + return allSitesInError; + } + + @Override + public List<SiteError> findAll() { + Query query = entityManager.createQuery("from SiteError se order by se.reportDate"); + List<SiteError> all = query.getResultList(); + return all; + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,34 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StorageMovement; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +public class StorageMovementJpaDao extends AbstractJpaDao<StorageMovement> implements StorageMovementDao { + + public StorageMovementJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<StorageMovement> getEntityClass() { + return StorageMovement.class; + } + + @Override + public List<StorageMovement> findAllByArticle(Article article) { + Query query = entityManager.createQuery("from StorageMovement sm where sm.article = :article"); + query.setParameter("article", article); + return query.getResultList(); + } + + @Override + public List<StorageMovement> findAll() { + Query query = entityManager.createQuery("from StorageMovement sm order by sm.orderDate"); + return query.getResultList(); + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,19 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; + +import javax.persistence.EntityManager; + +public class StorageMovementOrderJpaDao extends AbstractJpaDao<StorageMovementOrder> implements StorageMovementOrderDao { + + public StorageMovementOrderJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<StorageMovementOrder> getEntityClass() { + return StorageMovementOrder.class; + } + +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,32 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StoredArticle; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +public class StoredArticleJpaDao extends AbstractJpaDao<StoredArticle> implements StoredArticleDao { + + public StoredArticleJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<StoredArticle> getEntityClass() { + return StoredArticle.class; + } + + @Override + public List<StoredArticle> findAllForArticle(Article article) { + Query query = entityManager.createQuery("from StoredArticle sa where sa.article = :article"); + query.setParameter("article", article); + List<StoredArticle> resultList = query.getResultList(); + for (StoredArticle storedArticle : resultList) { + entityManager.detach(storedArticle); + } + return resultList; + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,30 @@ +package com.franciaflex.magalie.persistence.entity; + +import com.google.common.base.Objects; +import org.apache.commons.lang3.builder.ToStringBuilder; + +public abstract class AbstractEntity { + + public abstract String getId(); + + @Override + public boolean equals(Object o) { + String id = getId(); + if (this == o) return true; + if (!(o instanceof AbstractEntity)) return false; + AbstractEntity that = (AbstractEntity) o; + if (id == null && that.getId() == null) return false; + if (!id.equals(that.getId())) return false; + return Objects.equal(id, that.getId()); + } + + @Override + public int hashCode() { + return Objects.hashCode(getId()); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,29 +0,0 @@ -package com.franciaflex.magalie.entity; - -import com.google.common.base.Objects; -import org.apache.commons.lang3.builder.ToStringBuilder; - -public abstract class AbstractJpaEntity { - - public abstract String getId(); - - @Override - public boolean equals(Object o) { - String id = getId(); - if (this == o) return true; - if (!(o instanceof AbstractJpaEntity)) return false; - AbstractJpaEntity that = (AbstractJpaEntity) o; - if (!id.equals(that.getId())) return false; - return Objects.equal(id, that.getId()); - } - - @Override - public int hashCode() { - return Objects.hashCode(getId()); - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } -} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,11 +1,11 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity -public class Article extends AbstractJpaEntity { +public class Article extends AbstractEntity { @Id protected String id; Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,10 +1,10 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import javax.persistence.Entity; import javax.persistence.Id; @Entity -public class MagalieUser extends AbstractJpaEntity { +public class MagalieUser extends AbstractEntity { @Id protected String id; Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,4 +1,4 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import javax.persistence.Entity; import javax.persistence.Id; @@ -6,7 +6,7 @@ import java.util.Date; @Entity -public class RequestedArticle extends AbstractJpaEntity { +public class RequestedArticle extends AbstractEntity { @Id protected String id; Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,4 +1,4 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import com.google.common.base.Joiner; @@ -6,7 +6,7 @@ import javax.persistence.Id; @Entity -public class Site extends AbstractJpaEntity { +public class Site extends AbstractEntity { @Id protected String id; Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,4 +1,4 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -8,7 +8,7 @@ import java.util.Date; @Entity -public class SiteError extends AbstractJpaEntity { +public class SiteError extends AbstractEntity { @Id @GeneratedValue Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,91 +0,0 @@ -package com.franciaflex.magalie.entity; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import java.util.Date; - -@Entity -public class StorageMovement extends AbstractJpaEntity { - - @Id - @GeneratedValue - protected String id; - - @ManyToOne - protected Site site; - - @ManyToOne - protected Article article; - - @ManyToOne - protected MagalieUser magalieUser; - - protected double quantity; - - protected Date orderDate; - - protected Date confirmDate; - - @Override - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public Site getSite() { - return site; - } - - public void setSite(Site site) { - this.site = site; - } - - public Article getArticle() { - return article; - } - - public void setArticle(Article article) { - this.article = article; - } - - public MagalieUser getMagalieUser() { - return magalieUser; - } - - public void setMagalieUser(MagalieUser magalieUser) { - this.magalieUser = magalieUser; - } - - public double getQuantity() { - return quantity; - } - - public void setQuantity(double quantity) { - this.quantity = quantity; - } - - public Date getOrderDate() { - return orderDate; - } - - public void setOrderDate(Date orderDate) { - this.orderDate = orderDate; - } - - public Date getConfirmDate() { - return confirmDate; - } - - public void setConfirmDate(Date confirmDate) { - this.confirmDate = confirmDate; - } - - public boolean isConfirmed() { - return confirmDate != null; - } -} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,111 @@ +package com.franciaflex.magalie.persistence.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import java.util.Date; + +@Entity +public class StorageMovement extends AbstractEntity { + + @Id + @GeneratedValue + protected String id; + + @ManyToOne + protected Site site; + + @ManyToOne + protected Article article; + + @ManyToOne + protected MagalieUser magalieUser; + + protected double quantity; + + protected Date orderDate; + + protected Date confirmDate; + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Site getSite() { + return site; + } + + public void setSite(Site site) { + this.site = site; + } + + public Article getArticle() { + return article; + } + + public void setArticle(Article article) { + this.article = article; + } + + public MagalieUser getMagalieUser() { + return magalieUser; + } + + public void setMagalieUser(MagalieUser magalieUser) { + this.magalieUser = magalieUser; + } + + public double getQuantity() { + return quantity; + } + + public void setQuantity(double quantity) { + this.quantity = quantity; + } + + public Date getOrderDate() { + return orderDate; + } + + public void setOrderDate(Date orderDate) { + this.orderDate = orderDate; + } + + public Date getConfirmDate() { + return confirmDate; + } + + public void setConfirmDate(Date confirmDate) { + this.confirmDate = confirmDate; + } + + public boolean isConfirmed() { + return confirmDate != null; + } + + public String getSiteId() { + return getSite().getId(); + } + + public boolean isDriverLicenseRequired() { + return getSite().isDriverLicenseRequired(); + } + + public String getStoreCode() { + return getSite().getStoreCode(); + } + + public String getLocationCode() { + return getSite().getLocationCode(); + } + + public String getSiteBarcode() { + return getSite().getBarcode(); + } +} Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java) =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,104 @@ +package com.franciaflex.magalie.persistence.entity; + +/* + * #%L + * MagaLiE :: Services + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2013 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import com.franciaflex.magalie.persistence.StorageMovements; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.builder.ToStringBuilder; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import java.util.Set; + +@Entity +public class StorageMovementOrder extends AbstractEntity { + + @Id + @GeneratedValue + protected String id; + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @OneToMany(cascade = CascadeType.ALL) + protected Set<StorageMovement> storageMovements; + + public Set<StorageMovement> getStorageMovements() { + return storageMovements; + } + + public void setStorageMovements(Set<StorageMovement> storageMovements) { + this.storageMovements = storageMovements; + } + + public Set<StorageMovement> getSites() { + return storageMovements; + } + + protected Set<Article> getArticles() { + Set<Article> articles = + Sets.newHashSet( + Iterables.transform( + getStorageMovements(), + StorageMovements.getArticleFunction() + ) + ); + return articles; + } + + public Article getArticle() { + Article onlyElement = Iterables.getOnlyElement(getArticles()); + return onlyElement; + } + + public double getQuantity() { + double quantity = 0.; + for (StorageMovement storageMovement : storageMovements) { + quantity += storageMovement.getQuantity(); + } + return quantity; + } + + public void addStorageMovement(StorageMovement storageMovement) { + if (storageMovements == null) { + storageMovements = Sets.newLinkedHashSet(); + } + storageMovements.add(storageMovement); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java 2013-03-21 13:55:30 UTC (rev 31) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,11 +1,11 @@ -package com.franciaflex.magalie.entity; +package com.franciaflex.magalie.persistence.entity; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity -public class StoredArticle extends AbstractJpaEntity { +public class StoredArticle extends AbstractEntity { @Id protected String id; Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,228 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.StoredArticles; -import com.franciaflex.magalie.dao.StorageMovementDao; -import com.franciaflex.magalie.dao.StorageMovementOrderDao; -import com.franciaflex.magalie.dao.StoredArticleDao; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.Site; -import com.franciaflex.magalie.entity.StorageMovement; -import com.franciaflex.magalie.entity.StorageMovementOrder; -import com.franciaflex.magalie.entity.StoredArticle; -import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; -import com.franciaflex.magalie.services.exception.UnavailableArticleException; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Ordering; -import com.google.common.collect.Sets; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Date; -import java.util.List; -import java.util.Set; - -public class ArticleStorageService implements MagalieService { - - private static final Log log = LogFactory.getLog(ArticleStorageService.class); - - protected MagalieServiceContext serviceContext; - - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public StorageMovementTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException { - - Preconditions.checkNotNull(magalieUser); - - Preconditions.checkNotNull(article); - - Preconditions.checkArgument(requestedQuantity > 0.); - - double availableQuantity = getAvailableQuantity(article); - UnavailableArticleException.throwIfRequestMoreThanAvailable(requestedQuantity, availableQuantity, article); - - double accessibleQuantity = getAccessibleQuantity(article, magalieUser); - RequiredDriverLicenceException.throwIfRequestMoreThanAccessible(requestedQuantity, accessibleQuantity, magalieUser, article); - - if (log.isInfoEnabled()) { - log.info("will process article request" - + ": requested = " + requestedQuantity - + ", accessible " + accessibleQuantity - + ", available " + availableQuantity); - } - - List<StoredArticle> storedArticles = getStoredArticles(article); - - Ordering<StoredArticle> storedArticlesOrdering = - Ordering.compound( - Lists.newArrayList( - StoredArticles.fixedSiteForArticleLastComparator(article), - StoredArticles.siteWithLowestQuantityFirstComparator(), - StoredArticles.articleStoredInSitesRequiringDriverLicenseFirstComparator() - ) - ); - - Set<StoredArticle> sortedStoredArticles = - Sets.newTreeSet(storedArticlesOrdering); - - Iterables.addAll( - sortedStoredArticles, - Iterables.filter( - storedArticles, - StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser) - ) - ); - - StorageMovementOrder storageMovementOrder = new StorageMovementOrder(); - - StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder); - - double quantity = 0; - - Date orderDate = serviceContext.getNow(); - - for (StoredArticle storedArticle : sortedStoredArticles) { - - double quantityLeft = requestedQuantity - quantity; - - double quantityInSite = storedArticle.getQuantity(); - - double quantityWithdrawn = Math.min(quantityLeft, quantityInSite); - - quantity += quantityWithdrawn; - - StorageMovement newStorageMovement = new StorageMovement(); - - newStorageMovement.setArticle(article); - - newStorageMovement.setOrderDate(orderDate); - - newStorageMovement.setMagalieUser(magalieUser); - - newStorageMovement.setSite(storedArticle.getSite()); - - // we remove from the stock so negative number - newStorageMovement.setQuantity( -1. * quantityWithdrawn); - - if (quantityWithdrawn > 0.) { - - storageMovementOrder.addStorageMovement(newStorageMovement); - - } else { - - storageMovementTask.addExtraStorageMovement(newStorageMovement); - - } - - } - - StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao(); - - dao.persist(storageMovementOrder); - - return storageMovementTask; - - } - - protected List<StoredArticle> getStoredArticles(Article article) { - - StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao(); - - List<StoredArticle> storedArticles = storedArticleDao.findAllForArticle(article); - - // consider storage movements and compute actually available quantities - - StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao(); - - List<StorageMovement> storageMovements = storageMovementDao.findAllByArticle(article); - - ImmutableMap<Site, StoredArticle> storedArticlesBySite = - Maps.uniqueIndex( - storedArticles, - StoredArticles.getSiteFunction() - ); - - for (StorageMovement storageMovement : storageMovements) { - - Site site = storageMovement.getSite(); - - StoredArticle storedArticle = storedArticlesBySite.get(site); - - double actualQuantity = storedArticle.getQuantity() + storageMovement.getQuantity(); - - if (actualQuantity > 0.) { - - storedArticle.setQuantity(actualQuantity); - - } else { - - // site is empty, do not include it as a site where you can take an article - storedArticles.remove(storedArticle); - - } - - } - - // exclude storageMovements reported in error - - SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class); - - List<Site> allSitesInError = siteErrorsService.getAllSitesInError(); - - storedArticles = - Lists.newArrayList( - Iterables.filter( - storedArticles, - StoredArticles.articleNotStoredInSiteReportedInError(allSitesInError) - ) - ); - - return storedArticles; - - } - - protected double getAvailableQuantity(Article article) { - - List<StoredArticle> storedArticles = getStoredArticles(article); - - double availableQuantity = 0.; - - for (StoredArticle storedArticle : storedArticles) { - - availableQuantity += storedArticle.getQuantity(); - - } - - return availableQuantity; - - } - - protected double getAccessibleQuantity(Article article, MagalieUser magalieUser) { - - List<StoredArticle> storedArticles = getStoredArticles(article); - - Iterable<StoredArticle> accessibleStoredArticles = - Iterables.filter( - storedArticles, - StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser) - ); - - double accessibleQuantity = 0.; - - for (StoredArticle storedArticle : accessibleStoredArticles) { - - accessibleQuantity += storedArticle.getQuantity(); - - } - - return accessibleQuantity; - - } - -} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40) @@ -2,20 +2,20 @@ import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.MagalieTechnicalException; -import com.franciaflex.magalie.dao.ArticleDao; -import com.franciaflex.magalie.dao.MagalieUserDao; -import com.franciaflex.magalie.dao.RequestedArticleDao; -import com.franciaflex.magalie.dao.SiteErrorDao; -import com.franciaflex.magalie.dao.StorageMovementDao; -import com.franciaflex.magalie.dao.StorageMovementOrderDao; -import com.franciaflex.magalie.dao.StoredArticleDao; -import com.franciaflex.magalie.dao.jpa.JpaArticleDao; -import com.franciaflex.magalie.dao.jpa.JpaMagalieUserDao; -import com.franciaflex.magalie.dao.jpa.JpaRequestedArticleDao; -import com.franciaflex.magalie.dao.jpa.JpaSiteErrorDao; -import com.franciaflex.magalie.dao.jpa.JpaStorageMovementDao; -import com.franciaflex.magalie.dao.jpa.JpaStorageMovementOrderDao; -import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao; +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; +import com.franciaflex.magalie.persistence.dao.jpa.ArticleJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.MagalieUserJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.RequestedArticleJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.SiteErrorJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementOrderJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StoredArticleJpaDao; import javax.persistence.EntityManager; import java.lang.reflect.Constructor; @@ -84,36 +84,36 @@ @Override public MagalieUserDao getMagalieUserDao() { - return new JpaMagalieUserDao(entityManager); + return new MagalieUserJpaDao(entityManager); } @Override public StoredArticleDao getStoredArticleDao() { - return new JpaStoredArticleDao(entityManager); + return new StoredArticleJpaDao(entityManager); } @Override public RequestedArticleDao getRequestedArticleDao() { - return new JpaRequestedArticleDao(entityManager); + return new RequestedArticleJpaDao(entityManager); } @Override public ArticleDao getArticleDao() { - return new JpaArticleDao(entityManager); + return new ArticleJpaDao(entityManager); } @Override public StorageMovementDao getStorageMovementDao() { - return new JpaStorageMovementDao(entityManager); + return new StorageMovementJpaDao(entityManager); } @Override public SiteErrorDao getSiteErrorDao() { - return new JpaSiteErrorDao(entityManager); + return new SiteErrorJpaDao(entityManager); } @Override public StorageMovementOrderDao getStorageMovementOrderDao() { - return new JpaStorageMovementOrderDao(entityManager); + return new StorageMovementOrderJpaDao(entityManager); } } Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,52 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; -import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; -import com.franciaflex.magalie.services.exception.UnavailableArticleException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class FulfilKanbanService implements MagalieService { - - private static final Log log = LogFactory.getLog(FulfilKanbanService.class); - - protected MagalieServiceContext serviceContext; - - @Override - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public StorageMovementTask fulfilKanbanTask( - String articleBarcode, - MagalieUser magalieUser) throws InvalidMagalieBarcodeException, - UnavailableArticleException, - RequiredDriverLicenceException { - - if (log.isInfoEnabled()) { - log.info(magalieUser + " requested fulfil kanban with barcode " + articleBarcode); - } - - MagalieBarcodeService magalieBarcodeService = - serviceContext.newService(MagalieBarcodeService.class); - - Article article = magalieBarcodeService.getArticle(articleBarcode); - - double quantityInKanban = article.getQuantityInKanban(); - - ArticleStorageService articleStorageService = - serviceContext.newService(ArticleStorageService.class); - - - StorageMovementTask storageMovementTask = - articleStorageService.withdrawArticle( - magalieUser, - article, - quantityInKanban); - - return storageMovementTask; - - } -} Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,59 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.dao.ArticleDao; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; -import com.google.common.base.Splitter; -import com.google.common.collect.Iterables; - -public class MagalieBarcodeService implements MagalieService { - - protected MagalieServiceContext serviceContext; - - protected static final String BARCODE_ELEMENTS_SEPARATOR = "_"; - - protected static final String ARTICLE_BARCODE_PREFIX = "ART"; - - @Override - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public Article getArticle(String articleBarcode) throws InvalidMagalieBarcodeException { - - Iterable<String> split = Splitter.on(BARCODE_ELEMENTS_SEPARATOR).split(articleBarcode); - - if (Iterables.size(split) != 2) { - - throw new InvalidMagalieBarcodeException("Unexpected barcode format, 2 parts expected"); - - } - - String prefix = Iterables.get(split, 0); - - if ( ! ARTICLE_BARCODE_PREFIX.equals(prefix)) { - - throw new InvalidMagalieBarcodeException( - "not an article barcode. expected prefix '" - + ARTICLE_BARCODE_PREFIX + ", '" + prefix + "' found."); - - } - - String articleCode = Iterables.get(split, 1); - - ArticleDao articleDao = serviceContext.getArticleDao(); - - Article article = articleDao.findByCode(articleCode); - - if (article == null) { - - throw new InvalidMagalieBarcodeException( - "no article with code " + articleCode); - - } - - return article; - - } - -} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,9 +1,9 @@ package com.franciaflex.magalie.services; -import com.franciaflex.magalie.StorageMovements; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.SiteError; -import com.franciaflex.magalie.entity.StorageMovement; +import com.franciaflex.magalie.persistence.StorageMovements; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.SiteError; +import com.franciaflex.magalie.persistence.entity.StorageMovement; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40) @@ -24,13 +24,13 @@ */ import com.franciaflex.magalie.MagalieApplicationConfig; -import com.franciaflex.magalie.dao.ArticleDao; -import com.franciaflex.magalie.dao.MagalieUserDao; -import com.franciaflex.magalie.dao.RequestedArticleDao; -import com.franciaflex.magalie.dao.SiteErrorDao; -import com.franciaflex.magalie.dao.StorageMovementDao; -import com.franciaflex.magalie.dao.StorageMovementOrderDao; -import com.franciaflex.magalie.dao.StoredArticleDao; +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; import java.util.Date; Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,39 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.dao.MagalieUserDao; -import com.franciaflex.magalie.entity.MagalieUser; -import com.google.common.base.Preconditions; - -import java.util.List; - -public class MagalieUsersService implements MagalieService { - - protected MagalieServiceContext serviceContext; - - @Override - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public MagalieUser getMagalieUser(String login) { - - MagalieUserDao dao = serviceContext.getMagalieUserDao(); - - MagalieUser magalieUser = dao.findByLogin(login); - - Preconditions.checkArgument(magalieUser != null, "there is no user with login '" + login + "'"); - - return magalieUser; - - } - - public List<MagalieUser> getAllMagalieUsers() { - - MagalieUserDao dao = serviceContext.getMagalieUserDao(); - - List<MagalieUser> allMagalieUsers = dao.findAll(); - - return allMagalieUsers; - - } -} Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,50 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.dao.StorageMovementDao; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.SiteError; -import com.franciaflex.magalie.entity.StorageMovement; - -import java.util.Date; -import java.util.List; - -public class ReportService implements MagalieService { - - protected MagalieServiceContext serviceContext; - - @Override - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public MagalieReport getReport() { - - MagalieReport magalieReport = new MagalieReport(); - - Date now = serviceContext.getNow(); - - magalieReport.setReportDate(now); - - MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class); - - List<MagalieUser> allMagalieUsers = magalieUsersService.getAllMagalieUsers(); - - magalieReport.setAllMagalieUsers(allMagalieUsers); - - StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao(); - - List<StorageMovement> allStorageMovements = storageMovementDao.findAll(); - - magalieReport.setAllStorageMovements(allStorageMovements); - - SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class); - - List<SiteError> allSitesInError = siteErrorsService.getAllSiteErrors(); - - magalieReport.setAllSiteErrors(allSitesInError); - - return magalieReport; - - } - -} Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,63 +0,0 @@ -package com.franciaflex.magalie.services; - -/* - * #%L - * MagaLiE :: Services - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2013 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ - -import com.franciaflex.magalie.dao.ArticleDao; -import com.franciaflex.magalie.dao.MagalieUserDao; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; -import com.franciaflex.magalie.services.exception.UnavailableArticleException; - -public class RequestedItemService implements MagalieService { - - protected MagalieServiceContext serviceContext; - - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException { - - ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class); - - ArticleDao articleDao = serviceContext.getArticleDao(); - - MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); - - MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre"); - - Article article1 = articleDao.findById("article1"); - - StorageMovementTask storageMovementTask = - articleStorageService.withdrawArticle( - alexandre, - article1, - 40. - ); - - return storageMovementTask; - - } -} Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,73 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.dao.SiteErrorDao; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.Site; -import com.franciaflex.magalie.entity.SiteError; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Date; -import java.util.List; - -public class SiteErrorsService implements MagalieService { - - private static final Log log = LogFactory.getLog(SiteErrorsService.class); - - protected MagalieServiceContext serviceContext; - - @Override - public void setServiceContext(MagalieServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public void reportError(Site site, MagalieUser magalieUser) { - - SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); - - SiteError existingSiteError = siteErrorDao.findBySite(site); - - if (existingSiteError == null) { - - SiteError newSiteError = new SiteError(); - - newSiteError.setMagalieUser(magalieUser); - - newSiteError.setSite(site); - - Date reportDate = serviceContext.getNow(); - - newSiteError.setReportDate(reportDate); - - siteErrorDao.persist(newSiteError); - - } else { - - if (log.isInfoEnabled()) { - log.info("error on site " + site + " already reported, nothing saved"); - } - - } - - } - - public List<Site> getAllSitesInError() { - - SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); - - List<Site> allSitesInError = siteErrorDao.getAllSitesInError(); - - return allSitesInError; - - } - - public List<SiteError> getAllSiteErrors() { - - SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); - - List<SiteError> allSiteErrors = siteErrorDao.findAll(); - - return allSiteErrors; - - } -} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,8 +1,8 @@ package com.franciaflex.magalie.services; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.StorageMovement; -import com.franciaflex.magalie.entity.StorageMovementOrder; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; import com.google.common.collect.Lists; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,27 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.entity.StoredArticle; -import org.apache.commons.lang3.builder.ToStringBuilder; - -public class WithdrawArticleFromSiteTask { - - protected StoredArticle storedArticle; - - protected double quantity; - - public WithdrawArticleFromSiteTask(StoredArticle storedArticle, double quantity) { - this.storedArticle = storedArticle; - this.quantity = quantity; - } - - public double getQuantity() { - return quantity; - } - - - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } -} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,7 +1,7 @@ package com.franciaflex.magalie.services.exception; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; public class RequiredDriverLicenceException extends MagalieException { Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,6 +1,6 @@ package com.franciaflex.magalie.services.exception; -import com.franciaflex.magalie.entity.Article; +import com.franciaflex.magalie.persistence.entity.Article; public class UnavailableArticleException extends MagalieException { Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java (from rev 37, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,231 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.StoredArticles; +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; +import com.franciaflex.magalie.persistence.entity.StoredArticle; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.StorageMovementTask; +import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; +import com.franciaflex.magalie.services.exception.UnavailableArticleException; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.collect.Sets; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Date; +import java.util.List; +import java.util.Set; + +public class ArticleStorageService implements MagalieService { + + private static final Log log = LogFactory.getLog(ArticleStorageService.class); + + protected MagalieServiceContext serviceContext; + + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public StorageMovementTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException { + + Preconditions.checkNotNull(magalieUser); + + Preconditions.checkNotNull(article); + + Preconditions.checkArgument(requestedQuantity > 0.); + + double availableQuantity = getAvailableQuantity(article); + UnavailableArticleException.throwIfRequestMoreThanAvailable(requestedQuantity, availableQuantity, article); + + double accessibleQuantity = getAccessibleQuantity(article, magalieUser); + RequiredDriverLicenceException.throwIfRequestMoreThanAccessible(requestedQuantity, accessibleQuantity, magalieUser, article); + + if (log.isInfoEnabled()) { + log.info("will process article request" + + ": requested = " + requestedQuantity + + ", accessible " + accessibleQuantity + + ", available " + availableQuantity); + } + + List<StoredArticle> storedArticles = getStoredArticles(article); + + Ordering<StoredArticle> storedArticlesOrdering = + Ordering.compound( + Lists.newArrayList( + StoredArticles.fixedSiteForArticleLastComparator(article), + StoredArticles.siteWithLowestQuantityFirstComparator(), + StoredArticles.articleStoredInSitesRequiringDriverLicenseFirstComparator() + ) + ); + + Set<StoredArticle> sortedStoredArticles = + Sets.newTreeSet(storedArticlesOrdering); + + Iterables.addAll( + sortedStoredArticles, + Iterables.filter( + storedArticles, + StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser) + ) + ); + + StorageMovementOrder storageMovementOrder = new StorageMovementOrder(); + + StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder); + + double quantity = 0; + + Date orderDate = serviceContext.getNow(); + + for (StoredArticle storedArticle : sortedStoredArticles) { + + double quantityLeft = requestedQuantity - quantity; + + double quantityInSite = storedArticle.getQuantity(); + + double quantityWithdrawn = Math.min(quantityLeft, quantityInSite); + + quantity += quantityWithdrawn; + + StorageMovement newStorageMovement = new StorageMovement(); + + newStorageMovement.setArticle(article); + + newStorageMovement.setOrderDate(orderDate); + + newStorageMovement.setMagalieUser(magalieUser); + + newStorageMovement.setSite(storedArticle.getSite()); + + // we remove from the stock so negative number + newStorageMovement.setQuantity( -1. * quantityWithdrawn); + + if (quantityWithdrawn > 0.) { + + storageMovementOrder.addStorageMovement(newStorageMovement); + + } else { + + storageMovementTask.addExtraStorageMovement(newStorageMovement); + + } + + } + + StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao(); + + dao.persist(storageMovementOrder); + + return storageMovementTask; + + } + + protected List<StoredArticle> getStoredArticles(Article article) { + + StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao(); + + List<StoredArticle> storedArticles = storedArticleDao.findAllForArticle(article); + + // consider storage movements and compute actually available quantities + + StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao(); + + List<StorageMovement> storageMovements = storageMovementDao.findAllByArticle(article); + + ImmutableMap<Site, StoredArticle> storedArticlesBySite = + Maps.uniqueIndex( + storedArticles, + StoredArticles.getSiteFunction() + ); + + for (StorageMovement storageMovement : storageMovements) { + + Site site = storageMovement.getSite(); + + StoredArticle storedArticle = storedArticlesBySite.get(site); + + double actualQuantity = storedArticle.getQuantity() + storageMovement.getQuantity(); + + if (actualQuantity > 0.) { + + storedArticle.setQuantity(actualQuantity); + + } else { + + // site is empty, do not include it as a site where you can take an article + storedArticles.remove(storedArticle); + + } + + } + + // exclude storageMovements reported in error + + SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class); + + List<Site> allSitesInError = siteErrorsService.getAllSitesInError(); + + storedArticles = + Lists.newArrayList( + Iterables.filter( + storedArticles, + StoredArticles.articleNotStoredInSiteReportedInError(allSitesInError) + ) + ); + + return storedArticles; + + } + + protected double getAvailableQuantity(Article article) { + + List<StoredArticle> storedArticles = getStoredArticles(article); + + double availableQuantity = 0.; + + for (StoredArticle storedArticle : storedArticles) { + + availableQuantity += storedArticle.getQuantity(); + + } + + return availableQuantity; + + } + + protected double getAccessibleQuantity(Article article, MagalieUser magalieUser) { + + List<StoredArticle> storedArticles = getStoredArticles(article); + + Iterable<StoredArticle> accessibleStoredArticles = + Iterables.filter( + storedArticles, + StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser) + ); + + double accessibleQuantity = 0.; + + for (StoredArticle storedArticle : accessibleStoredArticles) { + + accessibleQuantity += storedArticle.getQuantity(); + + } + + return accessibleQuantity; + + } + +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,55 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.StorageMovementTask; +import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; +import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; +import com.franciaflex.magalie.services.exception.UnavailableArticleException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class FulfilKanbanService implements MagalieService { + + private static final Log log = LogFactory.getLog(FulfilKanbanService.class); + + protected MagalieServiceContext serviceContext; + + @Override + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public StorageMovementTask fulfilKanbanTask( + String articleBarcode, + MagalieUser magalieUser) throws InvalidMagalieBarcodeException, + UnavailableArticleException, + RequiredDriverLicenceException { + + if (log.isInfoEnabled()) { + log.info(magalieUser + " requested fulfil kanban with barcode " + articleBarcode); + } + + MagalieBarcodeService magalieBarcodeService = + serviceContext.newService(MagalieBarcodeService.class); + + Article article = magalieBarcodeService.getArticle(articleBarcode); + + double quantityInKanban = article.getQuantityInKanban(); + + ArticleStorageService articleStorageService = + serviceContext.newService(ArticleStorageService.class); + + + StorageMovementTask storageMovementTask = + articleStorageService.withdrawArticle( + magalieUser, + article, + quantityInKanban); + + return storageMovementTask; + + } +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,61 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; + +public class MagalieBarcodeService implements MagalieService { + + protected MagalieServiceContext serviceContext; + + protected static final String BARCODE_ELEMENTS_SEPARATOR = "_"; + + protected static final String ARTICLE_BARCODE_PREFIX = "ART"; + + @Override + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public Article getArticle(String articleBarcode) throws InvalidMagalieBarcodeException { + + Iterable<String> split = Splitter.on(BARCODE_ELEMENTS_SEPARATOR).split(articleBarcode); + + if (Iterables.size(split) != 2) { + + throw new InvalidMagalieBarcodeException("Unexpected barcode format, 2 parts expected"); + + } + + String prefix = Iterables.get(split, 0); + + if ( ! ARTICLE_BARCODE_PREFIX.equals(prefix)) { + + throw new InvalidMagalieBarcodeException( + "not an article barcode. expected prefix '" + + ARTICLE_BARCODE_PREFIX + ", '" + prefix + "' found."); + + } + + String articleCode = Iterables.get(split, 1); + + ArticleDao articleDao = serviceContext.getArticleDao(); + + Article article = articleDao.findByCode(articleCode); + + if (article == null) { + + throw new InvalidMagalieBarcodeException( + "no article with code " + articleCode); + + } + + return article; + + } + +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java (from rev 37, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,41 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import com.google.common.base.Preconditions; + +import java.util.List; + +public class MagalieUsersService implements MagalieService { + + protected MagalieServiceContext serviceContext; + + @Override + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public MagalieUser getMagalieUser(String login) { + + MagalieUserDao dao = serviceContext.getMagalieUserDao(); + + MagalieUser magalieUser = dao.findByLogin(login); + + Preconditions.checkArgument(magalieUser != null, "there is no user with login '" + login + "'"); + + return magalieUser; + + } + + public List<MagalieUser> getAllMagalieUsers() { + + MagalieUserDao dao = serviceContext.getMagalieUserDao(); + + List<MagalieUser> allMagalieUsers = dao.findAll(); + + return allMagalieUsers; + + } +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java (from rev 39, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,53 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.SiteError; +import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.services.MagalieReport; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; + +import java.util.Date; +import java.util.List; + +public class ReportService implements MagalieService { + + protected MagalieServiceContext serviceContext; + + @Override + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public MagalieReport getReport() { + + MagalieReport magalieReport = new MagalieReport(); + + Date now = serviceContext.getNow(); + + magalieReport.setReportDate(now); + + MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class); + + List<MagalieUser> allMagalieUsers = magalieUsersService.getAllMagalieUsers(); + + magalieReport.setAllMagalieUsers(allMagalieUsers); + + StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao(); + + List<StorageMovement> allStorageMovements = storageMovementDao.findAll(); + + magalieReport.setAllStorageMovements(allStorageMovements); + + SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class); + + List<SiteError> allSitesInError = siteErrorsService.getAllSiteErrors(); + + magalieReport.setAllSiteErrors(allSitesInError); + + return magalieReport; + + } + +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,66 @@ +package com.franciaflex.magalie.services.service; + +/* + * #%L + * MagaLiE :: Services + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2013 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.StorageMovementTask; +import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; +import com.franciaflex.magalie.services.exception.UnavailableArticleException; + +public class RequestedItemService implements MagalieService { + + protected MagalieServiceContext serviceContext; + + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException { + + ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class); + + ArticleDao articleDao = serviceContext.getArticleDao(); + + MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); + + MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre"); + + Article article1 = articleDao.findById("article1"); + + StorageMovementTask storageMovementTask = + articleStorageService.withdrawArticle( + alexandre, + article1, + 40. + ); + + return storageMovementTask; + + } +} Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java (from rev 39, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java) =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,75 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.SiteError; +import com.franciaflex.magalie.services.MagalieService; +import com.franciaflex.magalie.services.MagalieServiceContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Date; +import java.util.List; + +public class SiteErrorsService implements MagalieService { + + private static final Log log = LogFactory.getLog(SiteErrorsService.class); + + protected MagalieServiceContext serviceContext; + + @Override + public void setServiceContext(MagalieServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public void reportError(Site site, MagalieUser magalieUser) { + + SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); + + SiteError existingSiteError = siteErrorDao.findBySite(site); + + if (existingSiteError == null) { + + SiteError newSiteError = new SiteError(); + + newSiteError.setMagalieUser(magalieUser); + + newSiteError.setSite(site); + + Date reportDate = serviceContext.getNow(); + + newSiteError.setReportDate(reportDate); + + siteErrorDao.persist(newSiteError); + + } else { + + if (log.isInfoEnabled()) { + log.info("error on site " + site + " already reported, nothing saved"); + } + + } + + } + + public List<Site> getAllSitesInError() { + + SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); + + List<Site> allSitesInError = siteErrorDao.getAllSitesInError(); + + return allSitesInError; + + } + + public List<SiteError> getAllSiteErrors() { + + SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao(); + + List<SiteError> allSiteErrors = siteErrorDao.findAll(); + + return allSiteErrors; + + } +} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,118 +0,0 @@ -package com.franciaflex.magalie; - -import com.franciaflex.magalie.entity.AbstractJpaEntity; -import com.franciaflex.magalie.services.MagalieService; -import com.franciaflex.magalie.services.MagalieServiceContext; -import com.google.common.collect.Lists; -import org.junit.Rule; - -import javax.persistence.EntityManager; -import javax.persistence.EntityTransaction; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -public abstract class AbstractMagalieServiceTest { - - protected static final double DELTA = 0.0001; - - protected static MagalieFixtures fixtures; - - protected static MagalieApplicationConfig magalieApplicationConfig; - - protected JpaEntityManagerRule jpaEntityManagerRule; - - protected FakeMagalieServiceContext serviceContext; - - protected static MagalieApplicationConfig getMagalieApplicationConfig() { - - if (magalieApplicationConfig == null) { - - magalieApplicationConfig = new MagalieApplicationConfig(); - - } - - return magalieApplicationConfig; - - } - - public static MagalieFixtures getFixtures() { - - if (fixtures == null) { - - fixtures = new MagalieFixtures("fixtures"); - - } - - return fixtures; - } - - protected static <E> E fixture(String id) { - - return getFixtures().fixture(id); - - } - - protected MagalieServiceContext getServiceContext() { - - if (serviceContext == null) { - - FakeMagalieServiceContext serviceContext = new FakeMagalieServiceContext(); - - serviceContext.setMagalieApplicationConfig(getMagalieApplicationConfig()); - - EntityManager entityManager = getJpaEntityManagerRule().getEntityManager(); - - serviceContext.setEntityManager(entityManager); - - MagalieFixtures fixtures = getFixtures(); - - List<AbstractJpaEntity> toPersist = Lists.newArrayList(); - - toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("users")); - toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("sites")); - toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("articles")); - toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("storedArticles")); - - EntityTransaction transaction = entityManager.getTransaction(); - - transaction.begin(); - - for (AbstractJpaEntity entity : toPersist) { - - entityManager.persist(entity); - - } - - transaction.commit(); - - this.serviceContext = serviceContext; - - } - - return serviceContext; - - } - - protected <E extends MagalieService> E newService(Class<E> serviceClass) { - - return getServiceContext().newService(serviceClass); - - } - - @Rule - public JpaEntityManagerRule getJpaEntityManagerRule() { - - if (jpaEntityManagerRule == null) { - - Map<String, String> jpaParameters = getMagalieApplicationConfig().getJpaParameters(); - - jpaEntityManagerRule = new JpaEntityManagerRule("magaliePersistenceUnit", jpaParameters); - - } - - return jpaEntityManagerRule; - - } - -} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,29 +0,0 @@ -package com.franciaflex.magalie; - -import com.franciaflex.magalie.services.DefaultMagalieServiceContext; -import com.google.common.base.Preconditions; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Date; - -public class FakeMagalieServiceContext extends DefaultMagalieServiceContext { - - private static final Log log = LogFactory.getLog(FakeMagalieServiceContext.class); - - protected Date date; - - @Override - public Date getNow() { - Preconditions.checkState(date != null, "you must provide a date before running service test"); - if (log.isTraceEnabled()) { - log.trace("injecting fake date in service: " + date); - } - return date; - } - - public void setDate(Date date) { - this.date = date; - } - -} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,98 +0,0 @@ -package com.franciaflex.magalie; - -import com.google.common.base.Joiner; -import com.google.common.base.Preconditions; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.rules.TestRule; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import java.util.Date; -import java.util.Map; - -public class JpaEntityManagerRule implements TestRule { - - private static final Log log = LogFactory.getLog(JpaEntityManagerRule.class); - - protected String persistenceUnitName; - - protected String timestamp = String.valueOf(new Date().getTime()); - - protected EntityManager entityManager; - - protected boolean open = false; - - protected Map<String, String> jpaParameters; - - public JpaEntityManagerRule(String persistenceUnitName, Map<String, String> jpaParameters) { - this.persistenceUnitName = persistenceUnitName; - this.jpaParameters = jpaParameters; - } - - @Override - public Statement apply(final Statement base, Description description) { - - final String testClassName = description.getClassName(); - - final String testMethodName = description.getMethodName(); - - if (log.isDebugEnabled()) { - log.debug("will create entityManager for test class " + testClassName + " and method " + testMethodName); - } - - return new Statement() { - @Override - public void evaluate() throws Throwable { - createEntityManager(testClassName, testMethodName); - try { - base.evaluate(); - } finally { - closeEntityManager(); - } - } - }; - } - - protected void createEntityManager(String testClassName, String testMethodName) { - - String context = Joiner.on('_').join(testClassName, testMethodName, timestamp); - - EntityManagerFactory entityManagerFactory = JpaUtil.createTempEntityManagerFactory(persistenceUnitName, context, jpaParameters); - - entityManager = entityManagerFactory.createEntityManager(); - - if (log.isDebugEnabled()) { - log.debug("created entityManager " + entityManager); - } - - open = true; - - } - - public EntityManager getEntityManager() { - - Preconditions.checkState(open); - - return entityManager; - - } - - /** - * Override to tear down your specific external resource. - */ - protected void closeEntityManager() { - - if (log.isDebugEnabled()) { - log.debug("close entityManager " + entityManager); - } - - open = false; - - entityManager.close(); - - } - -} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,46 +0,0 @@ -package com.franciaflex.magalie; - -import com.esotericsoftware.yamlbeans.YamlException; -import com.esotericsoftware.yamlbeans.YamlReader; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.RequestedArticle; -import com.franciaflex.magalie.entity.Site; -import com.franciaflex.magalie.entity.StoredArticle; -import org.apache.commons.io.Charsets; -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -public class MagalieFixtures { - - protected Map<String, Object> fixtures; - - public MagalieFixtures(String fixturesName) { - String yamlPath = "/" + fixturesName + ".yaml"; - InputStream inputStream = MagalieFixtures.class.getResourceAsStream(yamlPath); - String yaml; - try { - yaml = IOUtils.toString(inputStream, Charsets.UTF_8); - } catch (IOException e) { - throw new IllegalArgumentException(fixturesName + " is not a valid fixtures set name", e); - } - YamlReader reader = new YamlReader(yaml); - reader.getConfig().setClassTag("article", Article.class); - reader.getConfig().setClassTag("stored-article", StoredArticle.class); - reader.getConfig().setClassTag("user", MagalieUser.class); - reader.getConfig().setClassTag("requested-article", RequestedArticle.class); - reader.getConfig().setClassTag("site", Site.class); - try { - fixtures = (Map<String, Object>) reader.read(); - } catch (YamlException e) { - throw new MagalieTechnicalException("unable to read yaml file", e); - } - } - - public <E> E fixture(String id) { - return (E) fixtures.get(id); - } -} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java (from rev 32, trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,117 @@ +package com.franciaflex.magalie.services; + +import com.franciaflex.magalie.MagalieApplicationConfig; +import com.franciaflex.magalie.persistence.entity.AbstractEntity; +import com.google.common.collect.Lists; +import org.junit.Rule; + +import javax.persistence.EntityManager; +import javax.persistence.EntityTransaction; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +public abstract class AbstractMagalieServiceTest { + + protected static final double DELTA = 0.0001; + + protected static MagalieFixtures fixtures; + + protected static MagalieApplicationConfig magalieApplicationConfig; + + protected JpaEntityManagerRule jpaEntityManagerRule; + + protected FakeMagalieServiceContext serviceContext; + + protected static MagalieApplicationConfig getMagalieApplicationConfig() { + + if (magalieApplicationConfig == null) { + + magalieApplicationConfig = new MagalieApplicationConfig(); + + } + + return magalieApplicationConfig; + + } + + public static MagalieFixtures getFixtures() { + + if (fixtures == null) { + + fixtures = new MagalieFixtures("fixtures"); + + } + + return fixtures; + } + + protected static <E> E fixture(String id) { + + return getFixtures().fixture(id); + + } + + protected MagalieServiceContext getServiceContext() { + + if (serviceContext == null) { + + FakeMagalieServiceContext serviceContext = new FakeMagalieServiceContext(); + + serviceContext.setMagalieApplicationConfig(getMagalieApplicationConfig()); + + EntityManager entityManager = getJpaEntityManagerRule().getEntityManager(); + + serviceContext.setEntityManager(entityManager); + + MagalieFixtures fixtures = getFixtures(); + + List<AbstractEntity> toPersist = Lists.newArrayList(); + + toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("users")); + toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("sites")); + toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("articles")); + toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("storedArticles")); + + EntityTransaction transaction = entityManager.getTransaction(); + + transaction.begin(); + + for (AbstractEntity entity : toPersist) { + + entityManager.persist(entity); + + } + + transaction.commit(); + + this.serviceContext = serviceContext; + + } + + return serviceContext; + + } + + protected <E extends MagalieService> E newService(Class<E> serviceClass) { + + return getServiceContext().newService(serviceClass); + + } + + @Rule + public JpaEntityManagerRule getJpaEntityManagerRule() { + + if (jpaEntityManagerRule == null) { + + Map<String, String> jpaParameters = getMagalieApplicationConfig().getJpaParameters(); + + jpaEntityManagerRule = new JpaEntityManagerRule("magaliePersistenceUnit", jpaParameters); + + } + + return jpaEntityManagerRule; + + } + +} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,229 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.AbstractMagalieServiceTest; -import com.franciaflex.magalie.entity.Article; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.entity.Site; -import com.franciaflex.magalie.entity.StorageMovement; -import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; -import com.franciaflex.magalie.services.exception.UnavailableArticleException; -import com.google.common.collect.Iterables; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.text.ParseException; -import java.util.Date; - -public class ArticleStorageServiceTest extends AbstractMagalieServiceTest { - - private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class); - - protected ArticleStorageService service; - - @Before - public void setUp() throws ParseException { - - service = newService(ArticleStorageService.class); - - serviceContext.setDate(new Date(1363948427576l)); - - } - - @Test - public void testThrowUnavailableArticle() throws Exception { - - MagalieUser basile = fixture("basile"); - Article article = fixture("article1"); - StorageMovementTask storageMovementTask; - - try { - storageMovementTask = service.withdrawArticle(basile, article, 100.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.assertEquals(70., e.getAvailableQuantity(), DELTA); - } - } - - @Test - public void testThrowRequiredDriverLicenceException() throws Exception { - - MagalieUser basile = fixture("basile"); - Article article = fixture("article1"); - StorageMovementTask storageMovementTask; - - try { - storageMovementTask = service.withdrawArticle(basile, article, 70.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - Assert.fail(); - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.assertEquals(50., e.getAccessibleQuantity(), DELTA); - } - } - - @Test - public void testWithdrawArticleWithoutDriverLicense() throws Exception { - - MagalieUser basile = fixture("basile"); - Article article = fixture("article1"); - StorageMovementTask storageMovementTask = null; - - try { - storageMovementTask = service.withdrawArticle(basile, article, 50.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } - - Assert.assertEquals(1, storageMovementTask.getSites().size()); - } - - @Test - public void testWithdrawArticleWithDriverLicense() throws Exception { - - MagalieUser alexandre = fixture("alexandre"); - Article article = fixture("article1"); - StorageMovementTask storageMovementTask = null; - - try { - storageMovementTask = service.withdrawArticle(alexandre, article, 50.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } - - Assert.assertEquals(2, storageMovementTask.getSites().size()); - StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null); - Assert.assertEquals(-20., site1.getQuantity(), DELTA); - StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null); - Assert.assertEquals(-30., site2.getQuantity(), DELTA); - } - - @Test - public void testWithdrawArticleConsiderAlreadyRemovedItem() throws Exception { - - MagalieUser alexandre = fixture("alexandre"); - MagalieUser cathy = fixture("cathy"); - - Article article = fixture("article1"); - - StorageMovementTask storageMovementTask = null; - - try { - storageMovementTask = service.withdrawArticle(alexandre, article, 30.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - Assert.assertEquals(2, storageMovementTask.getSites().size()); - StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null); - Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA); - Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode()); - StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null); - Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA); - Assert.assertEquals("A1", storageMovement2.getSite().getLocationCode()); - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } - - try { - storageMovementTask = service.withdrawArticle(cathy, article, 30.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - Assert.assertEquals(1, storageMovementTask.getSites().size()); - StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null); - Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA); - Assert.assertEquals("A1", storageMovement.getSite().getLocationCode()); - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } - } - - @Test - public void testWithdrawArticleConsiderSitesInError() throws Exception { - - MagalieUser alexandre = fixture("alexandre"); - MagalieUser cathy = fixture("cathy"); - - Article article = fixture("article1"); - - // report site 2 in error - Site site2 = fixture("site2"); - SiteErrorsService siteErrorsService = newService(SiteErrorsService.class); - siteErrorsService.reportError(site2, alexandre); - - try { - StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.); - if (log.isDebugEnabled()) { - log.debug("storageMovementTask = " + storageMovementTask); - } - Assert.assertEquals(1, storageMovementTask.getSites().size()); - StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null); - Assert.assertNotEquals( - "site2 must not be returned because it was reported in error", - site2.getId(), - storageMovement.getSite().getId()); - } catch (RequiredDriverLicenceException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } catch (UnavailableArticleException e) { - if (log.isDebugEnabled()) { - log.debug("exception raised = " + e); - } - Assert.fail(); - } - } - - -} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java (from rev 37, trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,28 @@ +package com.franciaflex.magalie.services; + +import com.google.common.base.Preconditions; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Date; + +public class FakeMagalieServiceContext extends DefaultMagalieServiceContext { + + private static final Log log = LogFactory.getLog(FakeMagalieServiceContext.class); + + protected Date date; + + @Override + public Date getNow() { + Preconditions.checkState(date != null, "you must provide a date before running service test"); + if (log.isTraceEnabled()) { + log.trace("injecting fake date in service: " + date); + } + return date; + } + + public void setDate(Date date) { + this.date = date; + } + +} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java (from rev 32, trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,99 @@ +package com.franciaflex.magalie.services; + +import com.franciaflex.magalie.persistence.JpaUtil; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import java.util.Date; +import java.util.Map; + +public class JpaEntityManagerRule implements TestRule { + + private static final Log log = LogFactory.getLog(JpaEntityManagerRule.class); + + protected String persistenceUnitName; + + protected String timestamp = String.valueOf(new Date().getTime()); + + protected EntityManager entityManager; + + protected boolean open = false; + + protected Map<String, String> jpaParameters; + + public JpaEntityManagerRule(String persistenceUnitName, Map<String, String> jpaParameters) { + this.persistenceUnitName = persistenceUnitName; + this.jpaParameters = jpaParameters; + } + + @Override + public Statement apply(final Statement base, Description description) { + + final String testClassName = description.getClassName(); + + final String testMethodName = description.getMethodName(); + + if (log.isDebugEnabled()) { + log.debug("will create entityManager for test class " + testClassName + " and method " + testMethodName); + } + + return new Statement() { + @Override + public void evaluate() throws Throwable { + createEntityManager(testClassName, testMethodName); + try { + base.evaluate(); + } finally { + closeEntityManager(); + } + } + }; + } + + protected void createEntityManager(String testClassName, String testMethodName) { + + String context = Joiner.on('_').join(testClassName, testMethodName, timestamp); + + EntityManagerFactory entityManagerFactory = JpaUtil.createTempEntityManagerFactory(persistenceUnitName, context, jpaParameters); + + entityManager = entityManagerFactory.createEntityManager(); + + if (log.isDebugEnabled()) { + log.debug("created entityManager " + entityManager); + } + + open = true; + + } + + public EntityManager getEntityManager() { + + Preconditions.checkState(open); + + return entityManager; + + } + + /** + * Override to tear down your specific external resource. + */ + protected void closeEntityManager() { + + if (log.isDebugEnabled()) { + log.debug("close entityManager " + entityManager); + } + + open = false; + + entityManager.close(); + + } + +} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java (from rev 31, trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,47 @@ +package com.franciaflex.magalie.services; + +import com.esotericsoftware.yamlbeans.YamlException; +import com.esotericsoftware.yamlbeans.YamlReader; +import com.franciaflex.magalie.MagalieTechnicalException; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.RequestedArticle; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.StoredArticle; +import org.apache.commons.io.Charsets; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +public class MagalieFixtures { + + protected Map<String, Object> fixtures; + + public MagalieFixtures(String fixturesName) { + String yamlPath = "/" + fixturesName + ".yaml"; + InputStream inputStream = MagalieFixtures.class.getResourceAsStream(yamlPath); + String yaml; + try { + yaml = IOUtils.toString(inputStream, Charsets.UTF_8); + } catch (IOException e) { + throw new IllegalArgumentException(fixturesName + " is not a valid fixtures set name", e); + } + YamlReader reader = new YamlReader(yaml); + reader.getConfig().setClassTag("article", Article.class); + reader.getConfig().setClassTag("stored-article", StoredArticle.class); + reader.getConfig().setClassTag("user", MagalieUser.class); + reader.getConfig().setClassTag("requested-article", RequestedArticle.class); + reader.getConfig().setClassTag("site", Site.class); + try { + fixtures = (Map<String, Object>) reader.read(); + } catch (YamlException e) { + throw new MagalieTechnicalException("unable to read yaml file", e); + } + } + + public <E> E fixture(String id) { + return (E) fixtures.get(id); + } +} Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,32 +0,0 @@ -package com.franciaflex.magalie.services; - -import com.franciaflex.magalie.AbstractMagalieServiceTest; -import com.google.common.collect.Sets; -import org.junit.Test; - -import java.util.Comparator; -import java.util.Set; - -public class RequestedItemServiceTest extends AbstractMagalieServiceTest { - - @Test - public void testGetWithdrawTask() throws Exception { - - getServiceContext(); - - Set<Double> doubles = Sets.newTreeSet(new Comparator<Double>() { - @Override - public int compare(Double o1, Double o2) { - return Double.compare(o1, o2); - } - }); - - doubles.add(3.); - doubles.add(2.); - doubles.add(4.); - doubles.add(1.); - doubles.add(7.); - - System.out.println(doubles); - } -} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java (from rev 36, trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,230 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.services.AbstractMagalieServiceTest; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Site; +import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.services.StorageMovementTask; +import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; +import com.franciaflex.magalie.services.exception.UnavailableArticleException; +import com.google.common.collect.Iterables; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.text.ParseException; +import java.util.Date; + +public class ArticleStorageServiceTest extends AbstractMagalieServiceTest { + + private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class); + + protected ArticleStorageService service; + + @Before + public void setUp() throws ParseException { + + service = newService(ArticleStorageService.class); + + serviceContext.setDate(new Date(1363948427576l)); + + } + + @Test + public void testThrowUnavailableArticle() throws Exception { + + MagalieUser basile = fixture("basile"); + Article article = fixture("article1"); + StorageMovementTask storageMovementTask; + + try { + storageMovementTask = service.withdrawArticle(basile, article, 100.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.assertEquals(70., e.getAvailableQuantity(), DELTA); + } + } + + @Test + public void testThrowRequiredDriverLicenceException() throws Exception { + + MagalieUser basile = fixture("basile"); + Article article = fixture("article1"); + StorageMovementTask storageMovementTask; + + try { + storageMovementTask = service.withdrawArticle(basile, article, 70.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + Assert.fail(); + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.assertEquals(50., e.getAccessibleQuantity(), DELTA); + } + } + + @Test + public void testWithdrawArticleWithoutDriverLicense() throws Exception { + + MagalieUser basile = fixture("basile"); + Article article = fixture("article1"); + StorageMovementTask storageMovementTask = null; + + try { + storageMovementTask = service.withdrawArticle(basile, article, 50.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } + + Assert.assertEquals(1, storageMovementTask.getSites().size()); + } + + @Test + public void testWithdrawArticleWithDriverLicense() throws Exception { + + MagalieUser alexandre = fixture("alexandre"); + Article article = fixture("article1"); + StorageMovementTask storageMovementTask = null; + + try { + storageMovementTask = service.withdrawArticle(alexandre, article, 50.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } + + Assert.assertEquals(2, storageMovementTask.getSites().size()); + StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null); + Assert.assertEquals(-20., site1.getQuantity(), DELTA); + StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null); + Assert.assertEquals(-30., site2.getQuantity(), DELTA); + } + + @Test + public void testWithdrawArticleConsiderAlreadyRemovedItem() throws Exception { + + MagalieUser alexandre = fixture("alexandre"); + MagalieUser cathy = fixture("cathy"); + + Article article = fixture("article1"); + + StorageMovementTask storageMovementTask = null; + + try { + storageMovementTask = service.withdrawArticle(alexandre, article, 30.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + Assert.assertEquals(2, storageMovementTask.getSites().size()); + StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null); + Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA); + Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode()); + StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null); + Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA); + Assert.assertEquals("A1", storageMovement2.getSite().getLocationCode()); + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } + + try { + storageMovementTask = service.withdrawArticle(cathy, article, 30.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + Assert.assertEquals(1, storageMovementTask.getSites().size()); + StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null); + Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA); + Assert.assertEquals("A1", storageMovement.getSite().getLocationCode()); + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } + } + + @Test + public void testWithdrawArticleConsiderSitesInError() throws Exception { + + MagalieUser alexandre = fixture("alexandre"); + MagalieUser cathy = fixture("cathy"); + + Article article = fixture("article1"); + + // report site 2 in error + Site site2 = fixture("site2"); + SiteErrorsService siteErrorsService = newService(SiteErrorsService.class); + siteErrorsService.reportError(site2, alexandre); + + try { + StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.); + if (log.isDebugEnabled()) { + log.debug("storageMovementTask = " + storageMovementTask); + } + Assert.assertEquals(1, storageMovementTask.getSites().size()); + StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null); + Assert.assertNotEquals( + "site2 must not be returned because it was reported in error", + site2.getId(), + storageMovement.getSite().getId()); + } catch (RequiredDriverLicenceException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } catch (UnavailableArticleException e) { + if (log.isDebugEnabled()) { + log.debug("exception raised = " + e); + } + Assert.fail(); + } + } + + +} Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java (from rev 36, trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java) =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java 2013-03-26 10:18:13 UTC (rev 40) @@ -0,0 +1,32 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.services.AbstractMagalieServiceTest; +import com.google.common.collect.Sets; +import org.junit.Test; + +import java.util.Comparator; +import java.util.Set; + +public class RequestedItemServiceTest extends AbstractMagalieServiceTest { + + @Test + public void testGetWithdrawTask() throws Exception { + + getServiceContext(); + + Set<Double> doubles = Sets.newTreeSet(new Comparator<Double>() { + @Override + public int compare(Double o1, Double o2) { + return Double.compare(o1, o2); + } + }); + + doubles.add(3.); + doubles.add(2.); + doubles.add(4.); + doubles.add(1.); + doubles.add(7.); + + System.out.println(doubles); + } +} Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-26 10:18:13 UTC (rev 40) @@ -24,11 +24,11 @@ */ import com.franciaflex.magalie.MagalieApplicationConfig; -import com.franciaflex.magalie.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.services.DefaultMagalieServiceContext; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; -import com.franciaflex.magalie.services.MagalieUsersService; +import com.franciaflex.magalie.services.service.MagalieUsersService; import com.google.common.base.Preconditions; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,6 +1,6 @@ package com.franciaflex.magalie.web; -import com.franciaflex.magalie.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.MagalieUser; import java.io.Serializable; Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,7 +1,7 @@ package com.franciaflex.magalie.web.action; -import com.franciaflex.magalie.entity.MagalieUser; -import com.franciaflex.magalie.services.FulfilKanbanService; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.services.service.FulfilKanbanService; import com.franciaflex.magalie.services.StorageMovementTask; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-26 10:18:13 UTC (rev 40) @@ -1,7 +1,7 @@ package com.franciaflex.magalie.web.action; import com.franciaflex.magalie.services.MagalieReport; -import com.franciaflex.magalie.services.ReportService; +import com.franciaflex.magalie.services.service.ReportService; import com.franciaflex.magalie.web.MagalieActionSupport; public class ReportAction extends MagalieActionSupport { Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-25 17:06:46 UTC (rev 39) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-26 10:18:13 UTC (rev 40) @@ -23,7 +23,7 @@ * #L% */ -import com.franciaflex.magalie.services.RequestedItemService; +import com.franciaflex.magalie.services.service.RequestedItemService; import com.franciaflex.magalie.services.StorageMovementTask; import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; import com.franciaflex.magalie.services.exception.UnavailableArticleException;