diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/OnTransaction.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/IOnTransaction.java similarity index 80% rename from navalplanner-business/src/main/java/org/navalplanner/business/common/OnTransaction.java rename to navalplanner-business/src/main/java/org/navalplanner/business/common/IOnTransaction.java index 8312799f2..04091d40d 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/OnTransaction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/IOnTransaction.java @@ -4,6 +4,6 @@ package org.navalplanner.business.common; * Represents some work done inside a transaction
* @author oscar @param */ -public interface OnTransaction { +public interface IOnTransaction { public T execute(); } \ No newline at end of file diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java index ff3dba850..3b8bce09f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java @@ -2,7 +2,7 @@ package org.navalplanner.business.orders.services; import java.util.List; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.entities.Order; @@ -23,6 +23,6 @@ public interface IOrderService { Order find(Long workerId) throws InstanceNotFoundException; - public T onTransaction(OnTransaction onTransaction); + public T onTransaction(IOnTransaction onTransaction); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java index 7a2b19181..b808d2862 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java @@ -2,7 +2,7 @@ package org.navalplanner.business.orders.services; import java.util.List; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.daos.IOrderDAO; @@ -63,7 +63,7 @@ public class OrderService implements IOrderService { } @Override - public T onTransaction(OnTransaction onTransaction) { + public T onTransaction(IOnTransaction onTransaction) { return onTransaction.execute(); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java index 3bb8f7d5d..af311b8bb 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java @@ -11,8 +11,8 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.entities.ICriterionType; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -31,10 +31,10 @@ public class CriterionsBootstrap implements ICriterionsBootstrap { private static final Log LOG = LogFactory.getLog(CriterionsBootstrap.class); @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; @Autowired private List providers; diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java index 829cc8d54..f07361dce 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java @@ -7,7 +7,7 @@ import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.hibernate.validator.NotEmpty; import org.hibernate.validator.NotNull; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; /** diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java index 689a6c488..fdd04f617 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java @@ -4,7 +4,7 @@ import java.util.Set; import org.apache.commons.lang.builder.EqualsBuilder; import org.hibernate.validator.NotEmpty; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -22,7 +22,7 @@ public class CriterionType implements ICriterionType { private long version; @Autowired - CriterionTypeService criterionTypeService; + ICriterionTypeService criterionTypeService; @NotEmpty private String name; diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java index 4ac8b232d..68f5a560d 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java @@ -39,13 +39,13 @@ public abstract class Resource { public abstract String getDescription(); - private interface Predicate { + private interface IPredicate { public boolean accepts(CriterionSatisfaction satisfaction); } public class Query { - private List predicates = new ArrayList(); + private List predicates = new ArrayList(); private boolean sort = false; private Query() { @@ -53,7 +53,7 @@ public abstract class Resource { } public Query from(final ICriterionType type) { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { @@ -62,7 +62,7 @@ public abstract class Resource { }); } - private Query withNewPredicate(Predicate newPredicate) { + private Query withNewPredicate(IPredicate newPredicate) { predicates.add(newPredicate); return this; } @@ -76,7 +76,7 @@ public abstract class Resource { } public Query enforcedInAll(final Interval interval) { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { @@ -86,7 +86,7 @@ public abstract class Resource { } public Query overlapsWith(final Interval interval) { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { @@ -96,7 +96,7 @@ public abstract class Resource { } public Query from(final ICriterion criterion) { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { @@ -123,7 +123,7 @@ public abstract class Resource { private boolean isAcceptedByAllPredicates( CriterionSatisfaction criterionSatisfaction) { - for (Predicate predicate : predicates) { + for (IPredicate predicate : predicates) { if (!predicate.accepts(criterionSatisfaction)) return false; } @@ -131,7 +131,7 @@ public abstract class Resource { } public Query current() { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { @@ -153,7 +153,7 @@ public abstract class Resource { } public Query oneOf(final Collection> types) { - return withNewPredicate(new Predicate() { + return withNewPredicate(new IPredicate() { @Override public boolean accepts(CriterionSatisfaction satisfaction) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionService.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionService.java similarity index 92% rename from navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionService.java rename to navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionService.java index 2bdb31668..e423e6d78 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionService.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Criterion; @@ -18,7 +18,7 @@ import org.navalplanner.business.resources.entities.Resource; * Services for {@link Criterion}
* @author Óscar González Fernández */ -public interface CriterionService { +public interface ICriterionService { List list(); @@ -57,6 +57,6 @@ public interface CriterionService { Criterion load(Criterion criterion); - T onTransaction(OnTransaction onTransaction); + T onTransaction(IOnTransaction onTransaction); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionTypeService.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionTypeService.java similarity index 95% rename from navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionTypeService.java rename to navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionTypeService.java index 043375b76..06cb5bb04 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionTypeService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ICriterionTypeService.java @@ -10,7 +10,7 @@ import org.navalplanner.business.resources.entities.CriterionType; * Services for {@link CriterionType}
* @author Diego Pino García */ -public interface CriterionTypeService { +public interface ICriterionTypeService { void createIfNotExists(CriterionType criterionType) throws ValidationException; diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ResourceService.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/IResourceService.java similarity index 98% rename from navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ResourceService.java rename to navalplanner-business/src/main/java/org/navalplanner/business/resources/services/IResourceService.java index afb553d2e..8febbb7fe 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/ResourceService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/IResourceService.java @@ -13,7 +13,7 @@ import org.navalplanner.business.resources.entities.Worker; * Interface for the resource management service. * @author Fernando Bellas Permuy */ -public interface ResourceService { +public interface IResourceService { /** * It updates or inserts the resource passed as a parameter. If the resource diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionServiceImpl.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionServiceImpl.java index 6e7958955..5209d73f2 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionServiceImpl.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionServiceImpl.java @@ -7,7 +7,7 @@ import java.util.List; import org.apache.commons.lang.Validate; import org.hibernate.validator.InvalidValue; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.daos.ICriterionDAO; @@ -20,9 +20,9 @@ import org.navalplanner.business.resources.entities.ICriterionOnData; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.entities.Interval; import org.navalplanner.business.resources.entities.Resource; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; +import org.navalplanner.business.resources.services.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.ApplicationContext; @@ -31,7 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** - * Implementation of {@link CriterionService} using {@link CriterionDAO}
+ * Implementation of {@link ICriterionService} using {@link CriterionDAO}
* @author Óscar González Fernández * @author Fernando Bellas Permuy * @author Diego Pino García @@ -39,16 +39,16 @@ import org.springframework.transaction.annotation.Transactional; @Service @Scope(BeanDefinition.SCOPE_SINGLETON) @Transactional -public class CriterionServiceImpl implements CriterionService { +public class CriterionServiceImpl implements ICriterionService { @Autowired private ICriterionDAO criterionDAO; @Autowired - private ResourceService resourceService; + private IResourceService resourceService; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; public boolean exists(Criterion criterion) { return criterionDAO.exists(criterion.getId()) @@ -159,7 +159,7 @@ public class CriterionServiceImpl implements CriterionService { @Override public ICriterionOnData empower(final ICriterion criterion) { - final CriterionService criterionService = getProxifiedCriterionService(); + final ICriterionService criterionService = getProxifiedCriterionService(); return new ICriterionOnData() { @Override public boolean isSatisfiedBy(Resource resource) { @@ -191,9 +191,9 @@ public class CriterionServiceImpl implements CriterionService { // this is a hack to avoid using the this variable in empower method. The // this instance is not proxified because spring uses an transparent proxy, // so it doesn't open the transacion - private CriterionService getProxifiedCriterionService() { - return (CriterionService) applicationContext.getBeansOfType( - CriterionService.class).values().iterator().next(); + private ICriterionService getProxifiedCriterionService() { + return (ICriterionService) applicationContext.getBeansOfType( + ICriterionService.class).values().iterator().next(); } @Override @@ -232,7 +232,7 @@ public class CriterionServiceImpl implements CriterionService { } @Transactional(readOnly = true) - public T onTransaction(OnTransaction onTransaction) { + public T onTransaction(IOnTransaction onTransaction) { return onTransaction.execute(); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionTypeServiceImpl.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionTypeServiceImpl.java index c007b3d2c..0bbaba098 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionTypeServiceImpl.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/CriterionTypeServiceImpl.java @@ -8,18 +8,18 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.daos.ICriterionTypeDAO; import org.navalplanner.business.resources.daos.impl.CriterionTypeDAO; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; /** - * Implementation of {@link CriterionTypeService} using {@link CriterionTypeDAO}
+ * Implementation of {@link ICriterionTypeService} using {@link CriterionTypeDAO}
* @author Diego Pino García */ @Transactional @Component -public class CriterionTypeServiceImpl implements CriterionTypeService { +public class CriterionTypeServiceImpl implements ICriterionTypeService { @Autowired private ICriterionTypeDAO criterionTypeDAO; diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/ResourceServiceImpl.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/ResourceServiceImpl.java index 60a7c8f79..8a093b098 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/ResourceServiceImpl.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/impl/ResourceServiceImpl.java @@ -11,8 +11,8 @@ import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.entities.ICriterion; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionTypeService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionTypeService; +import org.navalplanner.business.resources.services.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -27,7 +27,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @Scope(BeanDefinition.SCOPE_SINGLETON) @Transactional -public class ResourceServiceImpl implements ResourceService { +public class ResourceServiceImpl implements IResourceService { @Autowired private IResourceDAO resourceDao; @@ -36,7 +36,7 @@ public class ResourceServiceImpl implements ResourceService { private ICriterionsBootstrap criterionsBootstrap; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; @Transactional diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java index 3d9450087..589b2265b 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java @@ -16,7 +16,7 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.Test; import org.junit.runner.RunWith; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.entities.HoursGroup; @@ -30,7 +30,7 @@ import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.business.planner.services.ITaskElementService; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.resources.services.ICriterionService; import org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.NotTransactional; @@ -65,7 +65,7 @@ public class OrderServiceTest { private ITaskElementService taskElementService; @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Autowired private SessionFactory sessionFactory; @@ -167,7 +167,7 @@ public class OrderServiceTest { } orderService.save(order); - orderService.onTransaction(new OnTransaction() { + orderService.onTransaction(new IOnTransaction() { @Override public Void execute() { @@ -228,7 +228,7 @@ public class OrderServiceTest { hoursGroup.setWorkingHours(3); leaf.addHoursGroup(hoursGroup); orderService.save(order); - orderService.onTransaction(new OnTransaction() { + orderService.onTransaction(new IOnTransaction() { @Override public Void execute() { @@ -281,7 +281,7 @@ public class OrderServiceTest { orderService.save(order); - orderService.onTransaction(new OnTransaction() { + orderService.onTransaction(new IOnTransaction() { @Override public Void execute() { diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java.orig b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java.orig new file mode 100644 index 000000000..3d9450087 --- /dev/null +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java.orig @@ -0,0 +1,327 @@ +package org.navalplanner.business.test.orders.services; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; +import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; + +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; +import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.orders.entities.HoursGroup; +import org.navalplanner.business.orders.entities.Order; +import org.navalplanner.business.orders.entities.OrderElement; +import org.navalplanner.business.orders.entities.OrderLine; +import org.navalplanner.business.orders.entities.OrderLineGroup; +import org.navalplanner.business.orders.services.IOrderService; +import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.planner.entities.TaskElement; +import org.navalplanner.business.planner.services.ITaskElementService; +import org.navalplanner.business.resources.entities.Criterion; +import org.navalplanner.business.resources.entities.CriterionType; +import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.NotTransactional; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +/** + * Tests for {@link Order}.
+ * @author Óscar González Fernández + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, + BUSINESS_SPRING_CONFIG_TEST_FILE }) +@Transactional +public class OrderServiceTest { + + private static Order createValidOrder() { + Order order = new Order(); + order.setDescription("description"); + order.setCustomer("blabla"); + order.setInitDate(CriterionSatisfactionDAOTest.year(2000)); + order.setName("name"); + order.setResponsible("responsible"); + return order; + } + + @Autowired + private IOrderService orderService; + + @Autowired + private ITaskElementService taskElementService; + + @Autowired + private CriterionService criterionService; + + @Autowired + private SessionFactory sessionFactory; + + private Session getSession() { + return sessionFactory.getCurrentSession(); + } + + @Test + public void testCreation() throws ValidationException { + Order order = createValidOrder(); + orderService.save(order); + assertTrue(orderService.exists(order)); + } + + @Test + public void testListing() throws Exception { + List list = orderService.getOrders(); + orderService.save(createValidOrder()); + assertThat(orderService.getOrders().size(), equalTo(list.size() + 1)); + } + + @Test + public void testRemove() throws Exception { + Order order = createValidOrder(); + orderService.save(order); + assertTrue(orderService.exists(order)); + orderService.remove(order); + assertFalse(orderService.exists(order)); + } + + @Test + public void removingOrderWithAssociatedTasksDeletesThem() + throws ValidationException, InstanceNotFoundException { + Order order = createValidOrder(); + OrderLine orderLine = new OrderLine(); + orderLine.setName("bla"); + orderLine.setCode("00000000"); + orderLine.setWorkHours(10); + order.add(orderLine); + orderService.save(order); + taskElementService.convertToScheduleAndSave(order); + getSession().flush(); + getSession().evict(order); + Order reloaded = orderService.find(order.getId()); + OrderElement e = reloaded.getOrderElements().iterator().next(); + assertThat(e.getTaskElements().size(), equalTo(1)); + Set taskElements = e.getTaskElements(); + for (TaskElement t : taskElements) { + if (t instanceof Task) { + Task task = (Task) t; + task.getHoursGroup().dontPoseAsTransientObjectAnymore(); + } + } + orderService.remove(reloaded); + assertFalse(orderService.exists(reloaded)); + } + + @Test(expected = ValidationException.class) + public void shouldSendValidationExceptionIfEndDateIsBeforeThanStartingDate() + throws ValidationException { + Order order = createValidOrder(); + order.setEndDate(CriterionSatisfactionDAOTest.year(0)); + orderService.save(order); + } + + @Test + public void testFind() throws Exception { + Order order = createValidOrder(); + orderService.save(order); + assertThat(orderService.find(order.getId()), notNullValue()); + } + + @Test + @NotTransactional + public void testOrderPreserved() throws ValidationException, + InstanceNotFoundException { + final Order order = createValidOrder(); + final OrderElement[] containers = new OrderLineGroup[10]; + for (int i = 0; i < containers.length; i++) { + containers[i] = new OrderLineGroup(); + containers[i].setName("bla"); + containers[i].setCode("000000000"); + order.add(containers[i]); + } + OrderLineGroup container = (OrderLineGroup) containers[0]; + + final OrderElement[] orderElements = new OrderElement[10]; + for (int i = 0; i < orderElements.length; i++) { + OrderLine leaf = createValidLeaf("bla"); + orderElements[i] = leaf; + container.add(leaf); + } + + for (int i = 1; i < containers.length; i++) { + OrderLineGroup orderLineGroup = (OrderLineGroup) containers[i]; + OrderLine leaf = createValidLeaf("foo"); + orderLineGroup.add(leaf); + } + + orderService.save(order); + orderService.onTransaction(new OnTransaction() { + + @Override + public Void execute() { + try { + Order reloaded = orderService.find(order.getId()); + List elements = reloaded.getOrderElements(); + for (int i = 0; i < containers.length; i++) { + assertThat(elements.get(i).getId(), + equalTo(containers[i].getId())); + } + OrderLineGroup container = (OrderLineGroup) reloaded + .getOrderElements().iterator().next(); + List children = container.getChildren(); + for (int i = 0; i < orderElements.length; i++) { + assertThat(children.get(i).getId(), + equalTo(orderElements[i].getId())); + } + for (int i = 1; i < containers.length; i++) { + OrderLineGroup orderLineGroup = (OrderLineGroup) containers[i]; + assertThat(orderLineGroup.getChildren().size(), + equalTo(1)); + } + return null; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + }); + orderService.remove(order); + } + + private OrderLine createValidLeaf(String parameter) { + OrderLine result = new OrderLine(); + result.setName(parameter); + result.setCode("000000000"); + + HoursGroup hoursGroup = HoursGroup.create(result); + hoursGroup.setWorkingHours(0); + result.addHoursGroup(hoursGroup); + + return result; + } + + @Test + @NotTransactional + public void testAddingOrderElement() throws Exception { + final Order order = createValidOrder(); + OrderLineGroup container = new OrderLineGroup(); + container.setName("bla"); + container.setCode("000000000"); + OrderLine leaf = new OrderLine(); + leaf.setName("leaf"); + leaf.setCode("000000000"); + container.add(leaf); + order.add(container); + HoursGroup hoursGroup = HoursGroup.create(leaf); + hoursGroup.setWorkingHours(3); + leaf.addHoursGroup(hoursGroup); + orderService.save(order); + orderService.onTransaction(new OnTransaction() { + + @Override + public Void execute() { + try { + Order reloaded = orderService.find(order.getId()); + assertFalse(order == reloaded); + assertThat(reloaded.getOrderElements().size(), equalTo(1)); + OrderLineGroup containerReloaded = (OrderLineGroup) reloaded + .getOrderElements().get(0); + assertThat(containerReloaded.getHoursGroups().size(), + equalTo(1)); + assertThat(containerReloaded.getChildren().size(), + equalTo(1)); + OrderElement leaf = containerReloaded.getChildren().get(0); + assertThat(leaf.getHoursGroups().size(), equalTo(1)); + orderService.remove(order); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + return null; + } + }); + } + + @Test + @NotTransactional + public void testManyToManyHoursGroupCriterionMapping() throws Exception { + final Order order = createValidOrder(); + + OrderLine orderLine = new OrderLine(); + orderLine.setName("Order element"); + orderLine.setCode("000000000"); + order.add(orderLine); + + HoursGroup hoursGroup = HoursGroup.create(orderLine); + hoursGroup.setWorkingHours(10); + HoursGroup hoursGroup2 = HoursGroup.create(orderLine); + hoursGroup2.setWorkingHours(5); + + orderLine.addHoursGroup(hoursGroup); + orderLine.addHoursGroup(hoursGroup2); + + CriterionType criterionType = new CriterionType("test"); + Criterion criterion = new Criterion("Test" + UUID.randomUUID(), + criterionType); + criterionService.save(criterion); + + hoursGroup.addCriterion(criterion); + hoursGroup2.addCriterion(criterion); + + orderService.save(order); + + orderService.onTransaction(new OnTransaction() { + + @Override + public Void execute() { + try { + Order reloaded = orderService.find(order.getId()); + + List orderElements = reloaded + .getOrderElements(); + assertThat(orderElements.size(), equalTo(1)); + + List hoursGroups = orderElements.get(0) + .getHoursGroups(); + assertThat(hoursGroups.size(), equalTo(2)); + + Set criterions = hoursGroups.get(0) + .getCriterions(); + assertThat(criterions.size(), equalTo(1)); + + Criterion criterion = criterions.iterator().next(); + + assertThat(criterion.getType().getName(), equalTo("test")); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + return null; + } + }); + + } + + @Test(expected = ValidationException.class) + public void testAtLeastOneHoursGroup() throws Exception { + Order order = createValidOrder(); + + OrderLine orderLine = new OrderLine(); + orderLine.setName("foo"); + orderLine.setCode("000000000"); + order.add(orderLine); + + orderService.save(order); + } + +} diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/bootstrap/CriterionsBootstrapTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/bootstrap/CriterionsBootstrapTest.java index fb1867a16..77ce938f0 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/bootstrap/CriterionsBootstrapTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/bootstrap/CriterionsBootstrapTest.java @@ -8,7 +8,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.navalplanner.business.resources.bootstrap.ICriterionsBootstrap; import org.navalplanner.business.resources.entities.WorkingRelationship; -import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.resources.services.ICriterionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -24,7 +24,7 @@ public class CriterionsBootstrapTest { private ICriterionsBootstrap criterionsBootstrap; @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Test public void testBootstrap() throws Exception { diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java index a2c2f861a..07281da88 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java @@ -16,7 +16,7 @@ import org.hibernate.validator.InvalidStateException; import org.junit.Assume; import org.junit.Test; import org.junit.runner.RunWith; -import org.navalplanner.business.common.OnTransaction; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Criterion; @@ -29,9 +29,9 @@ import org.navalplanner.business.resources.entities.Interval; import org.navalplanner.business.resources.entities.PredefinedCriterionTypes; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; +import org.navalplanner.business.resources.services.IResourceService; import org.navalplanner.business.test.resources.daos.CriterionDAOTest; import org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest; import org.navalplanner.business.test.resources.entities.ResourceTest; @@ -43,7 +43,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; /** - * Test cases for {@link CriterionService}
+ * Test cases for {@link ICriterionService}
* @author Óscar González Fernández * @author Diego Pino García */ @@ -54,13 +54,13 @@ import org.springframework.transaction.annotation.Transactional; public class CriterionServiceTest { @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; @Autowired - private ResourceService resourceService; + private IResourceService resourceService; @Autowired private SessionFactory sessionFactory; @@ -257,7 +257,7 @@ public class CriterionServiceTest { worker1.addSatisfaction(new CriterionWithItsType(criterion.getType(), criterion)); resourceService.saveResource(worker1); Resource workerReloaded = criterionService - .onTransaction(new OnTransaction() { + .onTransaction(new IOnTransaction() { @Override public Resource execute() { diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionTypeServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionTypeServiceTest.java index 110ac133d..bc0a1a7e7 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionTypeServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionTypeServiceTest.java @@ -9,7 +9,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.test.context.ContextConfiguration; @@ -20,7 +20,7 @@ import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONF import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; /** - * Test cases for {@link CriterionTypeService}
+ * Test cases for {@link ICriterionTypeService}
* @author Diego Pino García * @author Javier Moran Rúa */ @@ -31,7 +31,7 @@ import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING public class CriterionTypeServiceTest { @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; public CriterionType createValidCriterionType() { String unique = UUID.randomUUID().toString(); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/ResourceServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/ResourceServiceTest.java index 0a8d47efd..be79a3fd2 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/ResourceServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/ResourceServiceTest.java @@ -23,8 +23,8 @@ import org.navalplanner.business.resources.entities.ICriterion; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.IResourceService; import org.navalplanner.business.test.resources.daos.CriterionDAOTest; import org.navalplanner.business.test.resources.entities.CriterionTest; import org.springframework.beans.factory.annotation.Autowired; @@ -45,13 +45,13 @@ import org.springframework.transaction.annotation.Transactional; public class ResourceServiceTest { @Autowired - private ResourceService resourceService; + private IResourceService resourceService; @Autowired private IResourceDAO resourceDao; @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Test public void testRemoveResource() throws InstanceNotFoundException { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapperOnInterval.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapperOnInterval.java index 19b6360f6..c58420803 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapperOnInterval.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapperOnInterval.java @@ -7,7 +7,7 @@ import java.util.Date; import org.zkoss.ganttz.util.Interval; -public class DatesMapperOnInterval implements DatesMapper { +public class DatesMapperOnInterval implements IDatesMapper { private final int horizontalSize; private final Interval stubInterval; private long millisecondsPerPixel; diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java index 0a3cd9ca0..f1d3a689e 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -16,9 +16,9 @@ import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.util.MenuBuilder; import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.MenuBuilder.ItemAction; -import org.zkoss.ganttz.util.WeakReferencedListeners.ListenerNotification; +import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; import org.zkoss.ganttz.util.zoom.ZoomLevel; -import org.zkoss.ganttz.util.zoom.ZoomLevelChangedListener; +import org.zkoss.ganttz.util.zoom.IZoomLevelChangedListener; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.ext.AfterCompose; import org.zkoss.zul.Menupopup; @@ -71,9 +71,9 @@ public class DependencyList extends XulElement implements AfterCompose { private static final Log LOG = LogFactory.getLog(DependencyList.class); - private ZoomLevelChangedListener listener; + private IZoomLevelChangedListener listener; - private final WeakReferencedListeners dependencyRemovedListeners = WeakReferencedListeners + private final WeakReferencedListeners dependencyRemovedListeners = WeakReferencedListeners .create(); public DependencyList() { @@ -118,7 +118,7 @@ public class DependencyList extends XulElement implements AfterCompose { @Override public void afterCompose() { if (listener == null) { - listener = new ZoomLevelChangedListener() { + listener = new IZoomLevelChangedListener() { @Override public void zoomLevelChanged(ZoomLevel detailLevel) { for (DependencyComponent dependencyComponent : getDependencyComponents()) { @@ -148,11 +148,11 @@ public class DependencyList extends XulElement implements AfterCompose { Event event) { removeChild(choosen); dependencyRemovedListeners - .fireEvent(new ListenerNotification() { + .fireEvent(new IListenerNotification() { @Override public void doNotify( - DependencyRemovedListener listener) { + IDependencyRemovedListener listener) { listener.dependenceRemoved(choosen); } @@ -164,7 +164,7 @@ public class DependencyList extends XulElement implements AfterCompose { } public void addDependencyRemovedListener( - DependencyRemovedListener removedListener) { + IDependencyRemovedListener removedListener) { dependencyRemovedListeners.addListener(removedListener); } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapper.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDatesMapper.java similarity index 85% rename from navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapper.java rename to navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDatesMapper.java index f64697061..f57aa6912 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DatesMapper.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDatesMapper.java @@ -2,7 +2,7 @@ package org.zkoss.ganttz; import java.util.Date; -public interface DatesMapper { +public interface IDatesMapper { int toPixels(Date date); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyAddedListener.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyAddedListener.java similarity index 71% rename from navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyAddedListener.java rename to navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyAddedListener.java index eb0ad6d64..362d935dd 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyAddedListener.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyAddedListener.java @@ -3,7 +3,7 @@ */ package org.zkoss.ganttz; -public interface DependencyAddedListener { +public interface IDependencyAddedListener { public void dependenceAdded(DependencyComponent dependencyComponent); } \ No newline at end of file diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyRemovedListener.java similarity index 86% rename from navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java rename to navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyRemovedListener.java index 44a48efde..518f58664 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/IDependencyRemovedListener.java @@ -10,7 +10,7 @@ package org.zkoss.ganttz; * @author Óscar González Fernández * */ -public interface DependencyRemovedListener { +public interface IDependencyRemovedListener { public void dependenceRemoved(DependencyComponent dependencyComponent); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java index ae938aeda..804540177 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java @@ -25,9 +25,9 @@ public class Planner extends XulElement { private static final Log LOG = LogFactory.getLog(Planner.class); - private DependencyAddedListener dependencyAddedListener; + private IDependencyAddedListener dependencyAddedListener; private GanttDiagramGraph diagramGraph = new GanttDiagramGraph(); - private DependencyRemovedListener dependencyRemovedListener; + private IDependencyRemovedListener dependencyRemovedListener; private LeftPane leftPane; private GanttPanel ganttPanel; @@ -84,7 +84,7 @@ public class Planner extends XulElement { public void registerListeners() { TaskList taskList = getTaskList(); - dependencyAddedListener = new DependencyAddedListener() { + dependencyAddedListener = new IDependencyAddedListener() { @Override public void dependenceAdded(DependencyComponent dependencyComponent) { @@ -95,7 +95,7 @@ public class Planner extends XulElement { } }; taskList.addDependencyListener(dependencyAddedListener); - dependencyRemovedListener = new DependencyRemovedListener() { + dependencyRemovedListener = new IDependencyRemovedListener() { @Override public void dependenceRemoved( diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java index 72187e556..eb821bad6 100755 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -182,7 +182,7 @@ public class TaskComponent extends Div implements AfterCompose { private String _color; - private List> dependencyListeners = new LinkedList>(); + private List> dependencyListeners = new LinkedList>(); private boolean isTopLevel; @@ -201,19 +201,19 @@ public class TaskComponent extends Div implements AfterCompose { return null; } - public void addDependencyListener(DependencyAddedListener listener) { - dependencyListeners.add(new WeakReference( + public void addDependencyListener(IDependencyAddedListener listener) { + dependencyListeners.add(new WeakReference( listener)); } private void fireDependenceAdded(DependencyComponent dependencyComponent) { - ArrayList active = new ArrayList(); + ArrayList active = new ArrayList(); synchronized (this) { - ListIterator> iterator = dependencyListeners + ListIterator> iterator = dependencyListeners .listIterator(); while (iterator.hasNext()) { - WeakReference next = iterator.next(); - DependencyAddedListener listener = next.get(); + WeakReference next = iterator.next(); + IDependencyAddedListener listener = next.get(); if (listener == null) { iterator.remove(); } else { @@ -221,7 +221,7 @@ public class TaskComponent extends Div implements AfterCompose { } } } - for (DependencyAddedListener listener : active) { + for (IDependencyAddedListener listener : active) { listener.dependenceAdded(dependencyComponent); } } @@ -299,7 +299,7 @@ public class TaskComponent extends Div implements AfterCompose { response("depkey", new AuInvoke(this, "addDependency")); } - private DatesMapper getMapper() { + private IDatesMapper getMapper() { return getTaskList().getMapper(); } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java.orig b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java.orig new file mode 100755 index 000000000..72187e556 --- /dev/null +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskComponent.java.orig @@ -0,0 +1,364 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.zkoss.ganttz; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.zkoss.ganttz.data.Task; +import org.zkoss.ganttz.data.TaskContainer; +import org.zkoss.lang.Objects; +import org.zkoss.xml.HTMLs; +import org.zkoss.zk.au.AuRequest; +import org.zkoss.zk.au.Command; +import org.zkoss.zk.au.ComponentCommand; +import org.zkoss.zk.au.out.AuInvoke; +import org.zkoss.zk.mesg.MZk; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.UiException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.ext.AfterCompose; +import org.zkoss.zul.Div; + +/** + * @author javi + */ +public class TaskComponent extends Div implements AfterCompose { + + private static final int HEIGHT_PER_TASK = 10; + private static final String STANDARD_TASK_COLOR = "#007bbe"; + + private static Pattern pixelsSpecificationPattern = Pattern + .compile("\\s*(\\d+)px\\s*;?\\s*"); + + private static int stripPx(String pixels) { + Matcher matcher = pixelsSpecificationPattern.matcher(pixels); + if (!matcher.matches()) + throw new IllegalArgumentException("pixels " + pixels + + " is not valid. It must be " + + pixelsSpecificationPattern.pattern()); + return Integer.valueOf(matcher.group(1)); + } + + private static Command _updatecmd = new ComponentCommand( + "onUpdatePosition", 0) { + + protected void process(AuRequest request) { + + final TaskComponent ta = (TaskComponent) request.getComponent(); + + if (ta == null) { + throw new UiException(MZk.ILLEGAL_REQUEST_COMPONENT_REQUIRED, + this); + } + + String[] requestData = request.getData(); + + if ((requestData != null) && (requestData.length != 2)) { + throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA, + new Object[] { Objects.toString(requestData), this }); + } else { + + ta.doUpdatePosition(requestData[0], requestData[1]); + Events.postEvent(new Event(getId(), ta, request.getData())); + } + } + + }; + + private static Command _updatewidthcmd = new ComponentCommand( + "onUpdateWidth", 0) { + + protected void process(AuRequest request) { + + final TaskComponent ta = (TaskComponent) request.getComponent(); + + if (ta == null) { + throw new UiException(MZk.ILLEGAL_REQUEST_COMPONENT_REQUIRED, + this); + } + + String[] requestData = request.getData(); + + if ((requestData != null) && (requestData.length != 1)) { + throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA, + new Object[] { Objects.toString(requestData), this }); + } else { + + ta.doUpdateSize(requestData[0]); + Events.postEvent(new Event(getId(), ta, request.getData())); + } + } + }; + + private static Command _adddependencycmd = new ComponentCommand( + "onAddDependency", 0) { + + protected void process(AuRequest request) { + + final TaskComponent taskComponent = (TaskComponent) request.getComponent(); + + if (taskComponent == null) { + throw new UiException(MZk.ILLEGAL_REQUEST_COMPONENT_REQUIRED, + this); + } + + String[] requestData = request.getData(); + + if ((requestData != null) && (requestData.length != 1)) { + throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA, + new Object[] { Objects.toString(requestData), this }); + } else { + taskComponent.doAddDependency(requestData[0]); + Events.postEvent(new Event(getId(), taskComponent, request.getData())); + } + } + }; + + public static TaskComponent asTaskComponent(Task task, TaskList taskList, + boolean isTopLevel) { + final TaskComponent result; + if (task.isContainer()) { + result = TaskContainerComponent + .asTask((TaskContainer) task, taskList); + } else { + result = new TaskComponent(task); + } + result.isTopLevel = isTopLevel; + return result; + } + + public static TaskComponent asTaskComponent(Task task, TaskList taskList) { + return asTaskComponent(task, taskList, true); + } + + public TaskComponent(Task task) { + setHeight(HEIGHT_PER_TASK + "px"); + setContext("idContextMenuTaskAssigment"); + this.task = task; + setColor(STANDARD_TASK_COLOR); + setId(UUID.randomUUID().toString()); + } + + protected String calculateClass() { + return "box"; + } + + protected void updateClass() { + response(null, new AuInvoke(this, "setClass", + new Object[] { calculateClass() })); + } + + public void afterCompose() { + updateProperties(); + if (propertiesListener == null) { + propertiesListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (isInPage()) { + updateProperties(); + } + } + }; + } + this.task + .addFundamentalPropertiesChangeListener(propertiesListener); + updateClass(); + } + + private String _color; + + private List> dependencyListeners = new LinkedList>(); + + private boolean isTopLevel; + + private final Task task; + private PropertyChangeListener propertiesListener; + + public Task getTask() { + return task; + } + + public String getTaskName() { + return task.getName(); + } + + public String getLength() { + return null; + } + + public void addDependencyListener(DependencyAddedListener listener) { + dependencyListeners.add(new WeakReference( + listener)); + } + + private void fireDependenceAdded(DependencyComponent dependencyComponent) { + ArrayList active = new ArrayList(); + synchronized (this) { + ListIterator> iterator = dependencyListeners + .listIterator(); + while (iterator.hasNext()) { + WeakReference next = iterator.next(); + DependencyAddedListener listener = next.get(); + if (listener == null) { + iterator.remove(); + } else { + active.add(listener); + } + } + } + for (DependencyAddedListener listener : active) { + listener.dependenceAdded(dependencyComponent); + } + } + + public Command getCommand(String cmdId) { + + Command c = null; + + if ("updatePosition".equals(cmdId)) + c = _updatecmd; + else if ("updateSize".equals(cmdId)) + c = _updatewidthcmd; + else if ("addDependency".equals(cmdId)) + c = _adddependencycmd; + + return c; + } + + // Command action to do + void doUpdatePosition(String leftX, String topY) { + this.task.setBeginDate(getMapper().toDate(stripPx(leftX))); + } + + void doUpdateSize(String size) { + int pixels = stripPx(size); + this.task.setLengthMilliseconds(getMapper().toMilliseconds(pixels)); + } + + void doAddDependency(String destinyTaskId) { + DependencyComponent dependencyComponent = new DependencyComponent(this, + ((TaskComponent) getFellow(destinyTaskId))); + if (getPlanner().canAddDependency(dependencyComponent.getDependency())) { + fireDependenceAdded(dependencyComponent); + } + } + + public String getColor() { + return _color; + } + + public void setColor(String color) { + + if ((color != null) && (color.length() == 0)) { + color = null; + } + + if (!Objects.equals(_color, color)) { + _color = color; + } + } + + /* + * We override the method of getRealStyle to put the color property as part + * of the style + */ + + protected String getRealStyle() { + + final StringBuffer sb = new StringBuffer(super.getRealStyle()); + + if (getColor() != null) { + HTMLs.appendStyle(sb, "background-color", getColor()); + } + HTMLs.appendStyle(sb, "position", "absolute"); + + return sb.toString(); + } + + /* + * We send a response to the client to create the arrow we are going to use + * to create the dependency + */ + + public void addDependency() { + response("depkey", new AuInvoke(this, "addDependency")); + } + + private DatesMapper getMapper() { + return getTaskList().getMapper(); + } + + public TaskList getTaskList() { + return (TaskList) getParent(); + } + + public Planner getPlanner() { + return getTaskList().getPlanner(); + } + + @Override + public void setParent(Component parent) { + if (parent != null && !(parent instanceof TaskList)) + throw new UiException("Unsupported parent for rows: " + parent); + super.setParent(parent); + } + + public void zoomChanged() { + updateProperties(); + } + + private void updateProperties() { + setLeft("0"); + setLeft(getMapper().toPixels(this.task.getBeginDate()) + "px"); + setWidth("0"); + setWidth(getMapper().toPixels(this.task.getLengthMilliseconds()) + + "px"); + smartUpdate("name", this.task.getName()); + DependencyList dependencyList = getDependencyList(); + if (dependencyList != null) { + dependencyList.redrawDependenciesConnectedTo(this); + } + } + + private DependencyList getDependencyList() { + return getPlanner().getDependencyList(); + } + + private boolean isInPage() { + return getParent() != null; + } + + void publishTaskComponents(Map resultAccumulated) { + resultAccumulated.put(getTask(), this); + publishDescendants(resultAccumulated); + } + + protected void publishDescendants(Map resultAccumulated) { + + } + + protected void remove() { + getDependencyList().taskRemoved(this.getTask()); + this.detach(); + } + + public boolean isTopLevel() { + return isTopLevel; + } + +} diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java index 84f87f459..0efaa41f6 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java @@ -20,7 +20,7 @@ import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.util.MenuBuilder; import org.zkoss.ganttz.util.MenuBuilder.ItemAction; import org.zkoss.ganttz.util.zoom.ZoomLevel; -import org.zkoss.ganttz.util.zoom.ZoomLevelChangedListener; +import org.zkoss.ganttz.util.zoom.IZoomLevelChangedListener; import org.zkoss.zk.au.out.AuInvoke; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; @@ -37,9 +37,9 @@ public class TaskList extends XulElement implements AfterCompose { private static final int HEIGHT_PER_ROW = 20; /* 30 */ - private List> listeners = new LinkedList>(); + private List> listeners = new LinkedList>(); - private ZoomLevelChangedListener zoomLevelChangedListener; + private IZoomLevelChangedListener zoomLevelChangedListener; private Menupopup contextMenu; @@ -93,10 +93,10 @@ public class TaskList extends XulElement implements AfterCompose { addContextMenu(taskComponent); addListenerForTaskComponentEditForm(taskComponent); - ListIterator> iterator = listeners + ListIterator> iterator = listeners .listIterator(); while (iterator.hasNext()) { - DependencyAddedListener listener = iterator.next().get(); + IDependencyAddedListener listener = iterator.next().get(); if (listener != null) { taskComponent.addDependencyListener(listener); } else { @@ -208,7 +208,7 @@ public class TaskList extends XulElement implements AfterCompose { return getGanttPanel().getTimeTracker(); } - DatesMapper getMapper() { + IDatesMapper getMapper() { return getTimeTracker().getMapper(); } @@ -236,8 +236,8 @@ public class TaskList extends XulElement implements AfterCompose { return getTaskComponents().size(); } - public void addDependencyListener(DependencyAddedListener listener) { - listeners.add(new WeakReference(listener)); + public void addDependencyListener(IDependencyAddedListener listener) { + listeners.add(new WeakReference(listener)); for (TaskComponent taskComponent : getTaskComponents()) { taskComponent.addDependencyListener(listener); } @@ -249,7 +249,7 @@ public class TaskList extends XulElement implements AfterCompose { addTaskComponent(TaskComponent.asTaskComponent(task, this), false); } if (zoomLevelChangedListener == null) { - zoomLevelChangedListener = new ZoomLevelChangedListener() { + zoomLevelChangedListener = new IZoomLevelChangedListener() { @Override public void zoomLevelChanged(ZoomLevel detailLevel) { for (TaskComponent taskComponent : getTaskComponents()) { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TimeTracker.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TimeTracker.java index d7339bacd..5d2f0d4ba 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TimeTracker.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TimeTracker.java @@ -14,7 +14,7 @@ import java.util.ListIterator; import org.zkoss.ganttz.util.Interval; import org.zkoss.ganttz.util.zoom.TimeTrackerState; import org.zkoss.ganttz.util.zoom.ZoomLevel; -import org.zkoss.ganttz.util.zoom.ZoomLevelChangedListener; +import org.zkoss.ganttz.util.zoom.IZoomLevelChangedListener; import org.zkoss.ganttz.util.zoom.TimeTrackerState.DetailItem; import org.zkoss.zk.au.out.AuInvoke; import org.zkoss.zk.ui.HtmlMacroComponent; @@ -30,9 +30,9 @@ public class TimeTracker extends HtmlMacroComponent { .year(2012)); } - private List> zoomListeners = new LinkedList>(); + private List> zoomListeners = new LinkedList>(); - private DatesMapper datesMapper = null; + private IDatesMapper datesMapper = null; private Collection detailsFirstLevelCached = null; @@ -51,9 +51,9 @@ public class TimeTracker extends HtmlMacroComponent { this.detailLevel = ZoomLevel.DETAIL_ONE; } - public void addZoomListener(ZoomLevelChangedListener listener) { + public void addZoomListener(IZoomLevelChangedListener listener) { zoomListeners - .add(new WeakReference(listener)); + .add(new WeakReference(listener)); } public void scrollHorizontalPercentage(int displacement) { @@ -62,10 +62,10 @@ public class TimeTracker extends HtmlMacroComponent { } private void fireZoomChanged(ZoomLevel detailLevel) { - ListIterator> listIterator = zoomListeners + ListIterator> listIterator = zoomListeners .listIterator(); while (listIterator.hasNext()) { - ZoomLevelChangedListener listener = listIterator.next().get(); + IZoomLevelChangedListener listener = listIterator.next().get(); if (listener == null) { listIterator.remove(); } else { @@ -135,7 +135,7 @@ public class TimeTracker extends HtmlMacroComponent { return detailLevel; } - public DatesMapper getMapper() { + public IDatesMapper getMapper() { if (datesMapper == null) { datesMapper = new DatesMapperOnInterval(getHorizontalSize(), getRealInterval()); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/TaskContainer.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/TaskContainer.java index 21da25131..92a96a1fc 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/TaskContainer.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/TaskContainer.java @@ -7,7 +7,7 @@ import java.util.Date; import java.util.List; import org.zkoss.ganttz.util.WeakReferencedListeners; -import org.zkoss.ganttz.util.WeakReferencedListeners.ListenerNotification; +import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; /** * This class contains the information of a task container. It can be modified @@ -147,7 +147,7 @@ public class TaskContainer extends Task { } if (valueChanged) { expandListeners - .fireEvent(new ListenerNotification() { + .fireEvent(new IListenerNotification() { @Override public void doNotify(IExpandListener listener) { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/WeakReferencedListeners.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/WeakReferencedListeners.java index 01a2a98d2..d725d761f 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/WeakReferencedListeners.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/WeakReferencedListeners.java @@ -7,7 +7,7 @@ import java.util.ListIterator; public class WeakReferencedListeners { - public interface ListenerNotification { + public interface IListenerNotification { void doNotify(T listener); @@ -30,7 +30,7 @@ public class WeakReferencedListeners { } public synchronized void fireEvent( - ListenerNotification notification) { + IListenerNotification notification) { ListIterator> listIterator = listeners.listIterator(); ArrayList active = new ArrayList(); while (listIterator.hasNext()) { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/ZoomLevelChangedListener.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/IZoomLevelChangedListener.java similarity index 68% rename from navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/ZoomLevelChangedListener.java rename to navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/IZoomLevelChangedListener.java index dbf9efdf9..2a216690a 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/ZoomLevelChangedListener.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/IZoomLevelChangedListener.java @@ -1,7 +1,7 @@ package org.zkoss.ganttz.util.zoom; -public interface ZoomLevelChangedListener { +public interface IZoomLevelChangedListener { public void zoomLevelChanged(ZoomLevel detailLevel); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java index 46392cbcc..918a55690 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java @@ -17,24 +17,24 @@ import org.springframework.stereotype.Component; @Scope(BeanDefinition.SCOPE_SINGLETON) public class ConverterFactory implements IConverterFactory { - private Map, Converter> convertersByType = new HashMap, Converter>(); + private Map, IConverter> convertersByType = new HashMap, IConverter>(); @Autowired - public ConverterFactory(List> converters) { - for (Converter converter : converters) { + public ConverterFactory(List> converters) { + for (IConverter converter : converters) { convertersByType.put(converter.getType(), converter); } } @Override - public Converter getConverterFor(Class klass) { + public IConverter getConverterFor(Class klass) { if (convertersByType.containsKey(klass)) - return (Converter) convertersByType.get(klass); + return (IConverter) convertersByType.get(klass); for (Class registeredKlass : convertersByType.keySet()) { if (registeredKlass.isAssignableFrom(klass)) { - Converter result = convertersByType.get(registeredKlass); + IConverter result = convertersByType.get(registeredKlass); convertersByType.put(klass, result); - return (Converter) result; + return (IConverter) result; } } throw new RuntimeException("not found converter for " + klass); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverter.java similarity index 91% rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverter.java index d919ee1b6..86667d5d8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverter.java @@ -5,7 +5,7 @@ package org.navalplanner.web.common.converters; * back
* @author Óscar González Fernández */ -public interface Converter { +public interface IConverter { Class getType(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java index 78a9f32e6..5b42fec66 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java @@ -7,6 +7,6 @@ package org.navalplanner.web.common.converters; */ public interface IConverterFactory { - Converter getConverterFor(Class klass); + IConverter getConverterFor(Class klass); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/OrderConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/OrderConverter.java index e7e2632f8..583284fa5 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/OrderConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/OrderConverter.java @@ -9,12 +9,12 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** - * A {@link Converter} for {@link Order}
+ * A {@link IConverter} for {@link Order}
* @author Óscar González Fernández */ @Component @Scope(BeanDefinition.SCOPE_SINGLETON) -public class OrderConverter implements Converter { +public class OrderConverter implements IConverter { @Autowired private IOrderService orderService; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java index f9cd216bf..95217b611 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java @@ -2,22 +2,22 @@ package org.navalplanner.web.common.converters; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.resources.entities.Resource; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** - * A {@link Converter} for {@link Resource}
+ * A {@link IConverter} for {@link Resource}
* @author Óscar González Fernández */ @Component @Scope(BeanDefinition.SCOPE_SINGLETON) -public class ResourceConverter implements Converter { +public class ResourceConverter implements IConverter { @Autowired - private ResourceService resourceService; + private IResourceService resourceService; @Override public Resource asObject(String stringRepresentation) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/WorkReportTypeConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/WorkReportTypeConverter.java index bf18e1dec..f5b000f87 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/WorkReportTypeConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/WorkReportTypeConverter.java @@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional; @Component @Scope(BeanDefinition.SCOPE_SINGLETON) -public class WorkReportTypeConverter implements Converter { +public class WorkReportTypeConverter implements IConverter { @Autowired private IWorkReportTypeDAO workReportTypeDAO; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java index 6528ca8fb..81c24a452 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java @@ -12,7 +12,7 @@ import org.zkoss.zk.ui.Executions; */ @Component @Scope(BeanDefinition.SCOPE_SINGLETON) -public class DefaultExecutorRetriever implements ExecutorRetriever { +public class DefaultExecutorRetriever implements IExecutorRetriever { @Override public Execution getCurrent() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IExecutorRetriever.java similarity index 87% rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IExecutorRetriever.java index 19ead33eb..8269e53ee 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IExecutorRetriever.java @@ -6,7 +6,7 @@ import org.zkoss.zk.ui.Execution; * It's used for retrieving the current {@link Execution} object
* @author Óscar González Fernández */ -public interface ExecutorRetriever { +public interface IExecutorRetriever { public Execution getCurrent(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java index 9a556ac6c..cce4ebb6d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.Validate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.navalplanner.web.common.converters.Converter; +import org.navalplanner.web.common.converters.IConverter; import org.navalplanner.web.common.converters.IConverterFactory; import org.zkoss.zk.ui.Execution; import org.zkoss.zk.ui.Page; @@ -43,7 +43,7 @@ public class URLHandler { } } - private final ExecutorRetriever executorRetriever; + private final IExecutorRetriever executorRetriever; private Map metadata = new HashMap(); @@ -52,7 +52,7 @@ public class URLHandler { private final IConverterFactory converterFactory; public URLHandler(IConverterFactory converterFactory, - ExecutorRetriever executorRetriever, + IExecutorRetriever executorRetriever, Class interfaceDefiningEntryPoints) { Validate.isTrue(interfaceDefiningEntryPoints.isInterface()); this.converterFactory = converterFactory; @@ -89,7 +89,7 @@ public class URLHandler { String[] stringRepresentations = new String[parameterNames.length]; for (int i = 0; i < types.length; i++) { Class type = types[i]; - Converter converterFor = converterFactory.getConverterFor(type); + IConverter converterFor = converterFactory.getConverterFor(type); stringRepresentations[i] = converterFor .asStringUngeneric(values[i]); } @@ -213,7 +213,7 @@ public class URLHandler { for (int i = 0; i < parameterTypes.length; i++) { Object argumentName = linkToStateAnnotation.value()[i]; String parameterValue = matrixParams.get(argumentName); - Converter converter = converterFactory + IConverter converter = converterFactory .getConverterFor(parameterTypes[i]); result[i] = converter.asObject(parameterValue); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java index 629fd0892..c00119bd7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java @@ -18,7 +18,7 @@ import org.springframework.stereotype.Component; public class URLHandlerRegistry implements IURLHandlerRegistry { @Autowired - private ExecutorRetriever executorRetriever; + private IExecutorRetriever executorRetriever; @Autowired private IConverterFactory converterFactory; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java index 016f36d98..1e128cf52 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java @@ -13,8 +13,8 @@ import org.navalplanner.business.resources.bootstrap.ICriterionsBootstrap; import org.navalplanner.business.resources.daos.ICriterionTypeDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -39,10 +39,10 @@ public class OrderElementModel implements IOrderElementModel { private ICriterionsBootstrap criterionsBootstrap; @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; private Map mapCriterionTypes = new HashMap(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 8ecb66995..a76e48ef1 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -18,8 +18,8 @@ import org.navalplanner.business.orders.services.IOrderService; import org.navalplanner.business.planner.services.ITaskElementService; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -37,10 +37,10 @@ import org.springframework.transaction.annotation.Transactional; public class OrderModel implements IOrderModel { @Autowired - CriterionService criterionService; + ICriterionService criterionService; @Autowired - CriterionTypeService criterionTypeService; + ICriterionTypeService criterionTypeService; private static final Map> mapCriterions = new HashMap>(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java index d74d780ed..53d509c58 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java @@ -9,7 +9,7 @@ import org.zkoss.ganttz.adapters.PlannerConfiguration; */ public interface IOrderPlanningModel { - public interface ConfigurationOnTransaction { + public interface IConfigurationOnTransaction { public void use(PlannerConfiguration configuration); } @@ -17,6 +17,6 @@ public interface IOrderPlanningModel { ResourceAllocationController resourceAllocationController, EditTaskController editTaskController, SplittingController splittingController, - ConfigurationOnTransaction onTransaction); + IConfigurationOnTransaction onTransaction); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java index f0b1d1ba5..ef7c450f6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java @@ -4,7 +4,7 @@ import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry; import org.navalplanner.web.common.entrypoints.URLHandler; -import org.navalplanner.web.planner.IOrderPlanningModel.ConfigurationOnTransaction; +import org.navalplanner.web.planner.IOrderPlanningModel.IConfigurationOnTransaction; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -53,7 +53,7 @@ public class OrderPlanningController implements public void showSchedule(Order order) { model.createConfiguration(order, resourceAllocationController, editTaskController, splittingController, - new ConfigurationOnTransaction() { + new IConfigurationOnTransaction() { @Override public void use(PlannerConfiguration configuration) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index e72884512..0fcb4327a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -49,7 +49,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { ResourceAllocationController resourceAllocationController, EditTaskController editTaskController, SplittingController splittingController, - ConfigurationOnTransaction onTransaction) { + IConfigurationOnTransaction onTransaction) { Order orderReloaded = reload(order); if (!orderReloaded.isSomeTaskElementScheduled()) throw new IllegalArgumentException("the order " + order diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplitTaskCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplitTaskCommand.java index e38f0cb03..d9c3d171a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplitTaskCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplitTaskCommand.java @@ -5,7 +5,7 @@ import java.util.List; import org.navalplanner.business.planner.entities.Task; import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.business.planner.entities.TaskGroup; -import org.navalplanner.web.planner.SplittingController.ActionOnOk; +import org.navalplanner.web.planner.SplittingController.IActionOnOk; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -34,7 +34,7 @@ public class SplitTaskCommand implements ISplitTaskCommand { int[] shares = createTwoEqualShares(taskElement); splittingController.show( ShareBean.toShareBeans(task.getName(), shares), task - .getWorkHours(), new ActionOnOk() { + .getWorkHours(), new IActionOnOk() { @Override public void doOkAction(ShareBean[] shares) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplittingController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplittingController.java index f9d49882a..bc0810446 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplittingController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SplittingController.java @@ -17,7 +17,7 @@ import org.zkoss.zul.api.Grid; @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class SplittingController extends GenericForwardComposer { - private ActionOnOk curentAction; + private IActionOnOk curentAction; private Window window; private Grid sharesListing; @@ -26,12 +26,12 @@ public class SplittingController extends GenericForwardComposer { private List sharesList; private Integer totalHours; - public interface ActionOnOk { + public interface IActionOnOk { public void doOkAction(ShareBean[] shares); } public void show(List initialSharesList, Integer totalHours, - ActionOnOk ok) { + IActionOnOk ok) { this.sharesList = initialSharesList; this.totalHours = totalHours; this.curentAction = ok; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java index 058993534..54ce26e13 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java @@ -18,9 +18,9 @@ import org.navalplanner.business.resources.entities.CriterionWithItsType; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.CriterionTypeService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.ICriterionTypeService; +import org.navalplanner.business.resources.services.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -44,13 +44,13 @@ public class CriterionsModel implements ICriterionsModel { private ICriterionsBootstrap criterionsBootstrap; @Autowired - private CriterionService criterionService; + private ICriterionService criterionService; @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; @Autowired - private ResourceService resourceService; + private IResourceService resourceService; private ICriterionType criterionType; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java index c08d7f076..11f63f858 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java @@ -6,7 +6,7 @@ import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.resources.services.ICriterionService; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -53,7 +53,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements private LocalizationsController localizationsForCreationController; - private CriterionService criterionService; + private ICriterionService criterionService; private WorkRelationshipsController editWorkRelationship; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerModel.java index 00a071f66..dd2d844b8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerModel.java @@ -23,8 +23,8 @@ import org.navalplanner.business.resources.entities.Interval; import org.navalplanner.business.resources.entities.PredefinedCriterionTypes; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -40,19 +40,19 @@ import org.springframework.transaction.annotation.Transactional; @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class WorkerModel implements IWorkerModel { - private final ResourceService resourceService; + private final IResourceService resourceService; private final ICriterionType[] laboralRelatedTypes = { PredefinedCriterionTypes.LEAVE, PredefinedCriterionTypes.WORK_RELATIONSHIP }; private Worker worker; private ClassValidator workerValidator; - private final CriterionService criterionService; + private final ICriterionService criterionService; private IMultipleCriterionActiveAssigner localizationsAssigner; @Autowired - public WorkerModel(ResourceService resourceService, - CriterionService criterionService) { + public WorkerModel(IResourceService resourceService, + ICriterionService criterionService) { Validate.notNull(resourceService); Validate.notNull(criterionService); this.resourceService = resourceService; @@ -224,7 +224,7 @@ public class WorkerModel implements IWorkerModel { IMultipleCriterionActiveAssigner { private final Resource resource; private final ICriterionType type; - private final CriterionService criterionService; + private final ICriterionService criterionService; private List history; private List initialCriterionsNotAssigned; private Set initialActive; @@ -234,7 +234,7 @@ public class WorkerModel implements IWorkerModel { private Set added = new HashSet(); public MultipleCriterionActiveAssigner( - CriterionService criterionService, Resource resource, + ICriterionService criterionService, Resource resource, ICriterionType type) { Validate .isTrue( diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java index c58ff6def..eb5b3bfaa 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java @@ -10,7 +10,7 @@ import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.services.CriterionTypeService; +import org.navalplanner.business.resources.services.ICriterionTypeService; import org.navalplanner.business.workreports.daos.WorkReportTypeDAO; import org.navalplanner.business.workreports.entities.WorkReportType; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +29,7 @@ import org.springframework.transaction.annotation.Transactional; public class WorkReportTypeModel implements IWorkReportTypeModel { @Autowired - private CriterionTypeService criterionTypeService; + private ICriterionTypeService criterionTypeService; private WorkReportType workReportType; diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/WorkerModelTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/WorkerModelTest.java index f35f244cf..87ca0072b 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/WorkerModelTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/WorkerModelTest.java @@ -13,8 +13,8 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.PredefinedCriterionTypes; import org.navalplanner.business.resources.entities.Worker; -import org.navalplanner.business.resources.services.CriterionService; -import org.navalplanner.business.resources.services.ResourceService; +import org.navalplanner.business.resources.services.ICriterionService; +import org.navalplanner.business.resources.services.IResourceService; import org.navalplanner.web.resources.worker.WorkerModel; /** @@ -26,8 +26,8 @@ public class WorkerModelTest { @Test public void testWorkerValid() throws ValidationException, InstanceNotFoundException { - ResourceService resourceServiceMock = createMock(ResourceService.class); - CriterionService criterionServiceMock = createMock(CriterionService.class); + IResourceService resourceServiceMock = createMock(IResourceService.class); + ICriterionService criterionServiceMock = createMock(ICriterionService.class); Worker workerToReturn = new Worker(); workerToReturn.setDailyHours(2); workerToReturn.setFirstName("firstName"); @@ -54,8 +54,8 @@ public class WorkerModelTest { @Test(expected = ValidationException.class) public void testWorkerInvalid() throws ValidationException, InstanceNotFoundException { - ResourceService resourceServiceMock = createMock(ResourceService.class); - CriterionService criterionServiceMock = createMock(CriterionService.class); + IResourceService resourceServiceMock = createMock(IResourceService.class); + ICriterionService criterionServiceMock = createMock(ICriterionService.class); Worker workerToReturn = new Worker(); // expectations Collection criterions = new ArrayList();