Update CXF.

Code refactoring.
Changes to config files.
This commit is contained in:
Vova Perebykivskyi 2016-05-10 13:20:53 +03:00 committed by Dgray16
parent f0d69af651
commit 5c7b5d92ef
11 changed files with 388 additions and 411 deletions

View file

@ -42,6 +42,10 @@ Changes
* Update Commons Collections
* Update Commons Logging
* Update CXF-transports-http
* Update CXF-frontend-jaxrs
* Add CXF-rs-client
* Update MPXJ
* Update Bonecp
* Update Guava

View file

@ -476,6 +476,10 @@
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>

View file

@ -53,11 +53,6 @@ public class JiraRESTClient {
*/
public static final String PATH_AUTH_SESSION = "rest/auth/latest/session";
/**
* Path for issue operations in JIRA REST API
*/
public static final String PATH_ISSUE = "/rest/api/latest/issue/";
/**
* Fields to include in the response of rest/api/latest/search.
*/
@ -82,6 +77,7 @@ public class JiraRESTClient {
*/
public static String getAllLables(String url) {
WebClient client = WebClient.create(url).accept(mediaTypes);
return client.get(String.class);
}
@ -100,21 +96,23 @@ public class JiraRESTClient {
* the query
* @return list of jira issues
*/
public static List<IssueDTO> getIssues(String url, String username,
String password, String path, String query) {
public static List<IssueDTO> getIssues(String url, String username, String password, String path, String query) {
WebClient client = createClient(url);
checkAutherization(client, username, password);
client.back(true);// Go to baseURI
// Go to baseURI
client.back(true);
client.path(path);
if (!query.isEmpty()) {
if ( !query.isEmpty() ) {
client.query("jql", query);
}
client.query("maxResults", MAX_RESULTS);
client.query("fields",
StringUtils.deleteWhitespace(FIELDS_TO_INCLUDE_IN_RESPONSE));
client.query("fields", StringUtils.deleteWhitespace(FIELDS_TO_INCLUDE_IN_RESPONSE));
SearchResultDTO searchResult = client.get(SearchResultDTO.class);
@ -133,8 +131,7 @@ public class JiraRESTClient {
JacksonJaxbJsonProvider jacksonJaxbJsonProvider = new JacksonJaxbJsonProvider();
jacksonJaxbJsonProvider.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return WebClient.create(url,
Collections.singletonList(jacksonJaxbJsonProvider)).accept(mediaTypes);
return WebClient.create(url, Collections.singletonList(jacksonJaxbJsonProvider)).accept(mediaTypes);
}
@ -148,8 +145,7 @@ public class JiraRESTClient {
* @param password
* login password
*/
private static void checkAutherization(WebClient client, String login,
String password) {
private static void checkAutherization(WebClient client, String login, String password) {
NaiveTrustProvider.setAlwaysTrust(true);
client.path(PATH_AUTH_SESSION);
@ -157,7 +153,7 @@ public class JiraRESTClient {
Util.addAuthorizationHeader(client, login, password);
Response response = client.get();
if (response.getStatus() != Status.OK.getStatusCode()) {
if ( response.getStatus() != Status.OK.getStatusCode() ) {
throw new RuntimeException("Authorization failed");
}
}

View file

@ -95,12 +95,12 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
@Override
@Transactional(readOnly = true)
public List<SubcontractedTaskData> getSubcontractedTasks() {
List<SubcontractedTaskData> result = subcontractedTaskDataDAO
.getAllForMasterScenario();
List<SubcontractedTaskData> result = subcontractedTaskDataDAO.getAllForMasterScenario();
for (SubcontractedTaskData subcontractedTaskData : result) {
forceLoadExternalCompany(subcontractedTaskData);
forceLastDeliveryDate(subcontractedTaskData);
}
return sortByState(result);
}
@ -108,8 +108,7 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
subcontractedTaskData.getLastRequiredDeliverDate();
}
private void forceLoadExternalCompany(
SubcontractedTaskData subcontractedTaskData) {
private void forceLoadExternalCompany(SubcontractedTaskData subcontractedTaskData) {
subcontractedTaskData.getExternalCompany().getName();
}
@ -118,29 +117,34 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
@Override
public int compare(SubcontractedTaskData arg0, SubcontractedTaskData arg1) {
if((arg0 == null) || (arg0.getState() == null)){
if( (arg0 == null) || (arg0.getState() == null) ){
return -1;
}
if((arg1 == null) || (arg1.getState() == null)){
if( (arg1 == null) || (arg1.getState() == null) ){
return 1;
}
if(arg0.getState().equals(arg1.getState())){
return 0;
if( arg0.getState().equals(arg1.getState()) ){
return 0;
}
if (arg0.getState().equals(
SubcontractState.PENDING_INITIAL_SEND)) {
if ( arg0.getState().equals(SubcontractState.PENDING_INITIAL_SEND) ) {
return 1;
}
if (arg1.getState().equals(
SubcontractState.PENDING_INITIAL_SEND)) {
return -1;
if ( arg1.getState().equals(SubcontractState.PENDING_INITIAL_SEND) ) {
return -1;
}
if( arg0.getState().equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE)) {
return 1;
if( arg0.getState().equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE) ) {
return 1;
}
return -1;
}
});
return tasks;
}
@ -148,42 +152,40 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
@Transactional(readOnly = true)
public Order getOrder(SubcontractedTaskData subcontractedTaskData) {
Task task = subcontractedTaskData.getTask();
OrderElement orderElement = orderDAO.loadOrderAvoidingProxyFor(task
.getOrderElement());
OrderElement orderElement = orderDAO.loadOrderAvoidingProxyFor(task.getOrderElement());
return orderElement.getOrder();
}
@Override
@Transactional
public void sendToSubcontractor(SubcontractedTaskData subcontractedTaskData)
throws ValidationException, ConnectionProblemsException,
UnrecoverableErrorServiceException {
throws ValidationException, ConnectionProblemsException, UnrecoverableErrorServiceException {
subcontractedTaskDataDAO.save(subcontractedTaskData);
SubcontractState currentState = subcontractedTaskData.getState();
if (currentState.equals(SubcontractState.PENDING_INITIAL_SEND)) {
if ( currentState.equals(SubcontractState.PENDING_INITIAL_SEND) ) {
subcontractedTaskData.setState(SubcontractState.FAILED_SENT);
} else if (currentState
.equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE)) {
} else if ( currentState.equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE) ) {
subcontractedTaskData.setState(SubcontractState.FAILED_UPDATE);
}
if (!subcontractedTaskData.isSendable()) {
if ( !subcontractedTaskData.isSendable() ) {
throw new RuntimeException("Subcontracted task already sent");
}
if (!subcontractedTaskData.getExternalCompany()
.getInteractsWithApplications()) {
throw new RuntimeException(
"External company has not interaction fields filled");
if ( !subcontractedTaskData.getExternalCompany().getInteractsWithApplications() ) {
throw new RuntimeException("External company has not interaction fields filled");
}
makeSubcontractRequestRequest(subcontractedTaskData,currentState);
Date today = new Date();
if ((currentState.equals(SubcontractState.PENDING_INITIAL_SEND))
|| (currentState.equals(SubcontractState.FAILED_SENT))) {
if ( (currentState.equals(SubcontractState.PENDING_INITIAL_SEND)) ||
(currentState.equals(SubcontractState.FAILED_SENT)) ) {
subcontractedTaskData.setSubcontractCommunicationDate(today);
}
@ -194,27 +196,31 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
}
private void makeSubcontractRequestRequest(
SubcontractedTaskData subcontractedTaskData,
SubcontractState currentState) throws ConnectionProblemsException,
UnrecoverableErrorServiceException {
if (subcontractedTaskData.getState() != null) {
if ((currentState.equals(SubcontractState.PENDING_INITIAL_SEND) || (currentState
.equals(SubcontractState.FAILED_SENT)))) {
SubcontractedTaskData subcontractedTaskData, SubcontractState currentState)
throws ConnectionProblemsException, UnrecoverableErrorServiceException {
if ( subcontractedTaskData.getState() != null ) {
if ( (currentState.equals(SubcontractState.PENDING_INITIAL_SEND) ||
(currentState.equals(SubcontractState.FAILED_SENT))) ) {
makeSubcontractRequestRequest_InitialSent(subcontractedTaskData);
} else if ((currentState
.equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE) || currentState
.equals(SubcontractState.FAILED_UPDATE))) {
} else if ( (currentState.equals(SubcontractState.PENDING_UPDATE_DELIVERING_DATE) ||
currentState.equals(SubcontractState.FAILED_UPDATE)) ) {
makeSubcontractRequestRequest_UpdateDeliverDate(subcontractedTaskData);
}
}
}
private void makeSubcontractRequestRequest_UpdateDeliverDate(SubcontractedTaskData subcontractedTaskData)
throws ConnectionProblemsException, UnrecoverableErrorServiceException {
UpdateDeliveringDateDTO updateDeliveringDateDTO = SubcontractedTaskDataConverter
.toUpdateDeliveringDateDTO(getCompanyCode(), subcontractedTaskData);
ExternalCompany externalCompany = subcontractedTaskData
.getExternalCompany();
throws ConnectionProblemsException, UnrecoverableErrorServiceException {
UpdateDeliveringDateDTO updateDeliveringDateDTO =
SubcontractedTaskDataConverter.toUpdateDeliveringDateDTO(getCompanyCode(), subcontractedTaskData);
ExternalCompany externalCompany = subcontractedTaskData.getExternalCompany();
NaiveTrustProvider.setAlwaysTrust(true);
@ -222,31 +228,30 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
WebClient client = WebClient.create(externalCompany.getAppURI());
client.path("ws/rest/subcontracting/subcontract/update");
Util.addAuthorizationHeader(client,
externalCompany.getOurCompanyLogin(),
externalCompany.getOurCompanyPassword());
Util.addAuthorizationHeader(
client, externalCompany.getOurCompanyLogin(), externalCompany.getOurCompanyPassword());
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = client
.post(updateDeliveringDateDTO,
InstanceConstraintViolationsListDTO.class);
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
client.post(updateDeliveringDateDTO, InstanceConstraintViolationsListDTO.class);
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = instanceConstraintViolationsListDTO.instanceConstraintViolationsList;
if ((instanceConstraintViolationsList != null)
&& (!instanceConstraintViolationsList.isEmpty())) {
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
instanceConstraintViolationsListDTO.instanceConstraintViolationsList;
if ( (instanceConstraintViolationsList != null) && (!instanceConstraintViolationsList.isEmpty()) ) {
String message = "";
for (ConstraintViolationDTO constraintViolationDTO : instanceConstraintViolationsList
.get(0).constraintViolations) {
message += constraintViolationDTO.toString() + "\n";
for (ConstraintViolationDTO current : instanceConstraintViolationsList.get(0).constraintViolations) {
message += current.toString() + "\n";
}
throw new UnrecoverableErrorServiceException(message);
}
} catch (WebApplicationException e) {
LOG.error("Problems connecting with subcontractor web service", e);
String message = _("Problems connecting with subcontractor web service");
if (e.getMessage() != null) {
if ( e.getMessage() != null ) {
message += ". " + _("Error: {0}", e.getMessage());
}
@ -254,13 +259,12 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
}
}
private void makeSubcontractRequestRequest_InitialSent(
SubcontractedTaskData subcontractedTaskData)
private void makeSubcontractRequestRequest_InitialSent(SubcontractedTaskData subcontractedTaskData)
throws ConnectionProblemsException, UnrecoverableErrorServiceException {
SubcontractedTaskDataDTO subcontractedTaskDataDTO = getSubcontractedTaskData(subcontractedTaskData);
ExternalCompany externalCompany = subcontractedTaskData
.getExternalCompany();
ExternalCompany externalCompany = subcontractedTaskData.getExternalCompany();
NaiveTrustProvider.setAlwaysTrust(true);
@ -269,30 +273,30 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
client.path("ws/rest/subcontracting/subcontract/create");
Util.addAuthorizationHeader(client, externalCompany
.getOurCompanyLogin(), externalCompany
.getOurCompanyPassword());
Util.addAuthorizationHeader(
client, externalCompany.getOurCompanyLogin(), externalCompany.getOurCompanyPassword());
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = client
.post(subcontractedTaskDataDTO,
InstanceConstraintViolationsListDTO.class);
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
client.post(subcontractedTaskDataDTO, InstanceConstraintViolationsListDTO.class);
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = instanceConstraintViolationsListDTO.instanceConstraintViolationsList;
if ((instanceConstraintViolationsList != null)
&& (!instanceConstraintViolationsList.isEmpty())) {
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
instanceConstraintViolationsListDTO.instanceConstraintViolationsList;
if ( (instanceConstraintViolationsList != null) && (!instanceConstraintViolationsList.isEmpty()) ) {
String message = "";
for (ConstraintViolationDTO constraintViolationDTO : instanceConstraintViolationsList.get(0).constraintViolations) {
message += constraintViolationDTO.toString() + "\n";
for (ConstraintViolationDTO current : instanceConstraintViolationsList.get(0).constraintViolations) {
message += current.toString() + "\n";
}
throw new UnrecoverableErrorServiceException(message);
}
} catch (WebApplicationException e) {
LOG.error("Problems connecting with subcontractor web service", e);
String message = _("Problems connecting with subcontractor web service");
if (e.getMessage() != null) {
if ( e.getMessage() != null ) {
message += ". " + _("Error: {0}", e.getMessage());
}
@ -300,65 +304,58 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
}
}
private SubcontractedTaskDataDTO getSubcontractedTaskData(
SubcontractedTaskData subcontractedTaskData) {
return SubcontractedTaskDataConverter.toDTO(getCompanyCode(),
subcontractedTaskData, getOrderElement(subcontractedTaskData));
private SubcontractedTaskDataDTO getSubcontractedTaskData(SubcontractedTaskData subcontractedTaskData) {
return SubcontractedTaskDataConverter.toDTO(
getCompanyCode(), subcontractedTaskData, getOrderElement(subcontractedTaskData));
}
private String getCompanyCode() {
return configurationDAO.getConfiguration().getCompanyCode();
}
private OrderElementDTO getOrderElement(
SubcontractedTaskData subcontractedTaskData) {
private OrderElementDTO getOrderElement(SubcontractedTaskData subcontractedTaskData) {
OrderElement orderElement;
try {
orderElement = orderElementDAO.find(subcontractedTaskData.getTask()
.getOrderElement().getId());
orderElement = orderElementDAO.find(subcontractedTaskData.getTask().getOrderElement().getId());
} catch (InstanceNotFoundException e) {
throw new RuntimeException(e);
}
if (subcontractedTaskData.isNodeWithoutChildrenExported()) {
if ( subcontractedTaskData.isNodeWithoutChildrenExported() ) {
orderElement = orderElement.calculateOrderLineForSubcontract();
}
OrderElementDTO orderElementDTO = OrderElementConverter.toDTO(
orderElement,
getConfiguration(subcontractedTaskData));
overrideDateInformationForRootNode(orderElementDTO,
subcontractedTaskData.getTask());
OrderElementDTO orderElementDTO =
OrderElementConverter.toDTO(orderElement, getConfiguration(subcontractedTaskData));
overrideDateInformationForRootNode(orderElementDTO, subcontractedTaskData.getTask());
return orderElementDTO;
}
private void overrideDateInformationForRootNode(
OrderElementDTO orderElementDTO, Task task) {
orderElementDTO.initDate = DateConverter.toXMLGregorianCalendar(task
.getStartDate());
orderElementDTO.deadline = DateConverter.toXMLGregorianCalendar(task
.getEndDate());
private void overrideDateInformationForRootNode(OrderElementDTO orderElementDTO, Task task) {
orderElementDTO.initDate = DateConverter.toXMLGregorianCalendar(task.getStartDate());
orderElementDTO.deadline = DateConverter.toXMLGregorianCalendar(task.getEndDate());
}
private ConfigurationOrderElementConverter getConfiguration(
SubcontractedTaskData subcontractedTaskData) {
private ConfigurationOrderElementConverter getConfiguration(SubcontractedTaskData subcontractedTaskData) {
// Never export criterions and advances to subcontract
boolean isCriterionsExported = false;
boolean isAdvancesExported = false;
return ConfigurationOrderElementConverter.create(subcontractedTaskData
.isLabelsExported(), subcontractedTaskData
.isMaterialAssignmentsExported(), isAdvancesExported,
return ConfigurationOrderElementConverter.create(
subcontractedTaskData.isLabelsExported(),
subcontractedTaskData.isMaterialAssignmentsExported(),
false,
subcontractedTaskData.isHoursGroupsExported(),
isCriterionsExported);
false);
}
@Override
@Transactional(readOnly = true)
public String exportXML(SubcontractedTaskData subcontractedTaskData) {
SubcontractState currentState = subcontractedTaskData.getState();
if ((currentState.equals(SubcontractState.PENDING_INITIAL_SEND) || (currentState
.equals(SubcontractState.FAILED_SENT)))) {
if ( (currentState.equals(SubcontractState.PENDING_INITIAL_SEND) ||
(currentState.equals(SubcontractState.FAILED_SENT))) ) {
return exportXML_CreateSubcontractor(subcontractedTaskData);
} else {
return exportXML_UpdateSubcontractor(subcontractedTaskData);
@ -370,8 +367,7 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
StringWriter xml = new StringWriter();
try {
JAXBContext jaxbContext = JAXBContext
.newInstance(SubcontractedTaskDataDTO.class);
JAXBContext jaxbContext = JAXBContext.newInstance(SubcontractedTaskDataDTO.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(subcontractedTaskDataDTO, xml);
} catch (Exception e) {
@ -383,13 +379,13 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
public String exportXML_UpdateSubcontractor(SubcontractedTaskData subcontractedTaskData){
subcontractedTaskDataDAO.reattachUnmodifiedEntity(subcontractedTaskData);
UpdateDeliveringDateDTO updateDeliveringDateDTO = SubcontractedTaskDataConverter
.toUpdateDeliveringDateDTO(getCompanyCode(), subcontractedTaskData);
UpdateDeliveringDateDTO updateDeliveringDateDTO =
SubcontractedTaskDataConverter.toUpdateDeliveringDateDTO(getCompanyCode(), subcontractedTaskData);
StringWriter xml = new StringWriter();
try {
JAXBContext jaxbContext = JAXBContext
.newInstance(UpdateDeliveringDateDTO.class);
JAXBContext jaxbContext = JAXBContext.newInstance(UpdateDeliveringDateDTO.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(updateDeliveringDateDTO, xml);
} catch (Exception e) {

View file

@ -30,26 +30,25 @@ package org.libreplan.ws.common.impl;
public class ConfigurationOrderElementConverter {
public static ConfigurationOrderElementConverter create(boolean labels,
boolean materialAssignments, boolean advanceMeasurements,
boolean hoursGroups, boolean criterionRequirements) {
return new ConfigurationOrderElementConverter(labels,
materialAssignments, advanceMeasurements, hoursGroups,
criterionRequirements);
boolean materialAssignments,
boolean advanceMeasurements,
boolean hoursGroups,
boolean criterionRequirements) {
return new ConfigurationOrderElementConverter(
labels, materialAssignments, advanceMeasurements, hoursGroups, criterionRequirements);
}
public static ConfigurationOrderElementConverter all() {
return new ConfigurationOrderElementConverter(true, true, true, true,
true);
return new ConfigurationOrderElementConverter(true, true, true, true, true);
}
public static ConfigurationOrderElementConverter none() {
return new ConfigurationOrderElementConverter(false, false, false,
false, false);
return new ConfigurationOrderElementConverter(false, false, false, false, false);
}
public static ConfigurationOrderElementConverter noAdvanceMeasurements() {
return new ConfigurationOrderElementConverter(true, true, false, true,
true);
return new ConfigurationOrderElementConverter(true, true, false, true, true);
}
private boolean labels;
@ -59,8 +58,10 @@ public class ConfigurationOrderElementConverter {
private boolean criterionRequirements;
private ConfigurationOrderElementConverter(boolean labels,
boolean materialAssignments, boolean advanceMeasurements,
boolean hoursGroups, boolean criterionRequirements) {
boolean materialAssignments,
boolean advanceMeasurements,
boolean hoursGroups,
boolean criterionRequirements) {
this.labels = labels;
this.materialAssignments = materialAssignments;
this.advanceMeasurements = advanceMeasurements;

View file

@ -63,7 +63,6 @@
<!-- CXF -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxrs:server id="rest" address="/">

View file

@ -193,14 +193,16 @@
p:passwordEncoderService-ref="dbPasswordEncoderService">
</beans:bean>
<beans:bean id="authenticationProvider" class="org.libreplan.web.users.services.AuthenticationProviderLoggingDecorator">
<beans:property name="decoratedProvider" ref="realAuthenticationProvider"></beans:property>
<beans:bean id="authenticationProvider"
class="org.libreplan.web.users.services.AuthenticationProviderLoggingDecorator">
<beans:property name="decoratedProvider" ref="realAuthenticationProvider"/>
</beans:bean>
<!-- This bean is used to implement UserDetailsService with LDAP authentication
Provider. -->
<beans:bean id="ldapUserDetailsService"
class="org.libreplan.web.users.services.LDAPUserDetailsService" />
<beans:bean id="ldapUserDetailsService" class="org.libreplan.web.users.services.LDAPUserDetailsService" />
<authentication-manager>
<authentication-provider ref="authenticationProvider"/>

View file

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>libreplan-webapp</display-name>
<!--
@ -17,7 +16,6 @@
<param-value>
classpath*:/libreplan-business-spring-config.xml
classpath:/libreplan-webapp-spring-config.xml
classpath*:/libreplan-override-spring-config.xml
classpath:/libreplan-webapp-spring-security-config.xml
</param-value>
</context-param>
@ -70,7 +68,6 @@
</listener>
<!-- Spring listeners -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
@ -78,7 +75,6 @@
<listener-class>
org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- end Spring listeners -->
<!-- Loads all IDataBootstrap and executes them -->

View file

@ -22,13 +22,12 @@ package org.libreplan.importers;
import static org.junit.Assert.assertTrue;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.ProcessingException;
import org.apache.commons.lang.StringUtils;
import org.junit.Before;
@ -46,10 +45,9 @@ public class JiraRESTClientTest {
private Properties properties = null;
@Before
public void loadProperties() throws FileNotFoundException, IOException {
public void loadProperties() throws IOException {
String filename = System.getProperty("user.dir")
+ "/../scripts/jira-connector/jira-conn.properties";
String filename = System.getProperty("user.dir") + "/../scripts/jira-connector/jira-conn.properties";
properties = new Properties();
properties.load(new FileInputStream(filename));
@ -63,13 +61,13 @@ public class JiraRESTClientTest {
@Test
@Ignore("Only working if you have a JIRA server configured")
public void testGetAllLablesFromValidLabelUrl() {
String labels = JiraRESTClient.getAllLables(properties
.getProperty("label_url"));
String labels = JiraRESTClient.getAllLables(properties.getProperty("label_url"));
List<String> result = Arrays.asList(StringUtils.split(labels, ","));
assertTrue(result.size() > 0);
}
@Test(expected = WebApplicationException.class)
@Test(expected = ProcessingException.class)
public void testGetAllLablesFromInValidLabelUrl() {
JiraRESTClient.getAllLables("");
}
@ -82,12 +80,14 @@ public class JiraRESTClientTest {
properties.getProperty("username"),
properties.getProperty("password"), JiraRESTClient.PATH_SEARCH,
getJiraLabel(properties.getProperty("label")));
assertTrue(issues.size() > 0);
}
@Test(expected = RuntimeException.class)
public void testGetIssuesForValidLabelButUnAuthorizedUser() {
JiraRESTClient.getIssues(properties.getProperty("url"), "", "",
JiraRESTClient.getIssues(
properties.getProperty("url"), "", "",
JiraRESTClient.PATH_SEARCH,
getJiraLabel(properties.getProperty("label")));
}
@ -98,8 +98,8 @@ public class JiraRESTClientTest {
List<IssueDTO> issues = JiraRESTClient.getIssues(
properties.getProperty("url"),
properties.getProperty("username"),
properties.getProperty("password"), JiraRESTClient.PATH_SEARCH,
"");
properties.getProperty("password"), JiraRESTClient.PATH_SEARCH, "");
assertTrue(issues.size() > 0);
}
}

View file

@ -33,7 +33,6 @@ import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CO
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@ -98,8 +97,12 @@ import org.springframework.transaction.annotation.Transactional;
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_FILE, WEBAPP_SPRING_CONFIG_TEST_FILE,
@ContextConfiguration(locations = {
BUSINESS_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_TEST_FILE,
WEBAPP_SPRING_SECURITY_CONFIG_FILE,
WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE })
public class WorkReportServiceTest {
@ -195,17 +198,16 @@ public class WorkReportServiceTest {
}
private static <T extends IntegrationEntity> T findOrCreate(
IIntegrationEntityDAO<? super T> dao, Class<T> klass,
String code, Object... constructorArguments) {
if (dao.existsByCode(code)) {
IIntegrationEntityDAO<? super T> dao, Class<T> klass, String code, Object... constructorArguments) {
if ( dao.existsByCode(code) ) {
return klass.cast(dao.findExistingEntityByCode(code));
} else {
try {
Method create = klass.getMethod("create",
asClasses(constructorArguments));
T result = klass
.cast(create.invoke(null, constructorArguments));
Method create = klass.getMethod("create", asClasses(constructorArguments));
T result = klass.cast(create.invoke(null, constructorArguments));
result.setCode(code);
return result;
} catch (Exception e) {
throw new RuntimeException(e);
@ -218,33 +220,30 @@ public class WorkReportServiceTest {
for (int i = 0; i < result.length; i++) {
result[i] = constructorArguments[i].getClass();
}
return result;
}
private void givenWorkerStored() {
Worker worker = findOrCreate(dao, Worker.class, resourceCode,
"Firstname", "Surname", resourceCode);
if (worker.isNewObject()) {
Worker worker = findOrCreate(dao, Worker.class, resourceCode, "Firstname", "Surname", resourceCode);
if ( worker.isNewObject() ) {
dao.save(worker);
}
}
private void givenOrderLineStored() {
OrderLine orderLine = findOrCreate(orderElementDAO, OrderLine.class,
orderElementCode);
if (orderLine.isNewObject()) {
OrderLine orderLine = findOrCreate(orderElementDAO, OrderLine.class, orderElementCode);
if ( orderLine.isNewObject() ) {
orderLine.setName("order-line-name" + UUID.randomUUID());
orderElementDAO.save(orderLine);
}
}
private void createAPairOfLabelTypes() {
LabelType labelType_A = findOrCreate(labelTypeDAO, LabelType.class,
labelTypeA, labelTypeA, labelTypeA);
LabelType labelType_B = findOrCreate(labelTypeDAO, LabelType.class,
labelTypeB, labelTypeB, labelTypeB);
LabelType labelType_A = findOrCreate(labelTypeDAO, LabelType.class, labelTypeA, labelTypeA, labelTypeA);
LabelType labelType_B = findOrCreate(labelTypeDAO, LabelType.class, labelTypeB, labelTypeB, labelTypeB);
if (labelType_A.isNewObject()) {
if ( labelType_A.isNewObject() ) {
Label label_A1 = Label.create(labelA1, labelA1);
Label label_A2 = Label.create(labelA2, labelA2);
Label label_B1 = Label.create(labelB1, labelB1);
@ -259,13 +258,11 @@ public class WorkReportServiceTest {
}
private void givenTypeOfWorkHoursStored() {
TypeOfWorkHours typeOfWorkHours = findOrCreate(typeOfWorkHoursDAO,
TypeOfWorkHours.class, typeOfWorkHoursCode);
TypeOfWorkHours typeOfWorkHours = findOrCreate(typeOfWorkHoursDAO, TypeOfWorkHours.class, typeOfWorkHoursCode);
if (typeOfWorkHours.isNewObject()) {
if ( typeOfWorkHours.isNewObject() ) {
typeOfWorkHours.setCode(typeOfWorkHoursCode);
typeOfWorkHours.setName("type-of-work-hours-name-"
+ UUID.randomUUID());
typeOfWorkHours.setName("type-of-work-hours-name-" + UUID.randomUUID());
typeOfWorkHours.setDefaultPrice(BigDecimal.TEN);
typeOfWorkHoursDAO.save(typeOfWorkHours);
@ -273,60 +270,48 @@ public class WorkReportServiceTest {
}
private void givenWorkReportTypeStored() {
WorkReportType t = givenWorkReportTypeStored(false, false, false, null,
workReportTypeCode);
WorkReportType t = givenWorkReportTypeStored(false, false, false, null, workReportTypeCode);
workReportTypeDAO.save(t);
}
private void givenWorkReportTypeStored2() {
WorkReportType t = givenWorkReportTypeStored(true, false, false, null,
workReportTypeCode2);
WorkReportType t = givenWorkReportTypeStored(true, false, false, null, workReportTypeCode2);
workReportTypeDAO.save(t);
}
private void givenWorkReportTypeStored3() {
WorkReportType t = givenWorkReportTypeStored(false, false, false,
HoursManagementEnum.HOURS_CALCULATED_BY_CLOCK,
workReportTypeCode3);
HoursManagementEnum.HOURS_CALCULATED_BY_CLOCK, workReportTypeCode3);
workReportTypeDAO.save(t);
}
private void givenWorkReportTypeStored4() {
WorkReportType type = givenWorkReportTypeStored(false, false, false,
null, workReportTypeCode4);
WorkReportType type = givenWorkReportTypeStored(false, false, false, null, workReportTypeCode4);
if (type.isNewObject()) {
type.addDescriptionFieldToEndHead(DescriptionField.create(field1,
10));
type.addDescriptionFieldToEndLine(DescriptionField.create(field2,
10));
if ( type.isNewObject() ) {
type.addDescriptionFieldToEndHead(DescriptionField.create(field1, 10));
type.addDescriptionFieldToEndLine(DescriptionField.create(field2, 10));
workReportTypeDAO.save(type);
}
}
private void givenWorkReportTypeStored5() {
WorkReportType type = givenWorkReportTypeStored(false, false, false,
null, workReportTypeCode5);
if (!type.isNewObject()) {
WorkReportType type = givenWorkReportTypeStored(false, false, false, null, workReportTypeCode5);
if ( !type.isNewObject() ) {
return;
}
WorkReportLabelTypeAssigment labelAssigment1 = WorkReportLabelTypeAssigment
.create(true);
WorkReportLabelTypeAssigment labelAssigment2 = WorkReportLabelTypeAssigment
.create(false);
WorkReportLabelTypeAssigment labelAssigment1 = WorkReportLabelTypeAssigment.create(true);
WorkReportLabelTypeAssigment labelAssigment2 = WorkReportLabelTypeAssigment.create(false);
labelAssigment1.setLabelType(labelTypeDAO
.findExistingEntityByCode(labelTypeA));
labelAssigment1.setDefaultLabel(labelDAO
.findExistingEntityByCode(labelA1));
labelAssigment1.setLabelType(labelTypeDAO.findExistingEntityByCode(labelTypeA));
labelAssigment1.setDefaultLabel(labelDAO.findExistingEntityByCode(labelA1));
labelAssigment1.setPositionNumber(0);
labelAssigment2.setLabelType(labelTypeDAO
.findExistingEntityByCode(labelTypeB));
labelAssigment2.setDefaultLabel(labelDAO
.findExistingEntityByCode(labelB1));
labelAssigment2.setLabelType(labelTypeDAO.findExistingEntityByCode(labelTypeB));
labelAssigment2.setDefaultLabel(labelDAO.findExistingEntityByCode(labelB1));
labelAssigment2.setPositionNumber(0);
type.addLabelAssigmentToEndHead(labelAssigment1);
@ -336,12 +321,13 @@ public class WorkReportServiceTest {
}
private WorkReportType givenWorkReportTypeStored(boolean dateShared,
boolean orderElementShared, boolean resourceShared,
HoursManagementEnum hoursManagement, String workReportTypeCode) {
boolean orderElementShared,
boolean resourceShared,
HoursManagementEnum hoursManagement,
String workReportTypeCode) {
WorkReportType workReportType = findOrCreate(workReportTypeDAO,
WorkReportType.class, workReportTypeCode);
if (!workReportType.isNewObject()) {
WorkReportType workReportType = findOrCreate(workReportTypeDAO, WorkReportType.class, workReportTypeCode);
if ( !workReportType.isNewObject() ) {
return workReportType;
}
@ -352,7 +338,7 @@ public class WorkReportServiceTest {
workReportType.setOrderElementIsSharedInLines(orderElementShared);
workReportType.setResourceIsSharedInLines(resourceShared);
if (hoursManagement != null) {
if ( hoursManagement != null ) {
workReportType.setHoursManagement(hoursManagement);
}
@ -365,8 +351,7 @@ public class WorkReportServiceTest {
workReportLineDTO.code = "work-report-line-code-" + UUID.randomUUID();
workReportLineDTO.resource = resourceCode;
workReportLineDTO.orderElement = orderElementCode;
workReportLineDTO.date = DateConverter
.toXMLGregorianCalendar(new Date());
workReportLineDTO.date = DateConverter.toXMLGregorianCalendar(new Date());
workReportLineDTO.typeOfWorkHours = typeOfWorkHoursCode;
workReportLineDTO.numHours = "8:15";
@ -378,6 +363,7 @@ public class WorkReportServiceTest {
workReportDTO.code = "work-report-code-" + UUID.randomUUID();
workReportDTO.workReportType = type;
workReportDTO.workReportLines.add(createWorkReportLineDTO());
return workReportDTO;
}
@ -387,25 +373,23 @@ public class WorkReportServiceTest {
// create work report with a work report line
WorkReportDTO workReportDTO = createWorkReportDTO(workReportTypeCode5);
// create invalid description value to add into head and lines.
// create invalid description value to add into head and lines
LabelReferenceDTO labelDTO1 = new LabelReferenceDTO("codeLabelNoexiste");
LabelReferenceDTO labelDTO2 = new LabelReferenceDTO(labelA1);
// it assigne a label type LabelTypeA, but it should be a label type
// LabelTypeB
// it assigns a label type LabelTypeA, but it should be a label type LabelTypeB
workReportDTO.labels.add(labelDTO1);
for (WorkReportLineDTO lineDTO : workReportDTO.workReportLines) {
lineDTO.labels.add(labelDTO2);
}
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = workReportService
.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
workReportService.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
// Test
assertTrue(instanceConstraintViolationsList.toString(),
instanceConstraintViolationsList.size() == 1);
assertTrue(instanceConstraintViolationsList.toString(), instanceConstraintViolationsList.size() == 1);
}
@Test
@ -418,21 +402,19 @@ public class WorkReportServiceTest {
LabelReferenceDTO labelDTO1 = new LabelReferenceDTO(labelA1);
LabelReferenceDTO labelDTO2 = new LabelReferenceDTO(labelB1);
// it assigne a label type LabelTypeA, but it should be a label type
// LabelTypeB
// it assigns a label type LabelTypeA, but it should be a label type LabelTypeB
workReportDTO.labels.add(labelDTO1);
for (WorkReportLineDTO lineDTO : workReportDTO.workReportLines) {
lineDTO.labels.add(labelDTO2);
}
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = workReportService
.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
workReportService.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
// Test
assertTrue(instanceConstraintViolationsList.toString(),
instanceConstraintViolationsList.size() == 0);
assertTrue(instanceConstraintViolationsList.toString(), instanceConstraintViolationsList.size() == 0);
}
@Test
@ -442,27 +424,25 @@ public class WorkReportServiceTest {
WorkReportDTO workReportDTO = createWorkReportDTO(workReportTypeCode4);
// create invalid description value to add into head and lines.
DescriptionValueDTO valueDTO1 = new DescriptionValueDTO(field1 + "X",
"incorrecto");
DescriptionValueDTO valueDTO2 = new DescriptionValueDTO(field2 + "X",
"incorrecto");
DescriptionValueDTO valueDTO1 = new DescriptionValueDTO(field1 + "X", "incorrecto");
DescriptionValueDTO valueDTO2 = new DescriptionValueDTO(field2 + "X", "incorrecto");
workReportDTO.descriptionValues.add(valueDTO1);
for (WorkReportLineDTO lineDTO : workReportDTO.workReportLines) {
lineDTO.descriptionValues.add(valueDTO2);
}
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = workReportService
.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
workReportService.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
// Test
assertTrue(instanceConstraintViolationsList.toString(),
instanceConstraintViolationsList.size() == 1);
assertTrue(instanceConstraintViolationsList.get(0).constraintViolations
.toString(),
instanceConstraintViolationsList.get(0).constraintViolations
.size() == 2);
assertTrue(instanceConstraintViolationsList.toString(), instanceConstraintViolationsList.size() == 1);
assertTrue(
instanceConstraintViolationsList.get(0).constraintViolations.toString(),
instanceConstraintViolationsList.get(0).constraintViolations.size() == 2);
}
@Test
@ -472,76 +452,71 @@ public class WorkReportServiceTest {
WorkReportDTO workReportDTO = createWorkReportDTO(workReportTypeCode4);
// create invalid description value to add into head and lines.
DescriptionValueDTO valueDTO1 = new DescriptionValueDTO(field1,
"correcto");
DescriptionValueDTO valueDTO2 = new DescriptionValueDTO(field2,
"correcto");
DescriptionValueDTO valueDTO1 = new DescriptionValueDTO(field1, "correcto");
DescriptionValueDTO valueDTO2 = new DescriptionValueDTO(field2, "correcto");
workReportDTO.descriptionValues.add(valueDTO1);
for (WorkReportLineDTO lineDTO : workReportDTO.workReportLines) {
lineDTO.descriptionValues.add(valueDTO2);
}
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = workReportService
.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList =
workReportService.addWorkReports(workReportListDTO).instanceConstraintViolationsList;
// Test
assertTrue(instanceConstraintViolationsList.toString(),
instanceConstraintViolationsList.size() == 0);
assertTrue(instanceConstraintViolationsList.toString(), instanceConstraintViolationsList.size() == 0);
}
@Test
public void importValidWorkReport() {
int previous = transactionService
.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
int previous = transactionService.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
transactionService.runOnTransaction(new IOnTransaction<Void>() {
@Override
public Void execute() {
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(createWorkReportDTO(workReportTypeCode)));
WorkReportListDTO workReportListDTO =
new WorkReportListDTO(Collections.singletonList(createWorkReportDTO(workReportTypeCode)));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(0));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(0));
return null;
}
});
List<WorkReport> workReports = transactionService
.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport
.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
}
return list;
List<WorkReport> workReports = transactionService.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
});
}
return list;
}
});
assertThat(workReports.size(), equalTo(previous + 1));
Set<WorkReportLine> workReportLines = workReports.get(previous)
.getWorkReportLines();
Set<WorkReportLine> workReportLines = workReports.get(previous).getWorkReportLines();
assertThat(workReportLines.size(), equalTo(1));
assertThat(workReportLines.iterator().next().getEffort(),
equalTo(EffortDuration.sum(EffortDuration.hours(8),
EffortDuration.minutes(15))));
assertThat(
workReportLines.iterator().next().getEffort(),
equalTo(EffortDuration.sum(EffortDuration.hours(8), EffortDuration.minutes(15))));
}
@ -550,15 +525,16 @@ public class WorkReportServiceTest {
public void importInvalidWorkReportWithoutDateAtWorkReportLevel() {
int previous = workReportDAO.getAll().size();
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(createWorkReportDTO(workReportTypeCode2)));
WorkReportListDTO workReportListDTO =
new WorkReportListDTO(Collections.singletonList(createWorkReportDTO(workReportTypeCode2)));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(1));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(1));
List<WorkReport> workReports = workReportDAO.getAll();
assertThat(workReports.size(), equalTo(previous));
}
@ -571,28 +547,25 @@ public class WorkReportServiceTest {
Date date = new LocalDate().toDateTimeAtStartOfDay().toDate();
workReportDTO.date = DateConverter.toXMLGregorianCalendar(date);
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(0));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(0));
/**
* Default code that was before was not working with MySQL
* and works perfect with PostgreSQL
* For example: List<WorkReport> workReports = workReportDAO.getAll();
* was returning 0 but COUNT in DB was 1
* Also set workReportLines in WorkReports.hbm.xml has been changed to fetch='join'
* Possible reason: Hibernate 4.3.11.Final bug / caching
*/
* Default code that was before was not working with MySQL
* and works perfect with PostgreSQL
* For example: List<WorkReport> workReports = workReportDAO.getAll();
* was returning 0 but COUNT in DB was 1
* Also set workReportLines in WorkReports.hbm.xml has been changed to fetch='join'
* Possible reason: Hibernate 4.3.11.Final bug / caching
*/
StatelessSession statelessSession = sessionFactory.openStatelessSession();
List<WorkReport> workReports = statelessSession.createCriteria(WorkReport.class)
.addOrder(Order.asc("code")).list();
List workReports = statelessSession.createCriteria(WorkReport.class).addOrder(Order.asc("code")).list();
assertThat(workReports.size(), equalTo(previous + 1));
@ -601,12 +574,11 @@ public class WorkReportServiceTest {
assertThat(imported.getDate(), equalTo(date));
List<WorkReportLine> importedLines = new ArrayList<WorkReportLine>(
imported.getWorkReportLines());
List<WorkReportLine> importedLines = new ArrayList<>(imported.getWorkReportLines());
Collections.sort(importedLines);
List<WorkReportLineDTO> exportedLines = new ArrayList<WorkReportLineDTO>(
workReportDTO.workReportLines);
List<WorkReportLineDTO> exportedLines = new ArrayList<>(workReportDTO.workReportLines);
Collections.sort(exportedLines, new Comparator<WorkReportLineDTO>() {
@Override
public int compare(WorkReportLineDTO o1, WorkReportLineDTO o2) {
@ -622,8 +594,7 @@ public class WorkReportServiceTest {
}
private long asTime(XMLGregorianCalendar date2) {
return date2
.toGregorianCalendar().getTime().getTime();
return date2.toGregorianCalendar().getTime().getTime();
}
@Test
@ -631,126 +602,115 @@ public class WorkReportServiceTest {
public void importInvalidWorkReportCalculatedHours() {
int previous = workReportDAO.getAll().size();
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(createWorkReportDTO(workReportTypeCode3)));
WorkReportListDTO workReportListDTO =
new WorkReportListDTO(Collections.singletonList(createWorkReportDTO(workReportTypeCode3)));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(1));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(1));
List<WorkReport> workReports = workReportDAO.getAll();
assertThat(workReports.size(), equalTo(previous));
}
@Test
public void importValidWorkReportCalculatedHours() {
int previous = transactionService
.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
int previous = transactionService.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
WorkReportDTO workReportDTO = createWorkReportDTO(workReportTypeCode3);
WorkReportLineDTO workReportLineDTO = workReportDTO.workReportLines
.iterator().next();
WorkReportLineDTO workReportLineDTO = workReportDTO.workReportLines.iterator().next();
int hours = 12;
LocalTime start = new LocalTime(8, 0);
LocalTime end = start.plusHours(hours);
workReportLineDTO.clockStart = DateConverter
.toXMLGregorianCalendar(start);
workReportLineDTO.clockFinish = DateConverter
.toXMLGregorianCalendar(end);
workReportLineDTO.clockStart = DateConverter.toXMLGregorianCalendar(start);
workReportLineDTO.clockFinish = DateConverter.toXMLGregorianCalendar(end);
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(0));
List<WorkReport> workReports = transactionService
.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport
.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
}
return list;
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(0));
List<WorkReport> workReports = transactionService.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
});
}
return list;
}
});
assertThat(workReports.size(), equalTo(previous + 1));
Set<WorkReportLine> workReportLines = workReports.get(previous)
.getWorkReportLines();
Set<WorkReportLine> workReportLines = workReports.get(previous).getWorkReportLines();
assertThat(workReportLines.size(), equalTo(1));
assertThat(workReportLines.iterator().next().getEffort().getHours(),
equalTo(hours));
assertThat(workReportLines.iterator().next().getEffort().getHours(), equalTo(hours));
}
@Test
public void importAndUpdateValidWorkReport() {
int previous = transactionService
.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
int previous = transactionService.runOnTransaction(new IOnTransaction<Integer>() {
@Override
public Integer execute() {
return workReportDAO.getAll().size();
}
});
WorkReportDTO workReportDTO = createWorkReportDTO(workReportTypeCode);
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Arrays
.asList(workReportDTO));
WorkReportListDTO workReportListDTO = new WorkReportListDTO(Collections.singletonList(workReportDTO));
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(0));
List<WorkReport> workReports = transactionService
.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport
.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
}
return list;
InstanceConstraintViolationsListDTO instanceConstraintViolationsListDTO =
workReportService.addWorkReports(workReportListDTO);
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(0));
List<WorkReport> workReports = transactionService.runOnTransaction(new IOnTransaction<List<WorkReport>>() {
@Override
public List<WorkReport> execute() {
List<WorkReport> list = workReportDAO.getAll();
for (WorkReport workReport : list) {
Set<WorkReportLine> workReportLines = workReport.getWorkReportLines();
for (WorkReportLine line : workReportLines) {
line.getEffort().getHours();
}
});
}
return list;
}
});
assertThat(workReports.size(), equalTo(previous + 1));
Set<WorkReportLine> workReportLines = workReports.get(previous)
.getWorkReportLines();
Set<WorkReportLine> workReportLines = workReports.get(previous).getWorkReportLines();
assertThat(workReportLines.size(), equalTo(1));
assertThat(workReportLines.iterator().next().getEffort(),
equalTo(EffortDuration.sum(EffortDuration.hours(8),
EffortDuration.minutes(15))));
assertThat(
workReportLines.iterator().next().getEffort(),
equalTo(EffortDuration.sum(EffortDuration.hours(8), EffortDuration.minutes(15))));
workReportDTO.workReportLines.add(createWorkReportLineDTO());
WorkReportListDTO workReportListDTO2 = new WorkReportListDTO(Arrays
.asList(workReportDTO));
instanceConstraintViolationsListDTO = workReportService
.addWorkReports(workReportListDTO2);
WorkReportListDTO workReportListDTO2 = new WorkReportListDTO(Collections.singletonList(workReportDTO));
instanceConstraintViolationsListDTO = workReportService.addWorkReports(workReportListDTO2);
assertThat(
instanceConstraintViolationsListDTO.instanceConstraintViolationsList
.size(), equalTo(0));
assertThat(instanceConstraintViolationsListDTO.instanceConstraintViolationsList.size(), equalTo(0));
}
}

23
pom.xml
View file

@ -530,7 +530,7 @@
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.2.3</version>
<version>3.1.6</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
@ -553,7 +553,26 @@
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.2.3</version>
<version>3.1.6</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.1.6</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>