diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarExceptionType.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarExceptionType.java index 2903dd1a0..d8ca70219 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarExceptionType.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarExceptionType.java @@ -66,6 +66,14 @@ public class CalendarExceptionType extends IntegrationEntity { code); } + public static CalendarExceptionType create(String code, String name, + String color, Boolean notAssignable, EffortDuration duration) { + CalendarExceptionType calendarExceptionType = new CalendarExceptionType( + name, color, notAssignable); + calendarExceptionType.setDuration(duration); + return create(calendarExceptionType, code); + } + /** * Constructor for hibernate. Do not use! */ diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/CalendarExceptionTypeDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/CalendarExceptionTypeDTO.java index 935ac59c5..d3c5f8c9f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/CalendarExceptionTypeDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/CalendarExceptionTypeDTO.java @@ -43,20 +43,24 @@ public class CalendarExceptionTypeDTO extends IntegrationEntityDTO { @XmlAttribute(name = "over-assignable") public boolean overAssignable; + @XmlAttribute + public int duration; + public CalendarExceptionTypeDTO() { } public CalendarExceptionTypeDTO(String code, String name, String color, - boolean overAssignable) { + boolean overAssignable, int duration) { super(code); this.name = name; this.color = color; this.overAssignable = overAssignable; + this.duration = duration; } public CalendarExceptionTypeDTO(String name, String color, - boolean overAssignable) { - this(generateCode(), name, color, overAssignable); + boolean overAssignable, int duration) { + this(generateCode(), name, color, overAssignable, duration); } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/ICalendarExceptionTypeService.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/ICalendarExceptionTypeService.java index 260c016a5..ff62599b6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/ICalendarExceptionTypeService.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/api/ICalendarExceptionTypeService.java @@ -21,6 +21,7 @@ package org.navalplanner.ws.calendarexceptiontypes.api; import org.navalplanner.business.calendars.entities.CalendarExceptionType; +import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO; /** * Service for managing {@link CalendarExceptionType} entities. @@ -31,4 +32,7 @@ public interface ICalendarExceptionTypeService { CalendarExceptionTypeListDTO getCalendarExceptionType(); + InstanceConstraintViolationsListDTO addCalendarExceptionTypes( + CalendarExceptionTypeListDTO calendarExceptionTypeListDTO); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeConverter.java index 275a4dbb0..16cdcdcf4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeConverter.java @@ -21,6 +21,7 @@ package org.navalplanner.ws.calendarexceptiontypes.impl; import org.navalplanner.business.calendars.entities.CalendarExceptionType; +import org.navalplanner.business.workingday.EffortDuration; import org.navalplanner.ws.calendarexceptiontypes.api.CalendarExceptionTypeDTO; /** @@ -36,9 +37,27 @@ public final class CalendarExceptionTypeConverter { public final static CalendarExceptionTypeDTO toDTO( CalendarExceptionType calendarExceptionType) { + EffortDuration duration = calendarExceptionType.getDuration(); + int seconds = (duration != null) ? duration.getSeconds() : 0; return new CalendarExceptionTypeDTO(calendarExceptionType.getCode(), calendarExceptionType.getName(), calendarExceptionType - .getColor(), calendarExceptionType.isOverAssignable()); + .getColor(), calendarExceptionType.isOverAssignable(), + seconds); + } + + public final static CalendarExceptionType toEntity( + CalendarExceptionTypeDTO entityDTO) { + return CalendarExceptionType.create(entityDTO.code, entityDTO.name, + entityDTO.color, entityDTO.overAssignable, EffortDuration + .seconds(entityDTO.duration)); + } + + public static void updateCalendarExceptionType( + CalendarExceptionType entity, CalendarExceptionTypeDTO entityDTO) { + entity.setName(entityDTO.name); + entity.setColor(entityDTO.color); + entity.setOverAssignable(entityDTO.overAssignable); + entity.setDuration(EffortDuration.seconds(entityDTO.duration)); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeServiceREST.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeServiceREST.java index 6f6bad908..c12e9367d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeServiceREST.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/calendarexceptiontypes/impl/CalendarExceptionTypeServiceREST.java @@ -20,7 +20,9 @@ package org.navalplanner.ws.calendarexceptiontypes.impl; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; @@ -31,6 +33,7 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.ws.calendarexceptiontypes.api.CalendarExceptionTypeDTO; import org.navalplanner.ws.calendarexceptiontypes.api.CalendarExceptionTypeListDTO; import org.navalplanner.ws.calendarexceptiontypes.api.ICalendarExceptionTypeService; +import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO; import org.navalplanner.ws.common.impl.GenericRESTService; import org.navalplanner.ws.common.impl.RecoverableErrorException; import org.springframework.beans.factory.annotation.Autowired; @@ -66,13 +69,15 @@ public class CalendarExceptionTypeServiceREST extends @Override protected CalendarExceptionType toEntity(CalendarExceptionTypeDTO entityDTO) throws ValidationException, RecoverableErrorException { - return null; + return CalendarExceptionTypeConverter.toEntity(entityDTO); } @Override protected void updateEntity(CalendarExceptionType entity, CalendarExceptionTypeDTO entityDTO) throws ValidationException, RecoverableErrorException { + CalendarExceptionTypeConverter.updateCalendarExceptionType(entity, + entityDTO); } @Override @@ -82,4 +87,12 @@ public class CalendarExceptionTypeServiceREST extends return new CalendarExceptionTypeListDTO(findAll()); } + @Override + @POST + @Consumes("application/xml") + public InstanceConstraintViolationsListDTO addCalendarExceptionTypes( + CalendarExceptionTypeListDTO calendarExceptionTypeListDTO) { + return save(calendarExceptionTypeListDTO.calendarExceptionTypes); + } + } diff --git a/scripts/rest-clients/calendar-exception-type-sample.xml b/scripts/rest-clients/calendar-exception-type-sample.xml new file mode 100644 index 000000000..74ab9648e --- /dev/null +++ b/scripts/rest-clients/calendar-exception-type-sample.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/scripts/rest-clients/import-calendar-exception-types.sh b/scripts/rest-clients/import-calendar-exception-types.sh new file mode 100755 index 000000000..e15cd20b5 --- /dev/null +++ b/scripts/rest-clients/import-calendar-exception-types.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +. ./rest-common-env.sh + +printf "Login name: " +read loginName +printf "Password: " +read password + +baseServiceURL=$DEVELOPMENT_BASE_SERVICE_URL +certificate=$DEVELOPMENT_CERTIFICATE + +for i in "$@" +do + if [ "$i" = "--prod" ]; then + baseServiceURL=$PRODUCTION_BASE_SERVICE_URL + certificate=$PRODUCTION_CERTIFICATE + else + file=$i + fi +done + +if [ "$file" = "" ]; then + printf "Missing file\n" 1>&2 + exit 1 +fi + +authorization=`./base64.sh $loginName:$password` + +curl -sv -X POST $certificate -d @$file \ + --header "Content-type: application/xml" \ + --header "Authorization: Basic $authorization" \ + $baseServiceURL/calendarexceptiontypes | tidy -xml -i -q -utf8