ItEr44S10CUGravacionModelosUnidadesTraballoItEr43S12: Adding createFromTemplate support for order elements
This commit is contained in:
parent
963894ae92
commit
9cc0e2c213
6 changed files with 98 additions and 2 deletions
|
|
@ -34,6 +34,7 @@ import org.navalplanner.business.orders.entities.OrderLineGroup;
|
|||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
import org.navalplanner.business.templates.entities.OrderTemplate;
|
||||
|
||||
/**
|
||||
|
|
@ -106,9 +107,12 @@ public interface IOrderModel {
|
|||
|
||||
void prepareCreationFrom(OrderTemplate template);
|
||||
|
||||
OrderElement createFrom(OrderLineGroup parent, OrderElementTemplate template);
|
||||
|
||||
List<ExternalCompany> getExternalCompaniesAreClient();
|
||||
|
||||
void setExternalCompany(ExternalCompany externalCompany);
|
||||
|
||||
public String gettooltipText(Order order);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,14 +34,16 @@ import org.apache.commons.lang.StringUtils;
|
|||
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.entities.SchedulingState;
|
||||
import org.navalplanner.business.orders.entities.SchedulingState.ITypeChangedListener;
|
||||
import org.navalplanner.business.orders.entities.SchedulingState.Type;
|
||||
import org.navalplanner.business.requirements.entities.CriterionRequirement;
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.Util.Getter;
|
||||
import org.navalplanner.web.common.Util.Setter;
|
||||
import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch;
|
||||
import org.navalplanner.web.orders.assigntemplates.TemplateFinderPopup;
|
||||
import org.navalplanner.web.orders.assigntemplates.TemplateFinderPopup.IOnResult;
|
||||
import org.navalplanner.web.templates.IOrderTemplatesControllerEntryPoints;
|
||||
import org.navalplanner.web.tree.TreeController;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
|
|
@ -110,6 +112,19 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
}
|
||||
}
|
||||
|
||||
public void createFromTemplate() {
|
||||
templateFinderPopup.openForSubElemenetCreation(tree, "after_pointer",
|
||||
new IOnResult<OrderElementTemplate>() {
|
||||
@Override
|
||||
public void found(OrderElementTemplate template) {
|
||||
OrderLineGroup parent = (OrderLineGroup) getModel()
|
||||
.getRoot();
|
||||
orderModel.createFrom(parent, template);
|
||||
getModel().addNewlyAddedChildrenOf(parent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void createTemplate(OrderElement selectedNode) {
|
||||
if (!selectedNode.isNewObject()) {
|
||||
orderTemplates.goToCreateTemplateFrom(selectedNode);
|
||||
|
|
@ -156,6 +171,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
filter, new HashMap<String, String>());
|
||||
filterComponent.setVariable("treeController", this, true);
|
||||
bdFilter = (BandboxSearch) filterComponent.getFellow("bdFilter");
|
||||
templateFinderPopup = (TemplateFinderPopup) comp
|
||||
.getFellow("templateFinderPopupAtTree");
|
||||
}
|
||||
|
||||
public class OrderElementTreeitemRenderer extends Renderer {
|
||||
|
|
@ -436,6 +453,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
|
||||
Tab tabGeneralData;
|
||||
|
||||
private TemplateFinderPopup templateFinderPopup;
|
||||
|
||||
private void selectDefaultTab() {
|
||||
tabGeneralData.setSelected(true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ 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.templates.daos.IOrderElementTemplateDAO;
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
import org.navalplanner.business.templates.entities.OrderTemplate;
|
||||
import org.navalplanner.business.users.daos.IOrderAuthorizationDAO;
|
||||
import org.navalplanner.business.users.daos.IUserDAO;
|
||||
|
|
@ -389,6 +390,28 @@ public class OrderModel implements IOrderModel {
|
|||
this.order.setCode(code);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public OrderElement createFrom(OrderLineGroup parent,
|
||||
OrderElementTemplate template) {
|
||||
loadNeededDataForConversation();
|
||||
OrderElementTemplate templateReloaded = templateDAO
|
||||
.findExistingEntity(template.getId());
|
||||
OrderElement result = templateReloaded.createElement(parent);
|
||||
if (isCodeAutogenerated()) {
|
||||
setAllCodeToNull(result);
|
||||
}
|
||||
forceLoadAdvanceAssignmentsAndMeasurements(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void setAllCodeToNull(OrderElement result) {
|
||||
result.setCode(null);
|
||||
for (OrderElement each : result.getChildren()) {
|
||||
setAllCodeToNull(each);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void save() throws ValidationException {
|
||||
|
|
|
|||
|
|
@ -98,4 +98,8 @@ public class OrdersTreeComponent extends TreeComponent {
|
|||
return columns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCreateFromTemplateEnabled() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,6 +70,10 @@ public abstract class EntitiesTree<T extends ITreeNode<T>> {
|
|||
return tree;
|
||||
}
|
||||
|
||||
public T getRoot() {
|
||||
return tree.getRoot();
|
||||
}
|
||||
|
||||
public void addElement() {
|
||||
addElementAtImpl(tree.getRoot());
|
||||
}
|
||||
|
|
@ -182,6 +186,47 @@ public abstract class EntitiesTree<T extends ITreeNode<T>> {
|
|||
parent) + 1);
|
||||
}
|
||||
|
||||
private class WithPosition {
|
||||
int position;
|
||||
T element;
|
||||
|
||||
private WithPosition(int position, T element) {
|
||||
this.position = position;
|
||||
this.element = element;
|
||||
}
|
||||
}
|
||||
|
||||
public void addNewlyAddedChildrenOf(ITreeParentNode<T> parent) {
|
||||
List<T> treeChildren = getTreeChildren(parent);
|
||||
List<T> currentChildren = parent.getChildren();
|
||||
if (!currentChildren.containsAll(treeChildren)) {
|
||||
throw new IllegalStateException(
|
||||
"some children were removed. Can't add new tree children");
|
||||
}
|
||||
int i = 0;
|
||||
List<WithPosition> addings = new ArrayList<WithPosition>();
|
||||
for (T each : currentChildren) {
|
||||
if (!treeChildren.contains(each)) {
|
||||
addings.add(new WithPosition(i, each));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
for (WithPosition each : addings) {
|
||||
tree.add(parent.getThis(), each.position, Collections
|
||||
.singletonList(each.element));
|
||||
addChildren(tree, Collections.singletonList(each.element));
|
||||
}
|
||||
}
|
||||
|
||||
private List<T> getTreeChildren(ITreeParentNode<T> parent) {
|
||||
List<T> result = new ArrayList<T>();
|
||||
int childCount = tree.getChildCount(parent);
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
result.add(tree.getChild(parent, i));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void move(T toBeMoved, T destination) {
|
||||
move(toBeMoved, destination, getChildren(destination).size());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
<vbox>
|
||||
<vbox>
|
||||
<hbox valign="pack">
|
||||
<templateFinderPopup id="templateFinderPopupAtTree" acceptButtonLabel="${i18n:_('Create Order Element')}" caption="${i18n:_('Choosing Template')}" />
|
||||
<label value="${i18n:_('New order element name:')}" />
|
||||
<textbox value="" id="newOrderElementName" width="200px" onOK="treeController.addElement(self.parent);"/>
|
||||
<label value="${i18n:_('Hours:')}" />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue