ItEr45S15CUExportarTraballoRealizadaPorSubcontrataItEr44S21: Added buttons to generate XMLs from subcontracted tasks list and report advances list.
NOTE: You should enable popups for navalplanner in your browser.
This commit is contained in:
parent
99f14c1335
commit
ac7d798332
7 changed files with 146 additions and 5 deletions
|
|
@ -81,6 +81,11 @@ public class CallbackServlet extends HttpServlet {
|
|||
|
||||
public static String registerAndCreateURLFor(HttpServletRequest request,
|
||||
IServletRequestHandler handler) {
|
||||
return registerAndCreateURLFor(request, handler, true);
|
||||
}
|
||||
|
||||
public static String registerAndCreateURLFor(HttpServletRequest request,
|
||||
IServletRequestHandler handler, boolean withContextPath) {
|
||||
// theorically could be an infinite loop, must be improved. Gods of
|
||||
// computer science forgive me
|
||||
String generatedKey = "";
|
||||
|
|
@ -89,12 +94,14 @@ public class CallbackServlet extends HttpServlet {
|
|||
do {
|
||||
generatedKey = generateKey();
|
||||
} while (handlersCallbacks.putIfAbsent(generatedKey, toBeRegistered) != null);
|
||||
return buildURLFromKey(request, generatedKey);
|
||||
return buildURLFromKey(request, generatedKey, withContextPath);
|
||||
}
|
||||
|
||||
private static synchronized String buildURLFromKey(
|
||||
HttpServletRequest request, String generatedKey) {
|
||||
return request.getContextPath() + MAPPING + generatedKey;
|
||||
HttpServletRequest request, String generatedKey,
|
||||
boolean withContextPath) {
|
||||
String contextPath = withContextPath ? request.getContextPath() : "";
|
||||
return contextPath + MAPPING + generatedKey;
|
||||
}
|
||||
|
||||
private static String generateKey() {
|
||||
|
|
|
|||
|
|
@ -51,4 +51,6 @@ public interface IReportAdvancesModel {
|
|||
throws UnrecoverableErrorServiceException,
|
||||
ConnectionProblemsException;
|
||||
|
||||
String exportXML(Order order);
|
||||
|
||||
}
|
||||
|
|
@ -41,4 +41,6 @@ public interface ISubcontractedTasksModel {
|
|||
throws ValidationException, ConnectionProblemsException,
|
||||
UnrecoverableErrorServiceException;
|
||||
|
||||
String exportXML(SubcontractedTaskData subcontractedTaskData);
|
||||
|
||||
}
|
||||
|
|
@ -21,9 +21,14 @@ package org.navalplanner.web.subcontract;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
||||
|
|
@ -38,12 +43,16 @@ import org.navalplanner.web.subcontract.exceptions.UnrecoverableErrorServiceExce
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet.IServletRequestHandler;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.RowRenderer;
|
||||
|
|
@ -144,7 +153,42 @@ public class ReportAdvancesController extends GenericForwardComposer {
|
|||
|
||||
private void appendOperations(Row row, Order order,
|
||||
boolean sendButtonDisabled) {
|
||||
row.appendChild(getSendButton(order, sendButtonDisabled));
|
||||
Hbox hbox = new Hbox();
|
||||
hbox.appendChild(getExportButton(order));
|
||||
hbox.appendChild(getSendButton(order, sendButtonDisabled));
|
||||
row.appendChild(hbox);
|
||||
}
|
||||
|
||||
private Button getExportButton(
|
||||
final Order order) {
|
||||
Button exportButton = new Button(_("XML"));
|
||||
exportButton.addEventListener(Events.ON_CLICK, new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
String uri = CallbackServlet.registerAndCreateURLFor(
|
||||
(HttpServletRequest) Executions.getCurrent()
|
||||
.getNativeRequest(),
|
||||
new IServletRequestHandler() {
|
||||
|
||||
@Override
|
||||
public void handle(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
response.setContentType("text/xml");
|
||||
String xml = reportAdvancesModel
|
||||
.exportXML(order);
|
||||
response.getWriter().write(xml);
|
||||
}
|
||||
|
||||
}, false);
|
||||
|
||||
Executions.getCurrent().sendRedirect(uri, "_blank");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return exportButton;
|
||||
}
|
||||
|
||||
private Button getSendButton(final Order order,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ package org.navalplanner.web.subcontract;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -31,6 +32,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Marshaller;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
|
@ -275,4 +278,22 @@ public class ReportAdvancesModel implements IReportAdvancesModel {
|
|||
return configurationDAO.getConfiguration().getCompanyCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public String exportXML(Order order) {
|
||||
OrderElementWithAdvanceMeasurementsListDTO orderElementWithAdvanceMeasurementsListDTO = getOrderElementWithAdvanceMeasurementsListDTO(order);
|
||||
|
||||
StringWriter xml = new StringWriter();
|
||||
try {
|
||||
JAXBContext jaxbContext = JAXBContext
|
||||
.newInstance(OrderElementWithAdvanceMeasurementsListDTO.class);
|
||||
Marshaller marshaller = jaxbContext.createMarshaller();
|
||||
marshaller.marshal(orderElementWithAdvanceMeasurementsListDTO, xml);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
return xml.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,10 +21,15 @@ package org.navalplanner.web.subcontract;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.planner.entities.SubcontractedTaskData;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
|
|
@ -36,12 +41,16 @@ import org.navalplanner.web.subcontract.exceptions.UnrecoverableErrorServiceExce
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet.IServletRequestHandler;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.RowRenderer;
|
||||
|
|
@ -139,7 +148,42 @@ public class SubcontractedTasksController extends GenericForwardComposer {
|
|||
|
||||
private void appendOperations(Row row,
|
||||
SubcontractedTaskData subcontractedTaskData) {
|
||||
row.appendChild(getSendButton(subcontractedTaskData));
|
||||
Hbox hbox = new Hbox();
|
||||
hbox.appendChild(getExportButton(subcontractedTaskData));
|
||||
hbox.appendChild(getSendButton(subcontractedTaskData));
|
||||
row.appendChild(hbox);
|
||||
}
|
||||
|
||||
private Button getExportButton(
|
||||
final SubcontractedTaskData subcontractedTaskData) {
|
||||
Button exportButton = new Button(_("XML"));
|
||||
exportButton.addEventListener(Events.ON_CLICK, new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
String uri = CallbackServlet.registerAndCreateURLFor(
|
||||
(HttpServletRequest) Executions.getCurrent()
|
||||
.getNativeRequest(),
|
||||
new IServletRequestHandler() {
|
||||
|
||||
@Override
|
||||
public void handle(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
response.setContentType("text/xml");
|
||||
String xml = subcontractedTasksModel
|
||||
.exportXML(subcontractedTaskData);
|
||||
response.getWriter().write(xml);
|
||||
}
|
||||
|
||||
}, false);
|
||||
|
||||
Executions.getCurrent().sendRedirect(uri, "_blank");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return exportButton;
|
||||
}
|
||||
|
||||
private Button getSendButton(
|
||||
|
|
|
|||
|
|
@ -21,10 +21,13 @@ package org.navalplanner.web.subcontract;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Marshaller;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
|
@ -224,4 +227,22 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel {
|
|||
isCriterionsExported);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public String exportXML(SubcontractedTaskData subcontractedTaskData) {
|
||||
SubcontractedTaskDataDTO subcontractedTaskDataDTO = getSubcontractedTaskData(subcontractedTaskData);
|
||||
|
||||
StringWriter xml = new StringWriter();
|
||||
try {
|
||||
JAXBContext jaxbContext = JAXBContext
|
||||
.newInstance(SubcontractedTaskDataDTO.class);
|
||||
Marshaller marshaller = jaxbContext.createMarshaller();
|
||||
marshaller.marshal(subcontractedTaskDataDTO, xml);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
return xml.toString();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue