private void createOrCopyCalculationOperationComponent(final EntityTreeNode operationComponent, final Entity calculationOperationComponent, final Entity costCalculation) { DataDefinition sourceDD = operationComponent.getDataDefinition(); for (String fieldName : Arrays.asList("priority", "nodeNumber", L_PRODUCTION_IN_ONE_CYCLE, "nextOperationAfterProducedQuantity", "operationOffSet", "effectiveOperationRealizationTime", "effectiveDateFrom", "effectiveDateTo", "pieceworkCost", "numberOfOperations")) { calculationOperationComponent.setField(fieldName, operationComponent.getField(fieldName)); } calculationOperationComponent.setField(L_OPERATION, operationComponent.getBelongsToField(L_OPERATION)); calculationOperationComponent.setField( "nextOperationAfterProducedType", operationComponent.getField("nextOperationAfterProducedType") == null ? "01all" : operationComponent .getField("nextOperationAfterProducedType")); if (!TechnologiesConstants.MODEL_TECHNOLOGY_OPERATION_COMPONENT.equals(sourceDD.getName())) { LOG.error("incorrect model!"); } calculationOperationComponent.setField(L_TECHNOLOGY_OPERATION_COMPONENT, operationComponent); calculationOperationComponent.setField(L_ENTITY_TYPE, L_OPERATION); List<Entity> newTechnologyInstanceOperationComponents = new ArrayList<>(); for (EntityTreeNode child : operationComponent.getChildren()) { newTechnologyInstanceOperationComponents.add(createCalculationOperationComponent(child, calculationOperationComponent, calculationOperationComponent.getDataDefinition(), costCalculation)); } calculationOperationComponent.setField("children", newTechnologyInstanceOperationComponents); }
private void deleteOperationsTreeIfExists(final Entity costCalculation) { Entity yetAnotherCostCalculation = costCalculation.getDataDefinition().get(costCalculation.getId()); EntityTree existingOperationsTree = yetAnotherCostCalculation.getTreeField(L_CALCULATION_OPERATION_COMPONENTS); if (existingOperationsTree == null || existingOperationsTree.getRoot() == null) { return; } debug("existing calculation operation components tree will be removed.."); EntityTreeNode existingOperationsTreeRoot = existingOperationsTree.getRoot(); existingOperationsTreeRoot.getDataDefinition().delete(existingOperationsTreeRoot.getId()); }
private void updateTechnology(final Entity technology) { String number = technology.getStringField(TechnologyFields.NUMBER); Entity product = technology.getBelongsToField(TechnologyFields.PRODUCT); technology.setField(TechnologyFields.NAME, makeTechnologyName(number, product)); technology.setField(TechnologyFields.TECHNOLOGY_PROTOTYPE, null); technology.setField(TechnologyFields.TECHNOLOGY_TYPE, TechnologyType.WITH_OWN_TECHNOLOGY.getStringValue()); EntityTree operationComponents = technology.getTreeField(TechnologyFields.OPERATION_COMPONENTS); if ((operationComponents != null) && !operationComponents.isEmpty()) { EntityTreeNode root = operationComponents.getRoot(); root.getDataDefinition().delete(root.getId()); } technology.setField(TechnologyFields.OPERATION_COMPONENTS, Lists.newArrayList()); technology.getDataDefinition().save(technology); if (TechnologyStateStringValues.CHECKED.equals(technology.getStringField(TechnologyFields.STATE))) { changeTechnologyState(technology, TechnologyStateStringValues.DRAFT); } }